对象初始化器的使用方法

1. 什么是对象初始化器?

对象初始化器就是一种在创建对象的同时,直接给属性赋值的写法。不用先 new 一个对象,再一行一行地赋值。

它的作用是用来给对象初始化的

一定存在:必然要执行构造方法

2. 构造方法与对象初始化器有什么区别

image

3. 传统写法 vs 初始化器写法

传统写法(啰嗦):

var person = new Person();
person.Name = "张三";
person.Age = 25;
person.City = "北京";

4. 初始化器写法(简洁):

var person = new Person
{Name = "张三",Age = 25,City = "北京"
};

看出来没?就是把赋值操作直接塞到 new 语句里,用大括号 {} 包起来。

4. 基本规则

  • 属性必须是 public 的(或者有 public 的 set 访问器)
  • 用逗号分隔各个属性赋值
  • 最后一条不用加分号(但加了也不报错)
  • 不需要调用构造函数(当然也可以配合构造函数一起用)

5. 实际例子

简单类

public class Student
{public string Name { get; set; }public int Age { get; set; }public string School { get; set; }
}// 使用初始化器
var student = new Student
{Name = "李四",Age = 20,School = "清华大学"
};

配合构造函数

public class Product
{public Product(string name) // 有参构造函数{Name = name;}public string Name { get; set; }public decimal Price { get; set; }public int Stock { get; set; }
}// 先调用构造函数,再用初始化器
var product = new Product("iPhone")
{Price = 5999,Stock = 100
};

嵌套对象

public class Address
{public string Street { get; set; }public string City { get; set; }
}public class Customer
{public string Name { get; set; }public Address HomeAddress { get; set; }
}// 嵌套初始化
var customer = new Customer
{Name = "王五",HomeAddress = new Address{Street = "中关村大街1号",City = "北京"}
};

集合初始化器(Bonus)

var numbers = new List<int> { 1, 2, 3, 4, 5 };var dictionary = new Dictionary<string, int>
{{ "苹果", 5 },{ "香蕉", 3 },{ "橙子", 8 }
};

6. 注意事项

  • 不能访问私有字段初始化器只能设置 public 属性
  • 执行顺序:先执行构造函数,再执行初始化器中的赋值
  • null 安全:如果属性是引用类型,默认是 null,记得初始化

7. 什么时候用?

  • 创建对象时需要设置多个属性
  • 代码可读性要求高(一眼看出对象的初始状态)
  • 配置对象、测试数据、临时对象等场景

总结

对象初始化器就是个语法糖,让代码更简洁、更直观。记住这个模式:

var obj = new ClassName
{Property1 = value1,Property2 = value2,// ...
};

该用就用,别犹豫!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/916169.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++、Java 和 Python 在输入输出差别

C++、Java 和 Python 在输入输出(I/O)格式上有显著差异,主要体现在语法风格、处理方式和灵活性上。以下从标准输入输出、文件操作两个维度对比三者的差异,并结合示例说明核心特点。 一、标准输入输出(控制台 I/O)…

我的学习记录之自我介绍、思维导图和监督措施

一、关于我: 目前就读于中南林业科技大学涉外学院数据科学与大数据技术专业大三,介绍一下自己,在我之前的学习生活中我一般是班级里小透明的存在,成绩一直处于中等偏上,但是又不调皮捣蛋,所以老师一般不会有特别…

用 Java 和 Tesseract 进行验证码识别:基础实现与优化

验证码(CAPTCHA)是防止自动化攻击的常见手段。然而,在某些场景下,如自动化测试或者爬虫平台,可能需要识别和处理验证码图像。本文将指导你如何使用 Java 和 Tesseract OCR(光学字符识别)库来实现验证码识别,并…

新网站应该怎么做料神wordpress建站教程

A12435 思路&#xff1a;只有4中情况:A1,A2翻转&#xff0c;其他正常&#xff0c;A2A3翻转其他正常.....为了下标与数字对应我开了6个空间&#xff0c;然后从1开始循环&#xff0c;到4截止&#xff0c;因为循环中有i1害怕数组越界&#xff0c;如果索引出的数与下标不相等了&…

教育类网站开发文档上海工程项目查询

仓库建设 luogu 2120 题目大意 有一个斜坡&#xff0c;上面有n个工厂&#xff08;山顶是1&#xff0c;山脚是nnn&#xff0c;工厂都是漏填&#xff09;&#xff0c;上面有pip_ipi​个货物&#xff0c;和工厂1的距离为x1x_1x1​ 现在有一场大雨&#xff0c;你可以在某些工厂处…

网站开发项目工期流程手机版网页

BERT&#xff1a;深度学习领域中的语言理解利器 摘要 BERT&#xff08;双向编码器表示法自转换器&#xff09;是一种领先的深度学习模型&#xff0c;它在许多语言理解任务中都显示出卓越的性能。BERT模型基于转换器编码器架构&#xff0c;并通过自监督学习在大量未标记文本数…

Java第二次实验

1. 本章学习总结 本章学习了Java多方面知识:控制台输入推荐用Scanner.nextLine()避免问题,还涉及 IDE 操作与 String.split;身份证排序用Arrays.sort和String.subString,结构化编程且注意输入方法;需了解 StringB…

详细介绍:【2025PolarCTF秋季个人赛】WEB方向wp

详细介绍:【2025PolarCTF秋季个人赛】WEB方向wppre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", …

英语_阅读

当然可以,以下是英文与中文交替的逐句翻译:Six-year-old Brooke Neitzel wanted a dollhouse. 六岁的布鲁克奈策尔想要一个娃娃屋。 So she ordered one just by telling the familys smart speaker what she wanted…

Nuget安装以及西门子PLC通信

安装S7NetPlus库 ​添加命名空间 ,using S7.Net​创建一个西门子PLC通信对象——成员变量实例化 ,this:表示的是当前对象建立简介 ,对象名.方法名 , this.siemens.Open()​读取变量 , 装箱的一个过程 ,解析变量 ,…

wordpress捐赠按钮如何做网站导航栏的seo优化

2.1.9 调度算法 知识总览 学习各种调度算法的思路 算法思想算法规则这种调度算法是用于作业调度还是进程调度&#xff1f;抢占式或是非抢占式优点和缺点是否会导致饥饿&#xff08;某进程/作业长期得不到服务&#xff09; 2.1.9.1 先来先服务 知识点说明英文名FCFS&#xff0…

网站怎么做成二维码做网站找顺的

二叉树垂直遍历题目描述输入输出示例输入实例输出DFSBFS更简单的方法二叉树垂直遍历题目描述对于一个二叉树&#xff0c;输出它的垂直遍历结果&#xff1b;对于同一列的节点&#xff0c;按照从左向右&#xff0c;从上向下的顺序排列。例如&#xff0c;对于以下二叉树&#xff1…

与狗狗做网站互联网广告价格

创建工程&#xff1a; 2.1.程序的耦合 耦合&#xff1a;耦合指的就是对象之间的依赖关系。对象之间的耦合越高&#xff0c;维护成本越高。 案例&#xff1a;没有引入IOC容器时系统的Web层、业务层、持久层存在耦合 /*** 持久层实现类*/ public class UserDaoImpl implements U…

每日反思(2025_09_24)

今天跟着左神视频学些了快速排序以及逆序对和荷兰国旗问题,了解了双指针三指针递归解决问题,并解决了leetcode第75题颜色分类,正在解决力扣LCR170题。 明天继续跟视频学习,并写涉及到的力扣题,晚上总结这三天的学…

普通用户之间免密互信时因权限问题致使配置失败

[student@master ~]$ ssh-copy-id user1@node1 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/student/.ssh/id_rsa.pub" /usr/bin/ssh-copy-id: INFO: attempting to log in with…

安装Flask库

安装Flask库 1、下载安装python官网下载 python-3.9.10-amd64.exe 安装,勾选Add Python 3.9 to PATH 2、验证安装cmd输入:python --version cmd输入:pip --version 升级pip:python -m pip install --upgrade pip …

《新概念英语》在线朗读,单句点读,随时随地在线学习。

新概念英语-全四册 New Concept English 在线课文点读 在线朗读,单句点读,随时随地在线学习。📕 第一册:《First Things First》 目标:打基础,日常交流入门内容概述:共144课,都是非常短的小对话和故事。 涉及…

深入解析:[p2p-Magnet] docs | HTTP API与Web界面 | 搜索查询引擎

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

南京网站制作学校怎么注册一个网站

戳蓝字“CSDN云计算”关注我们哦&#xff01; 文 | 阿晶、丹丹、王银发于上海华为HC大会现场出品 | CSDN云计算&#xff08;ID&#xff1a;CSDNcloud&#xff09; 科技的不断发展正逐步加速智能世界的到来。一直&#xff0c;华为致力于提供经济且充裕的算力&#xff0c;力图像使…

为什么用MyEclipse做网站ps如何做音乐网站

观察者模式是一种设计模式&#xff0c;其中一个对象&#xff08;称为主题&#xff09;维护一组依赖于它的对象&#xff08;称为观察者&#xff09;&#xff0c;当主题的状态发生变化时&#xff0c;它会通知所有观察者。这种模式常用于实现分布式事件处理系统。 下面是一个简单…