C# “是什么意思?”;得到“;?
可能重复:C# “是什么意思?”;得到“;?,c#,properties,C#,Properties,可能重复: 我正在使用开源项目。在这个项目中有一个功能 public virtual ICollection<Customer> AffiliatedCustomers { get { return _affiliatedCustomers ?? (_affiliatedCustomers = new List<Customer>()); } protected set { _affiliatedCustomers
我正在使用开源项目。在这个项目中有一个功能
public virtual ICollection<Customer> AffiliatedCustomers
{
get
{
return _affiliatedCustomers ?? (_affiliatedCustomers = new List<Customer>());
}
protected set { _affiliatedCustomers = value; }
}
公共虚拟ICollection附属客户
{
得到
{
返回_affiliatedCustomers???(_affiliatedCustomers=新列表());
}
受保护集{u affiliatedCustomers=value;}
}
我不明白“得到”是什么意思。
您能解释一下这个功能吗。
附属客户
是一种财产
public virtual ICollection<Customer> AffiliatedCustomers
{
get
{
return _affiliatedCustomers ?? (_affiliatedCustomers = new List<Customer>());
}
protected set { _affiliatedCustomers = value; }
}
get
定义了属性getter,它是一个在内部用于返回属性值的方法。它允许您在给定的类实例中使用此函数,如下所示:
var customers = theClass.AffiliatedCustomers; // Looks like a field, but is a property
属性也可以有一个set
部分,就像这个部分一样(protectedset{{u affiliatedCustomers=value;}
),它让您可以控制通过属性设置值时发生的情况
有关详细信息,请参阅。
附属客户
是一个属性
get
定义了属性getter,它是一个在内部用于返回属性值的方法。它允许您在给定的类实例中使用此函数,如下所示:
var customers = theClass.AffiliatedCustomers; // Looks like a field, but is a property
属性也可以有一个set
部分,就像这个部分一样(protectedset{{u affiliatedCustomers=value;}
),它让您可以控制通过属性设置值时发生的情况
有关详细信息,请参见。这是一个属性,
msdn引用:
属性是提供灵活机制来读取、写入或计算私有字段值的成员。属性可以像公共数据成员一样使用,但实际上它们是称为访问器的特殊方法。这使得数据可以轻松访问,同时还提供了方法的安全性和灵活性
有关更多信息,请参阅此链接:
这是一项财产,
msdn引用:
属性是提供灵活机制来读取、写入或计算私有字段值的成员。属性可以像公共数据成员一样使用,但实际上它们是称为访问器的特殊方法。这使得数据可以轻松访问,同时还提供了方法的安全性和灵活性
有关更多信息,请参阅此链接:
属性有一个getter和setter——它们的目的是显而易见的(获取和设置属性的值)
使用自动属性时,仍然有一个
get
和一个set
,但支持变量会自动为您实现。在您给出的示例中,代码作者选择拥有自己的get
实现—在这种情况下,在首次访问属性时自动初始化成员变量。属性有一个getter和setter—它们的目的很明显(获取和设置属性的值)
使用自动属性时,仍然有一个
get
和一个set
,但支持变量会自动为您实现。在您给出的示例中,代码作者选择了自己的get
-在这种情况下,在首次访问属性时自动初始化成员变量。这不是一个函数。这是一种财产。属性基本上是某个变量的花式包装。例如,声明以下属性:
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;
}
public string SomeProperty
{
get
{
// some logic code here
// then return some value
}
set
{
// some logic code here
// then set some value
}
}
这是一个自动属性的示例。当然,您也可以自己定义getter和setter方法,如下所示:
private string backing_SomeProperty;
public void set_SomeProperty(string value)
{
backing_SomeProperty = value;
}
public int get_SomeProperty()
{
return backing_SomeProperty;
}
public string SomeProperty
{
get
{
// some logic code here
// then return some value
}
set
{
// some logic code here
// then set some value
}
}
这不是一个函数。这是一种财产。属性基本上是某个变量的花式包装。例如,声明以下属性:
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;
}
public string SomeProperty
{
get
{
// some logic code here
// then return some value
}
set
{
// some logic code here
// then set some value
}
}
这是一个自动属性的示例。当然,您也可以自己定义getter和setter方法,如下所示:
private string backing_SomeProperty;
public void set_SomeProperty(string value)
{
backing_SomeProperty = value;
}
public int get_SomeProperty()
{
return backing_SomeProperty;
}
public string SomeProperty
{
get
{
// some logic code here
// then return some value
}
set
{
// some logic code here
// then set some value
}
}