1

可能重复:
在 C# 中,这段带有“get”的代码是什么意思?

我正在使用开源项目。在这个项目中有功能。

public virtual ICollection<Customer> AffiliatedCustomers 
{
    get
    {
         return _affiliatedCustomers ?? (_affiliatedCustomers = new List<Customer>()); 
    }
    protected set { _affiliatedCustomers = value; }
 }

我不明白“得到”是什么意思。你能解释一下这个功能吗?

4

4 回答 4

8

AffiliatedCustomers是一个属性

定义了属性getter,这是一种在get内部使用的方法,用于通过属性返回值。它允许您在给定类的实例的情况下使用它,如下所示:

var customers = theClass.AffiliatedCustomers; // Looks like a field, but is a property

属性也可以有一个set部分,就像这个 ( protected set { _affiliatedCustomers = value; }) 一样,它使您可以控制通过属性设置值时发生的情况。

有关详细信息,请参阅C# 中的属性

于 2012-10-02T23:31:19.637 回答
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
    }
}
于 2012-10-02T23:35:10.007 回答
0

这是一个属性,由 msdn 引用:

属性是提供灵活机制来读取、写入或计算私有字段值的成员。属性可以像公共数据成员一样使用,但它们实际上是称为访问器的特殊方法。这使得数据可以轻松访问,同时仍然提供方法的安全性和灵活性。

请参阅此链接了解更多信息:http: //msdn.microsoft.com/en-us/library/x9fsa0sw (v=vs.80).aspx

于 2012-10-02T23:32:24.563 回答
0

属性有一个 getter 和一个 setter——它们的目的很明显(获取和设置属性的值)。

当您使用自动属性时,仍然存在 aget和 a set,但是会自动为您实现支持变量。在您给出的示例中,代码的作者选择了拥有自己的实现get- 在这种情况下,在第一次访问属性时自动初始化成员变量。

于 2012-10-02T23:32:33.127 回答