Parameters 是 Property 类型的 Par。它有一个access modifier (public),这意味着它可以从代码中的任何位置访问。
您的示例有点多余,因为 mParams field 实际上是可公开访问的,并且公开它的属性除了返回和设置字段之外没有任何作用。但是,您可能会在每个“访问器”(get 和 set 位)中添加额外的代码。例如进行验证、通知某个属性已更改等。
您使用属性的方式与使用字段的方式非常相似:
A foo = new A();
// Calls the "get" accessor of the Parameters property
if (foo.Parameters == null)
{
// Calls the "set" accessor of the Parameters property
foo.Parameters = new Par();
}
不允许从类外部直接访问成员字段(变量)被认为是最佳实践。因此,在典型情况下,该字段应该是私有的(或有时是受保护的):
private Par mParams;
public Par Parameters
{
get { return mParams; }
set { mParams = value; }
}
您还想了解一些略有不同的语法。首先是auto-implemented property:
public Par Parameters
{
get;
set;
}
对于自动实现的属性,C# 编译器会自动为您生成一个支持字段。如果我们的属性 getter 和 setter 不需要包含任何逻辑,这可以避免您编写一些代码。
您还可以使用属性来限制访问,以通过字段无法实现的方式:
public Par Parameters
{
get;
private set;
}
注意set "accessor" 有它自己的访问修饰符。结果是一个公开可读的属性,但只允许类本身设置它。这类似于:
private Par mParams;
public Par Parameters
{
get { return mParams; }
}
这实际上做同样的事情,但没有自动实现的属性。
在不支持属性的语言中,所有这些都可以通过创建两个methods:GetParameters 和SetParameters 来实现。事实上,C# 编译器会在后台生成一些名称非常相似的方法。