上一篇: C# 反射(Reflection)
下一篇: C# 索引器(Indexer)
C# 属性(Property)
在本教程中,我们将学习C#属性(Property)的基本概念及其应用。
- 属性简介
- 定义属性
- 自动生成属性
- 索引器属性
- 表达式属性
属性简介
属性(Property)是一种访问类或结构体成员变量的特殊方法,用于封装该成员变量的访问逻辑。使用属性可以提供更好的封装和数据验证,并隐藏内部实现细节。
定义属性
属性由 get
和 set
访问器组成,用于读取和写入成员变量。以下代码演示了如何定义一个简单的属性:
public class MyClass { private int _myField; public int MyProperty { get { return _myField; } set { _myField = value; } } }
在这个例子中,MyProperty
属性用于访问私有字段 _myField
。可以为 get
和
set
访问器设置不同的访问级别。例如,如果想创建一个只读属性,只需省略 set
访问器:
public int MyReadOnlyProperty { get { return _myField; } }
自动生成属性
自动生成属性(Auto-Implemented Property)是C#提供的一种简化属性定义的方式。在这种情况下,不需要显式声明私有字段,编译器会自动为您生成一个。
public int MyProperty { get; set; }
也可以为自动生成属性设置访问级别:
public int MyReadOnlyProperty { get; private set; }
索引器属性
索引器属性允许您使用数组索引语法访问对象。要定义索引器属性,请使用 this
关键字并提供一个索引参数。
public class MyClass { private int[] _myArray = new int[10]; public int this[int index] { get { return _myArray[index]; } set { _myArray[index] = value; } } }
使用示例:
MyClass obj = new MyClass(); obj[0] = 42; Console.WriteLine(obj[0]); // 输出 "42"
表达式属性
表达式属性是C# 6.0中引入的一种简化属性定义的方式。它们只能具有 get
访问器,并使用箭头函数(=>
)直接返回一个值。
public class MyClass { public int MyField { get; set; } public int MyExpressionProperty => MyField * 2; }
本教程简要介绍了C#属性的基本概念及其应用。通过学习和实践,您将更好地理解并掌握C#属性的使用方法。属性是面向对象编程中的一种强大工具,可以提高代码的封装性和可维护性。