我正在使用开源项目。在这个项目中有功能。
public virtual ICollection<Customer> AffiliatedCustomers
{
get
{
return _affiliatedCustomers ?? (_affiliatedCustomers = new List<Customer>());
}
protected set { _affiliatedCustomers = value; }
}
我不明白“get”是什么意思。 你能解释一下这个功能吗?
答案 0 :(得分:8)
AffiliatedCustomers
是属性。
get
定义属性getter,它是内部用于通过属性返回值的方法。它允许你使用这个给定类的实例,如:
var customers = theClass.AffiliatedCustomers; // Looks like a field, but is a property
属性也可以有一个set
部分,就像这个部分一样(protected set { _affiliatedCustomers = value; }
),它可以控制通过Property设置值时会发生什么。
有关详细信息,请参阅Properties in C#。
答案 1 :(得分:2)
这不是一个功能。这是一个属性。对于某些变量,属性基本上是一个花哨的包装器。例如,声明以下属性:
public string SomeProperty { get; set; }
实际上会编译成这样的东西:
private string backing_SomeProperty;
public void set_SomeProperty(string value)
{
backing_SomeProperty = value;
}
public int get_SomeProperty()
{
return backing_SomeProperty;
}
这是自动属性的示例。当然,您也可以自己定义getter和setter方法:
public string SomeProperty
{
get
{
// some logic code here
// then return some value
}
set
{
// some logic code here
// then set some value
}
}
答案 2 :(得分:0)
这是一个属性, 引自msdn:
属性是提供灵活机制来读取,写入或计算私有字段值的成员。可以使用属性,就像它们是公共数据成员一样,但它们实际上是称为访问器的特殊方法。这样可以轻松访问数据,同时仍然提供方法的安全性和灵活性。
请参阅此链接了解更多信息: http://msdn.microsoft.com/en-us/library/x9fsa0sw(v=vs.80).aspx
答案 3 :(得分:0)
属性有一个getter和一个setter - 它们的目的很明显(获取和设置属性的值)。
使用自动属性时,仍有get
和set
,但后备变量会自动为您实现。在示例中,您已经让代码的作者选择了自己的get
实现 - 在这种情况下,在第一次访问属性时自动初始化成员变量。