C#属性和索引器

2023-11-03

属性:

C#中类的属性是为了给类中的成员变量提供访问保护的,防止不正确的访问造成程序异常。

通常我们都是将成员变量设置为保护或者私有的,然后使用属性来给成员变量提供访问接口

class A
 {
    private int interval = 0;
    public int Interval
    {
        get { return this.interval; }
        set { interval = value; }
    }
}

其中,属性Interval提供了类成员变量interval的访问接口。

属性的访问属性必须是公有的,否则就失去了其作为访问接口的意义了。

属性根据访问权限可以分为get,get&set,set三种。

有种说法说属性名字必须是其对应的成员变量名的首字母大写,实际测试下来这个说法感觉不正确。


索引器:

索引器类似于属性,但是个人感觉其主要是用来提供对类中的集合类型的成员变量提供访问接口。

例如

class B

 {
    private int [] numlist= new int[100];
    public int this[int i]
    {
        get { return numlist[i]; }
        set { numlist[i] = value; }
    }
}

索引器的返回类型必须和对应的集合类型的数据类型一致才行。

另外,索引器是没有名称的,使用时是直接用类对应的下标访问的

例如

B b = new B();

b[10]=100;

索引器是可以重载的,例如类中如果包含字符串数组成员对象,可以通过不同的索引器去进行操作

class B

 {
    private string[] numlist = new string[100];
    public string this[int i]
    {
        get { return numlist[i]; }
        set { numlist[i] = value; }
    }

    public string this[string  sPattern]
    {
        get 
        { //找到符合sPattern子串的字符串返回
            return "";
        }
    }

}




本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#属性和索引器 的相关文章

  • 编译时运算符

    有人可以列出 C 中可用的所有编译时运算符吗 C 中有两个运算符 无论操作数如何 它们的结果始终可以在编译时确定 它们是sizeof 1 and 2 当然 其他运算符的许多特殊用途可以在编译时解决 例如标准中列出的那些整数常量表达式 1 与
  • 我如何才能等待多个事情

    我正在使用 C 11 和 stl 线程编写一个线程安全队列 WaitAndPop 方法当前如下所示 我希望能够将一些内容传递给 WaitAndPop 来指示调用线程是否已被要求停止 如果 WaitAndPop 等待并返回队列的元素 则应返回
  • “构建”构建我的项目,“构建解决方案”则不构建

    我刚刚开始使用VS2010 我有一个较大的解决方案 已从 VS2008 成功迁移 我已将一个名为 Test 的控制台应用程序项目添加到解决方案中 选择构建 gt 构建解决方案不编译新项目 选择构建 gt 构建测试确实构建了项目 在失败的情况
  • 用于检查类是否具有运算符/成员的 C++ 类型特征[重复]

    这个问题在这里已经有答案了 可能的重复 是否可以编写一个 C 模板来检查函数是否存在 https stackoverflow com questions 257288 is it possible to write a c template
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • 如何使用 ICU 解析汉字数字字符?

    我正在编写一个使用 ICU 来解析由汉字数字字符组成的 Unicode 字符串的函数 并希望返回该字符串的整数值 五 gt 5 三十一 gt 31 五千九百七十二 gt 5972 我将区域设置设置为 Locale getJapan 并使用
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • 华为手机连电脑当摄像头用_怎么用华为手机当电脑摄像头?

    展开全部 1 首先 需要从网站上下载相应的软件 大家可以从百度里面搜索 魅色软件 然后将电脑PC版本和安卓手机版本的软件全部下载 并在电脑上和安卓手机上都安装上这个软件 2 然后打开并运行电脑上的魅色软件 然后与此同时运行安卓手机上的魅色软
  • 多方安全计算简介

    1 多方安全计算背景 多方安全计算的研究主要是针对无可信第三方的情况下 如何安全地计算一个约定函数的问题 多方安全计算是电子选举 门限签名以及电子拍卖等诸多应用得以实施的密码学基础 一个多方安全计算协议 如果对于拥有无限计算能力攻击者而言是
  • redis(error) NOAUTH Authentication required.

    报错原因 没有用密码登陆认证 解决 输入密码即可解决 auth 密码
  • 点云最小外包矩形计算

    1 原理介绍 一簇点云的最小外包矩形 Minimum Bounding Rectangle MBR 是指用一个矩形将该簇点云框起来 所有点云数据在矩形框内 如下图所示为一个矩形框刚好将点云数据全部包围 下面给出一种基于最大重叠度的最小外包矩
  • 录音转文字软件哪个好?这几款分享给你

    嗨朋友们 你是否曾经为了整理会议记录或是处理采访录音而烦恼不已 那些长篇大论的文字内容得一个个敲键盘实在是太耗时了 今天我要给你介绍一些超方便的录音转文字软件 它不仅简化了记录和整理的过程 还提供了更高效的工作方式 能够让你跟繁琐的打字工作
  • Qt 6.2 中 QML 工具有哪些新功能?

    QML 工具是发展最快的领域之一 自 Qt 5 15 以来添加了大量新功能 在这里 我们将展示静态分析和格式化 QML 领域的进展和未来计划 Qt开发主流库 Qtitan组件集 QtitanRibbon 下载试用 遵循Microsoft R
  • IOC源码刨析

    前言 Spring框架两大核心 IOC和AOP IOC 控制反转 把对象的创建 属性设置 初始化 销毁等工作交给Spirng的IOC容器去管理 解放程序员的劳动力 对象被注册到Spring的IOC容器中 使用的时候从容器中获取即可 非常方便
  • Hadoop生态圈集群部署(完整版)

    软件 版本 Mysql 5 7 Java 1 8 0 241 Hadoop 3 3 0 Zookeeper 3 4 6 Hive 3 1 2 Flink 1 14 5 Hudi 0 11 1 Doris 1 1 0 Dinky 0 6 6
  • 七天玩转Redis

    1 string类型 设定指定的key值 语法格式 set key value key为键 value为值 127 0 0 1 6379 6 gt set k1 v1 OK 获取指定key的值 get key 127 0 0 1 6379
  • k8s容器 pod OOM, exit code:137

    某天查看线上服务 发现有个服务平均每天重启一次 通过k8s descripe pod podName 命令发现exit code 137 reason OOM Killed 提示比较明显OOM 当时查了失败的容器内服务日志 发现没有异常信息
  • R语言中常用的生物多样性指数的计算(Alpha,Beta,Gamma,功能多样性,系统发育多样性)

    文章目录 Alpha 多样性指数 Beta多样性指数 Hill的Beta多样性指数和Gamma多样性指数 基于距离和方差分解的Beta多样性指数 功能多样性 系统发育多样性 Alpha 多样性指数 常见的Alpha多样性指数的含义见http
  • ChromeDriver与Chrome版本的对应关系

    ChromeDriver v2 15 2015 03 26 Supports Chrome v40 43 ChromeDriver v2 14 2015 01 28 Supports Chrome v39 42 Resolved issue
  • 哪些方法可以判断出一个有向图是否有环

    使用深度优先遍历 若从有向图上的某个顶点u出发 在 DFS u 结束之前出现一条从顶点v到u的边 由于v在生成树上是u的子孙 则图中必定存在包含u和v的环 因此深度优先遍历可以检测一个有向图是否有环 拓扑排序时 当某顶点不为任何边的头时才能
  • 无刷电机Foc控制

    foc控制简介 一 知识点简介 什么是foc FOC Field Oriented Control 直译是磁场定向控制 也被称作矢量控制 VC Vector Control 是目前无刷直流电机 BLDC 和永磁同步电机 PMSM 高效控制的
  • osmdroid地图

    1 简介 osmdroid是一个开源的地图填充器 全称是 open street map 至于droid我个人认为应该是安卓版的后缀吧 在网络上找了很多资料 大多是加载在线地图的 加载离线地图的很少 所以把代码记录一下 2 初始化 1 在布
  • Nodejs学习路线图

    转自 http www open open com lib view open1403574545233 html 前言 用Nodejs已经1年有余 陆陆续续写了48篇关于Nodejs的博客文章 用过的包有上百个 和所有人一样 我也从Web
  • python代码有1,2,3,4四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少

    count 0 for i in 1 2 3 4 for j in 1 2 3 4 for k in 1 2 3 4 if i j and j k and i k count 1 print f i j k end print f 一共有
  • c++字符前面的L和_T

    c 字符前面的L和 T 字符串前面加L表示该字符串是Unicode字符串 T是一个宏 如果项目使用了Unicode字符集 定义了UNICODE宏 则自动在字符串前面加上L 否则字符串不变 因此 Visual C 里边定义字符串的时候 用 T
  • virsh console退出 KVM查看、启动、连接、关闭、删除

    1 查看运行的虚拟机 virsh list 查看所有的虚拟机 关闭和运行的 不包括摧毁的 virsh list all 2 启动虚拟机 virsh start 虚拟机名称 虚拟机随物理机启动而启动 virsh autostart 虚拟机名称
  • C#属性和索引器

    属性 C 中类的属性是为了给类中的成员变量提供访问保护的 防止不正确的访问造成程序异常 通常我们都是将成员变量设置为保护或者私有的 然后使用属性来给成员变量提供访问接口 即 class A private int interval 0 pu