c#对象初始化器、自动实现字段

c#对象初始化器、自动实现字段

对象初始化器

在new对象的时候指定若干个成员为特定的值。
就是语法糖,相当于调用不带形参的构造函数后再挨个赋值。

例一

例二

自动实现字段

public int age { get; set; }
从功能上等价于
private int m_age;
public int age {
get { return m_age; }
set { m_age = value; }
}

也就是一开始的时候,先偷懒,写成
public int age { get; set; }
项目写到某个阶段了, 要求 age 数值必须有效了。 不能年龄小于 0 的.
那么切换成
private int m_age;
public int age {
get { return m_age; }
set {
if( value < 0 ) {
//抛个异常什么的.........
}
m_age = value;
}
}
时间: 2024-07-28 13:16:52

c#对象初始化器、自动实现字段的相关文章

C#3.0之自动属性和对象初始化器

C#3.0中定义属性更加方便,不用再在像之前的版本那样的繁琐,需要先定义存储数据的字段,然后再定义属性器,现在只需要定义属性器就可以了,其它的有编译器自动为我们完成,就可以省去定义字段时需要的那些时间:在对象初始化的时候我们可在对象构造的时候实现对象属性的初始化工作,和集合初始化类似. 1.匿名属性 定义属性如下: public class Employee { public int Id { get; set; } public string Name { get; set; } public

艾伟:C#3.0之自动属性和对象初始化器

C#3.0中定义属性更加方便,不用再在像之前的版本那样的繁琐,需要先定义存储数据的字段,然后再定义属性器,现在只需要定义属性器就可以了,其它的有编译器自动为我们完成,就可以省去定义字段时需要的那些时间:在对象初始化的时候我们可在对象构造的时候实现对象属性的初始化工作,和集合初始化类似. 1.匿名属性 定义属性如下: public class Employee {public int Id { get; set; }public string Name { get; set; }public st

C#3.0对象初始化器和集合初始化器

C# 3.0 中对象初始化器(Object Initializers) 和 集合初始化器(Collection Initializers) ,就是简化我们的代码,让本来几行才能写完的代码一行写完.这样在LINQ的使用中,我们才不会把一个LINQ表达式写的巨复杂无比. 由于我看到几篇讲 对象初始化器(Object Initializers)和集合初始化器(Collection Initializers) 的文章,都是一个简单的例子,一些稍稍特殊一点的场景的初始化赋值并没有涉及,所以我特整理这篇博客

对象初始化器(Object Initializers)

对象初始化器(object initializers) 定义如下类   public class myclass  {    public int x;    public int y;    public myclass()    {    }    public myclass(int a, int b)    {      x = a;      y = b;    }  }对象初始化器object initializers 创建对象的时候可以使用如下语法: myclass mc = ne

C#3.0中自动属性和对象初始化器

C#3.0中定义属性更加方便,不用再在像之前的版本那样的繁琐,需要先定义存储数据的字段,然后再定义属性器,现在只需要定义属性器就可以了,其它的有编译器自动为我们完成,就可以省去定义字段时需要的那些时间:在对象初始化的时候我们可在对象构造的时候实现对象属性的初始化工作,和集合初始化类似. 1.匿名属性 定义属性如下: public class Employee { public int Id { get; set; } public string Name { get; set; } public

Linq之隐式类型、自动属性、初始化器、匿名类

目录 写在前面 系列文章 隐式类型 自动属性 初始化器 匿名类 总结 写在前面 上篇文章是本系列的小插曲,也是在项目中遇到,觉得有必要总结一下,就顺手写在了博客中,也希望能帮到一些朋友.本文将继续介绍linq系列的基础知识,隐式类型,自动属性,初始化器,匿名类的相关概念,这些内容也许与linq相关也许不相关,但还是放一起总结吧,也算是复习了.部分内容通过反编译的方式一探究竟. 系列文章 Linq之Lambda表达式初步认识 Linq之Lambda进阶 隐式类型 先看看Msdn上对隐式类型的简单定

C#3.0语言新特性之对象和集合初始化器

在C#3.0中,一个对象创建表达式可以包含一个对象或集合初始化器,用于初 始化新创建的对象的成员或新创建的集合的元素. 对象创建表达式: new type (argument-list(可选)) 对象或集合初试化器(可选) new type 对象或集合初试化器 一个对象创建表达式可以省略构造器参数列表,并将其连同圆括号一起替换 为一个对象或集合初始化器.省略构造器参数列表并将其连同圆括号一起替换为 一个对象或集合初始化器等价于指定一个空的参数列表. 在执行一个带有对象或集合初始化器的对象创建表达

C# 3.0语言新特性(语言规范):4 对象和集合初始化器

对象|规范|集合 原文:<C# Version 3.0 Specification>,Microsoft翻译:lover_P 一个对象创建表达式可以包含一个对象或集合初始化器,用于初始化新创建的对象的成员或新创建的集合的元素. object-creation-expression:new  type  (  argument-listopt  )  object-or-collection-initializeroptnew  type  object-or-collection-initia

静态初始化器

1.静态初始化器是由static修饰的一对花括号"{}"括起来的语句组.它的作用和构造方法有待你相似,都是用来完成初始化工作的,但是静态初始化器与构造方法有以下几点根本不同.   a.构造方法是对每一个新创建的对象初始化,而静态方法是对类自身进行初始化.   b.构造方法是在new运算符创建新对象的时候由系统执行,而静态初始化器一般不能由程序调用,它是在所属类被加载入内存时由系统调用执行的.   c.用new运算符创建多少个新的对象,构造方法就被调用那个多少次,但是静态初始化器则是在被