Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如果是只读的,公共字段是邪恶的吗?_.net_Properties_Readonly - Fatal编程技术网

.net 如果是只读的,公共字段是邪恶的吗?

.net 如果是只读的,公共字段是邪恶的吗?,.net,properties,readonly,.net,Properties,Readonly,我读过很多观点,认为公共领域是邪恶的,公共财产是为了公共而设计的,我们可以通过二传手和传接手等做超伟大的事情 我的理解是,尽管只读字段很少,但它会影响性能(而且,无论是否与性能相关,我知道FXCop和Resharper都会提示我尽可能使用只读字段) 我知道在.NET中不能有只读属性,但只读公共字段仍然是邪恶的吗?公共字段邪恶的原因之一是,如果针对该字段编译了100个其他程序集,然后您决定用公共属性替换它(包括验证等),所有这些程序集也必须重新编译 因此,字段是否为只读并不重要——公共字段仍然是有

我读过很多观点,认为公共领域是邪恶的,公共财产是为了公共而设计的,我们可以通过二传手和传接手等做超伟大的事情

我的理解是,尽管只读字段很少,但它会影响性能(而且,无论是否与性能相关,我知道FXCop和Resharper都会提示我尽可能使用只读字段)


我知道在.NET中不能有只读属性,但只读公共字段仍然是邪恶的吗?

公共字段邪恶的原因之一是,如果针对该字段编译了100个其他程序集,然后您决定用公共属性替换它(包括验证等),所有这些程序集也必须重新编译


因此,字段是否为只读并不重要——公共字段仍然是有害的。

“我知道我们不能在.NET中拥有只读属性”——以何种方式?您可以拥有一个没有setter的属性…@JonSkeet,您是说
公共字符串s{get…}
的处理方式与
私有只读字符串s
相同吗?如果是这样的话,我就删除我的问题好吧,那不是有效的代码。但是您可以有
私有只读字符串名;公共字符串名称{get{return Name;}}
是由只读字段支持的只读属性。@DaveRook:否,在构造函数或变量初始值设定项中,只读字段只能分配一次,而没有公共setter的属性的(私有)支持字段可以根据需要(在此类中)分配任意频率。这个问题已大致回答完毕,请参阅[连结][1][1]: