语法定义
- 自动属性:声明时只需指定类型和名称,自动生成私有字段及默认的get和set访问器。语法格式为
public <类型> <属性名> { get; set; }
。
- 只读属性:只有get访问器,没有set访问器,可通过构造函数或初始化器赋值。语法格式为
public <类型> <属性名> { get; }
(C# 6.0及以后简化写法),在之前版本常通过在构造函数中赋值来实现只读。
赋值方式
- 自动属性:在对象实例化后,可在类内部及外部通过对象.属性名 = 值 的方式赋值。
- 只读属性:在对象实例化时,通过构造函数或属性初始化器赋值,实例化后不能再赋值。
实际应用场景
- 自动属性:适用于需要在程序运行过程中动态修改和读取属性值的场景,如用户信息的修改,一个用户对象的姓名、年龄等属性可能随时会更新。
- 只读属性:适用于属性值在对象创建后不再改变的场景,如订单编号,一旦订单生成,编号通常不会改变。
代码示例
自动属性示例
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main()
{
Person person = new Person();
person.Name = "Alice";
person.Age = 30;
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
}
只读属性示例
class Order
{
public int OrderId { get; }
public Order(int id)
{
OrderId = id;
}
}
class Program
{
static void Main()
{
Order order = new Order(1001);
Console.WriteLine($"OrderId: {order.OrderId}");
}
}