=>常数与{get; } =在C#中恒
在最佳实践和性能(如果有的话)什么是暴露被设置或在C#6+样式属性的属性计算一次,值更好的环境?=>常数与{get; } =在C#中恒
我比较expression bodied properties
public string Name => "bob";
public string Name { get; } = "bob";
是否desugar以同样的事情?我无法在文档中的任何位置找到用于我的案例的文档。我很抱歉,如果这已经涵盖在SO中,搜索没有让我在哪里。
当心!表达浓郁属性将执行表达式每次调用时!你可以看到我的回答的最后一部分的例子。
public string Name => "bob";
是语法糖
public string Name
{
get
{
return "bob";
}
}
虽然
public string Name { get; } = "bob";
是
private readonly string _name = "bob";
public string Name
{
get
{
return _name ;
}
}
语法糖0
当心 - 这里是危险的一部分!
请注意,表达身体会每次调用这个属性的时间执行。这很好,当它返回一个硬编码值,但如果它返回一个列表,例如,它会每次都返回一个新的列表:
public List<String> Names => new List<String>() {"bob"};
是语法糖:
public List<string> Names
{
get
{
return new List<string>() {"bob"};
}
}
也就是说不自动初始化属性的情况下:
public List<String> Names { get; } = new List<String>() {"bob"};
是语法糖这样的:
private readonly List<string> _names = new List<string>() {"bob"};
public string Names
{
get
{
return _names;
}
}
正如你可以看到,这里的列表仅初始化一次。
好吧,谢谢。微妙的是'{get;} ='设置后台:) – Jay
很高兴帮助:-) –
第一个是一个箭头功能和结果到返回恒定值的函数:
// syntactic sugar for:
public string Name { get { return "bob"; } }
// results into:
public string get_Name()
{
return "bob";
}
第二个是一个自动属性,该属性具有值导致成吸气剂与支持字段“鲍勃“:
// results into:
private string _name = "bob";
public string get_Name()
{
return _name;
}
可悲的是重复的回答不回答一组,一次只值的具体情况,回答以下回答我的问题,准确。 – Jay