标签:
8.1 自动实现的属性
公开可见的静态成员通常应该是线程安全的,编译器在这方面帮不上什么忙,得自己去实现
public class InstanceCountingPerson { public string Name { get; private set; } public int Age { get; private set; } private static int InstanceCounter { get; set; } private static readonly object counterLock = new object(); public InstanceCountingPerson(string name, int age) { Name = name; Age = age; lock (counterLock) { InstanceCounter++; } } }
作者见过的使用静态自动属性的唯一情况是,取值方法是公共的,赋值方法是私有的,并且赋值方法只能在类型初始化程序中使用。
(以下代码无法通过编译)
public struct Foo { public int Value { get; private set; } public Foo(int value) { this.Value = value; } }
只有加上this 才可以
public struct Foo { public int Value { get; private set; } public Foo(int value) :this() { this.Value = value; } }
8.2 隐式类型的局部变量
8.2.1 用var声明局部变量
8.2.2 隐式类型的限制
8.2.3 隐式类型的优缺点
8.2.4 建议
8.3 简化的初始化
8.3.1定义示例类型
public class Person { public int Age { get; set; } public string Name { get; set; } List<Person> friends = new List<Person>(); public List<Person> Friends { get { return friends; } } Location home = new Location(); public Location Home { get { return home; } } public Person() { } public Person(string name) { Name = name; } } public class Location { public string Country { get; set; } public string Town { get; set; } }
8.3.2 设置简单属性
C#3.0可以用一个表达式来设置对象的所有属性
8.3.3 为嵌入对象设置属性
8.3.4 集合初始化程序
标签:
原文地址:http://www.cnblogs.com/leonhart/p/4748732.html