publicclassCoordinate { publicint X { get; set; } = 34; // 可读写自动属性并带有初始值 publicint Y { get; } = 89; // 只读自动属性并带有初始值 publicint Z { get; } // 只读自动属性,无初始值,需在构造函数中初始化 publicCoordinate() // 构造函数 { Z = 42; } }
还可以使用表达式体语法定义只读属性:
1
publicint ReadOnlyProp => 2;
C# 9.0
C# 9.0增加了对init关键字的支持,这是一种非常有用且复杂的声明只读自动属性的方式:
1 2 3 4 5 6 7 8 9 10 11
classPerson { publicstring Name { get; init; } = "Anonymous user"; } // 使用示例 var anonymous = new Person(); Console.WriteLine($"Hello, {anonymous.Name}!"); var me = new Person { Name = "@codez0mb1e"}; Console.WriteLine($"Hello, {me.Name}!"); // 以下代码会编译错误,因为init-only属性只能在对象初始化器中赋值 // me.Name = "My fake";