C#中的构造方法与对象初始化器
文章目录
- 1 C#中的构造方法
- 1.1 默认的无参构造方法
- 1.2 自定义的无参构造方法
- 1.3 自定义的有参数的构造函数
- 2 对象初始化器
- 2.1 对象初始化器的使用
- 3 构造方法和初始化器的对比
- 3.1 构造方法的总结
- 3.2 构造方法和对象初始化器的对比
C#中的方法类型主要有如下几种:
- 实例方法
- 静态方法
- 抽象方法、虚方法
- 构造方法(对象创建的时候使用)
这里首先看下构造方法。
1 C#中的构造方法
构造方法有什么作用?
因为构造方法是在对象创建的时候被调用的,所以,我们在创建对象的时候可以完成一些初始化的任务。初始化:包括给对象的属性赋值,或从其他对象、文本等获取基础数据。
1.1 默认的无参构造方法
一个类中,如果没有显式的写出任何构造方法,编译器会默认生成一个无参数的构造方法!
1.2 自定义的无参构造方法
public class Course
{/// <summary>/// 无参数构造方法/// </summary>public Course(){CourseId = 10001;CourseName = "....";Type = "...";//在这里还可以编写读取相关文件或者从其他数据源读取的方法或逻辑...}public int CourseId { get; set; }public string CourseName { get; set; }public string Type { get; set; }
}
自定义的无参构造方法通常是用来直接初始化对象的属性或“某些不变的数据”。
1.3 自定义的有参数的构造函数
有参数的构造方法:让对象创建者,自己传递要初始化的相关数据。
public class Course
{/// <summary>/// 无参数构造方法/// </summary>public Course(){CourseId = 10001;CourseName = "....";Type = "...";//在这里还可以编写读取相关文件或者从其他数据源读取的方法或逻辑...}public Course(int courseId, string courseName){this.CourseId = courseId;this.CourseName = courseName;//成员变量和局部变量同名的时候,一般是就近原则取变量//如果我们需要舍近求远,则必须添加this}public Course(int courseId, string courseName, string type): this(courseId, courseName){this.Type = type;}public int CourseId { get; set; }public string CourseName { get; set; }public string Type { get; set; }
}
注意如何调用已经定义的构造方法!
2 对象初始化器
2.1 对象初始化器的使用
对象初始化器从C#3.0时代开始引入,主要作用是更加灵活的初始化对象的“属性”。
3 构造方法和初始化器的对比
3.1 构造方法的总结
构造方法:
- 存在的必要性:一个类中,至少要有一个构造方法。(可以是无参数的,也可以是有参数的)
- 调用的特殊性:只能在对象创建的时候,通过new关键字调用。
- 使用的强制性:对象的创建,必须调用指定的构造方法,也就是参数必须统一。
- 语法的特殊性:不能有返回值、构造方法名称必须和类名一样!
3.2 构造方法和对象初始化器的对比
相同点:
- 都可以完成对象“属性”初始化
不同点:
- 有无强制性:构造方法有强制性,对象初始化器没有强制性,随意使用。
- 使用的范围:对象初始化器只能完成属性初始化,而构造方法可以完成任何我们需要的初始化任务。
- 使用的位置:对象初始化器在创建对象的时候使用,而构造方法必须提前写在类中。
- 出现的时间:构造方法在.NET1.0版本就有,而对象初始化器只能在.NET3.0以上版本才能使用。
参考资料:
- .NET/C#工控上位机VIP系统学习班【喜科堂互联教育】
C#中的构造方法与对象初始化器相关推荐
- 第七节:语法总结(1)(自动属性、out参数、对象初始化器、var和dynamic等)
一. 语法糖简介 语法糖也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方 ...
- java构造方法时对象初始化,实例化,参数赋值
文章目录 绪论: 绪论: 构造方法时进行对象初始化,以及对象实例化,参数传值是我们这片文章主要要 介绍的东西. 接下来我们就开始讲解一下具体过程: 1.首先我们建一个学生类Student.我们规定这个 ...
- lambda 对象初始化器 集合初始化器
- .NET 中创建支持集合初始化器的类型
对象初始化器和集合初始化器只是语法糖,但是能让你的代码看起来更加清晰.至少能让对象初始化的代码和其他业务执行的代码分开,可读性会好一些. 本文将编写一个类型,可以使用集合初始化器构造这个类型.不只是添 ...
- dotNet中初始化器的使用
dotNet中初始化器的使用 2013年12月7日 13:27 有两类初始化器: 对象初始化器和集合初始化器 比如现在有一个User类: Public class User { public in ...
- 微软免费图书《Introducing Microsoft LINQ》翻译Chapter2.1:C# 3.0 特性(对象初始化表达式\匿名类型\查询表达式)...
本书翻译目的为个人学习和知识共享,其版权属原作者所有,如有侵权,请告知本人,本人将立即对发帖采取处理. 允许转载,但转载时请注明本版权声明信息,禁止用于商业用途! 博客园:韩现龙 Introducin ...
- Linq之隐式类型、自动属性、初始化器、匿名类
目录 写在前面 系列文章 隐式类型 自动属性 初始化器 匿名类 总结 写在前面 上篇文章是本系列的小插曲,也是在项目中遇到,觉得有必要总结一下,就顺手写在了博客中,也希望能帮到一些朋友.本文将继续介绍 ...
- Java对象初始化详解
在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的.本文试图对Java如何执行对象的初始化做一个详细深入地介绍(与对象初始化相同,类在被加载之后也是需要初始化的,本 ...
- C#笔记13 匿名类型、集合初始化器、扩展方法和查询表达式
文章目录 匿名类型 new{...}和隐式类型var 集合初始化器和对象初始化器 扩展方法 案例引出扩展方法的意义 扩展方法的使用 做Enumerable的扩展方法 扩展方法使用 标准查询运算符 Li ...
最新文章
- 一个困扰数学家30多年的分类问题,终于被解决了!
- Unity* 实体组件系统 (ECS)、C# 作业系统和突发编译器入门
- DOM的事件函数this和className等样式注意点
- 2020年李永乐线性代数强化笔记-向量
- 教你用Python提取Chrome浏览器保存的密码
- python模块--BeautifulSoup4 和 lxml
- 适配移动端的文字超出隐藏并添加省略号
- 深入解读:获Forrester大数据能力高评价的阿里云DataWorks思路与能力
- Emlog使用qq头像作为评论头像
- (转)C# Color类图示
- bpm js 计算 音乐_构建Node.js和Arduino执行控制
- 小米4 android6.01的开发者模式开启方法
- mysql 不等于 符号写法
- 如何将word文件的大小进行压缩?
- python笔记(web前端 CSS)
- SLAM之回环检测与优化
- Zabbix官方文档以及日常运维
- wordpress博客添加微博、微信分享等等
- 【便签1】-win10显示/隐藏任务栏时间
- 浅谈数据中心综合布线运维管理方式发展史
热门文章
- 0.0 环境搭建 - PyTorch学习笔记
- container_of(ptr, type, member)宏定义解析
- 如何将ISE的库和vivado的库都加入modelsim.ini
- Vivado篇(一)Notepad++编写的Verilog文件导入Vivado,中文注释乱码问题
- Class.getResourceAsStream和ClassLoader.getResourceAsStream方法
- ORACLE 11G RAC ASM磁盘全部丢失后的恢复
- 《走进SAP(第2版)》——2.5 SAP NetWeaver简介
- VMware vSphere Client安装Centos7
- 擷取Registry內的螢幕EDID資訊(沒解決問題不過可以學下)
- Acwing756. 蛇形矩阵:模拟