当前位置: 首页 > 编程笔记 >

C#自动实现的属性

萧晔
2023-03-14
本文向大家介绍C#自动实现的属性,包括了C#自动实现的属性的使用技巧和注意事项,需要的朋友参考一下

示例

自动实现的属性在C#3中引入。
自动实现的属性用空的getter和setter(访问器)声明:

public bool IsValid { get; set; }

当在代码中写入自动实现的属性时,编译器会创建一个私有的匿名字段,该字段只能通过属性的访问器进行访问。

上面的自动实现的属性语句等效于编写以下冗长的代码:

private bool _isValid;
public bool IsValid
{
    get { return _isValid; }
    set { _isValid = value; }
}

自动实现的属性的访问器中不能包含任何逻辑,例如:

public bool IsValid { get; set { PropertyChanged("IsValid"); } } // 无效的代码

但是,自动实现的属性对其访问器可以具有不同的访问修饰符:

public bool IsValid { get; private set; }

C#6允许自动实现的属性根本没有设置器(使其不可变,因为它的值只能在构造函数中设置或进行硬编码):

public bool IsValid { get; }    
public bool IsValid { get; } = true;

有关初始化自动实现的属性的更多信息,请阅读自动属性初始化程序文档。

 类似资料:
  • 本文向大家介绍c# 实现自动扫雷,包括了c# 实现自动扫雷的使用技巧和注意事项,需要的朋友参考一下     年前无意看到一个用Python写的小桌面程序,可以自动玩扫雷的游戏,觉得挺有意思,决定用C#也做一个。【真实情况是:我知道Python最近比较火,非常适合搞爬虫、大数据、机器学习之类的,但现在连桌面程序都用Python做了吗?还给不给.NET程序员活路了?简直不能忍!】    春节期间正好有

  • 问题内容: 我需要反序列化一些JSON表示的JavaScript对象为适当的C#类。鉴于自动属性的出色功能,我宁愿将它们放在这些类中,而不是仅包含字段。不幸的是,.NET序列化引擎(至少默认情况下)完全忽略了反序列化的自动属性,而只关心背景字段,而该字段显然不在JavaScript对象中。 鉴于没有标准的方法来命名后备字段并且说实话,我什至不想使用“让我们创建一个看起来像具有C#后备字段的Java

  • 本文向大家介绍C#动态对象(dynamic)详解(实现方法和属性的动态),包括了C#动态对象(dynamic)详解(实现方法和属性的动态)的使用技巧和注意事项,需要的朋友参考一下 C#的动态对象的属性实现比较简单,如果要实现动态语言那种动态方法就比较困难,因为对于dynamic对象,扩展方法,匿名方法都是不能用直接的,这里还是利用对象和委托来模拟这种动态方法的实现,看起来有点javascript的

  • 本文向大家介绍c# Winform 程序自动更新实现方法,包括了c# Winform 程序自动更新实现方法的使用技巧和注意事项,需要的朋友参考一下 Winform程序自动更新我也是第一次做,网上找了自动更新的源码,后来又根据在网上看到的一些方法,自己试了很久,最终还是有写错误,所以花了钱让别人帮忙调试成功的,下面是我自己捣腾出来的,方便大家借鉴,如果有什么错误的地方欢迎指正. 1、由于我是通过服务

  • 本文向大家介绍通过C#实现自动售货机接口,包括了通过C#实现自动售货机接口的使用技巧和注意事项,需要的朋友参考一下 下面分几部分介绍C#实现自动售货机接口的方法,代码写的非常详细,不懂的地方有注释可以参考下。 MachineJP类: 第1部分:串口初始化,串口数据读写 第2部分:接收串口数据,并响应货机,向货机发送数据     第3部分:货机状态、投币、出货等接口 ReceiveDataColle

  • 本文向大家介绍C语言实现程序开机自启动,包括了C语言实现程序开机自启动的使用技巧和注意事项,需要的朋友参考一下 程序比较简单,用到了C语言获得自身路径和系统路径,修改注册表项等,某些函数不理解可以查看MSDN