首页 > 编程语言 >C#——属性init访问器方法

C#——属性init访问器方法

时间:2024-09-19 17:03:06浏览次数:9  
标签:string get C# yearOfBirth private init public 属性

init关键字:

1.init在属性或索引器中定义访问器方法

2.仅在对象构造期间为属性或索引器元素赋值

3.init强制实施不可变性(对象一旦初始化,将无法更改)

4.如下同时定义get和init访问器

class Person_InitExample
{
     private int _yearOfBirth;

     public int YearOfBirth
     {
         get { return _yearOfBirth; }
         init { _yearOfBirth = value; }
     }
}
var john = new Person_InitExample
{
    YearOfBirth = 1984
};

john.YearOfBirth = 1926; //不起作用,init关键字只允许在初始化对象过程中指定值

5.init访问器不强制调用方法设置属性(允许调用方使用对象初始化设定项,同时禁止以后的修改)

class Person_InitExampleNullability
{
    private int? _yearOfBirth;
    //定义一个以可为空的值类型作为支持字段的仅init属性
    public int? YearOfBirth
    {
        get => _yearOfBirth;
        init => _yearOfBirth = value;
    }
}

6.若要强制调用方设置初始化非null值,添加required修饰符

//强制调用方设置初始非 null 值,可添加 required 修饰符
class Person_InitExampleNonNull
{
    private int _yearOfBirth;

    public required int YearOfBirth
    {
        get => _yearOfBirth;
        init => _yearOfBirth = value;
    }
}

7.init访问器用作表达式主题成员

class Person_InitExampleExpressionBodied
{
    private int _yearOfBirth;

    public int YearOfBirth
    {
        get => _yearOfBirth;
        init => _yearOfBirth = value;
    }
}

8.init访问器在自动实现的属性中使用

class Person_InitExampleAutoProperty
{
    public int YearOfBirth { get; init; }
}

9.private set属性  只读 属性和init属性区别

private set 版本和 read only 版本都需要调用方使用添加的构造函数来设置 name 属性。 通过 private set 版本,人员可在构造实例后更改其名称。 init 版本不需要构造函数。 调用方可使用对象初始值设定项初始化属性:

class PersonPrivateSet
{
    public string FirstName { get; private set; }
    public string LastName { get; private set; }
    public PersonPrivateSet(string first, string last) => (FirstName, LastName) = (first, last);

    public void ChangeName(string first, string last) => (FirstName, LastName) = (first, last);
}

class PersonReadOnly
{
    public string FirstName { get; }
    public string LastName { get; }
    public PersonReadOnly(string first, string last) => (FirstName, LastName) = (first, last);
}

class PersonInit
{
    public string FirstName { get; init; }
    public string LastName { get; init; }
}


PersonPrivateSet personPrivateSet = new("Bill", "Gates");
PersonReadOnly personReadOnly = new("Bill", "Gates");
PersonInit personInit = new() { FirstName = "Bill", LastName = "Gates" };

 

标签:string,get,C#,yearOfBirth,private,init,public,属性
From: https://www.cnblogs.com/echo-efun/p/18420895

相关文章

  • linux使用yum命令报错Cannot find a valid baseurl for repo: base/7/x86_64
    【问题】在VMware上安装搭建centOS7虚拟机,配置好网络后,尝试通过yum命令进行安装docker容器。执行命令报错:已加载插件:fastestmirror,langpacksLoadingmirrorspeedsfromcachedhostfileCouldnotretrievemirrorlisthttp://mirrorlist.centos.org/?release=7&arch=x86_......
  • GBase 8s数据库连接 – Perl(DBD::ODBC)
    软件需求:1,GBase8sCSDK2,perl-5.16.3及perl-devel-5.16.33,unixODBC-2.3.14,DBD-ODBC-1.60###1,系统环境确认####1.1perl、perl-devel及unixODBC版本Linux下root用户通过rpm确认perl、perl-devel,unixODBC、unixODBC-devel均已经安装,如下:[root@rhel7u6~]#rpm-qaperlperl......
  • Spring Cloud 7.1: 会话保持
    会话保持是微服务绕不开的一个话题。在springcloud中采用redis保存session信息的方式来保持会话。接下来我们在前面工程的基础上配置一下redis,实现会话保持。首先看一下保持不了的会话是什么样。在service1和service2中分别新建会话模块,创建ConversationControllerservice1 Conve......
  • PC XMind v24 激活版安装教程 (全球领先的商业思维导图软件)
    安装步骤下载地址:XMind2024-v24.01.14362-x64-Repack.zip1、解压后点击Xmind.exe,会弹出此框,点击确定2、将Xmind.exe发送到桌面快捷方式3、启动桌面快捷图标4、点击【继续】5、取消自动发送日志勾选框,点击同意6、最后会联网,提示连接网络失败,点击关闭就行,再次打开之后会......
  • 阅信云CTO向永清:35岁不应该成为技术职业发展的瓶颈|OceanBase 《DB大咖说》
    本期嘉宾:向永清,2010年进入中国空间技术研究院总体部工作。他从DBA起步,不断成长,后来出来创业,现为阅信云CTO,负责阅信云产品研发和团队管理工作,成为公司的技术领军人物及数字化转型领域的专家。在向永清先生的职业生涯中,始终怀揣着对技术的好奇与热情,他所展现的技术情怀与使命感,为......
  • 国内可以使用的ChatGPT镜像网站【9月持续更新】
    首先基础知识还是要介绍得~一、模型知识:GPT-4o:最新的版本模型,支持视觉等多模态,OpenAI文档中已经更新了GPT-4o的介绍:128k上下文,训练截止2023年10月(作为对比,GPT-4-Turbo截止2023年12月)。GPT-4Turbo:支持视觉等多模态,128k上下文,训练截止2023年12月。GPT-3.5......
  • easyExcel导出大数据量EXCEL文件,前端实现进度条
    需求:页面点击导出,先按照页面条件去数据库查询,然后将查询到的数据导出。问题:由于查询特别耗时,所以点击之后页面会看上去没有反应,就在点击之后在页面增加了一个进度条,等待后盾查询结束之后,导出时,进度条会显示导出进度,导出结束之后进度条会消失。效果如下:注意点:后端需要在响应......
  • 2024Mysql And Redis基础与进阶操作系列(5)作者——LJS[含MySQL DQL基本查询:select;简单
    目录1MySQL数据库基本操作-DQL-基本查询1.2SQL概述1.3SQL类2.SQL语言的规则与规范2.1基本规则2.2SQL大小写规范推荐采用统一的书写规范:2.3注释2.4命名规则(了解即可)举例:两句是一样的,不区分大小写创建表格order使用``飘号,因为order和系统关键字或系统函数名......
  • LLMChat入门指南 - 基于Flutter和FastAPI的大语言模型聊天应用
    LLMChat-您的AI聊天助手......
  • dicom属性对照
    通过读取dicom影像的某些属性可以进行查询和筛选。importpydicomds=pydicom.dcmread('图像路径')1、序列分类描述ds.SeriesDescription可以找到指定序列的图像,如T1WI(T1加权)、T2WI(T2加权)、DWI(弥散加权)、C-pre(平扫)、C+A(动脉期)、C+V(静脉期)、C+Delay(增强延迟期)、InPhase(同......