我知道这可能是一个愚蠢的问题,但在这里。
我总是写我的私人成员,如privateMember
,我一直在阅读C#中的命名约定,因为我注意到Visual Studio中的很多自动生成的代码使用_variableName
私有成员。即使在Microsoft文档中,我读到的任何地方都应该使用privateMember
。
所以,我的问题是,如果好的做法说我应该像现在一样编写privateMember
,为什么Visual Studio会使用下划线(_privateMember
)生成私有成员的类?
答案 0 :(得分:6)
Microsoft Code Conventions actually recommend against using underscores altogether。这真的是个人喜好。我不会使用生成的代码作为我的编码约定标准的灵感。
请勿使用下划线,连字符或任何其他非字母数字字符。
也许是因为它生成的代码并不打算被人类阅读。 ; - )
答案 1 :(得分:5)
命名约定不是100%同意的。这是有些人喜欢的,有些人无动于衷,有些人讨厌。某些人认为实例变量更好地通过他们的名字脱颖而出,这是一种方法。其他人一直使用this.instanceVariable
而不是instanceVariable
,以便实例变量脱颖而出,其他人会在“_”字符之外添加其他内容,而有些人则不会偏离他们的方式使用任何特殊的区别。
在一天结束时,重要的是你和团队中的其他成员就标准达成一致并与之保持一致。世界其他地方选择做的事情并不需要影响你。
值得一提的是,在大多数情况下,Visual Studio生成的代码片段可以配置为符合您团队的编码实践。
答案 2 :(得分:5)
不久前,当C#进入市场时,有一个概念,即局部变量应该由前缀_
引导。社区不接受这个概念,因为在纯C中_
引导系统变量/函数,元数据由__
引导。所以几年后,他们现在不鼓励使用它。但是你仍会发现一些使用这种表示法的信徒不是因为它是一个狂热分子,而是很多旧的C#应用程序都包含这个约定。
为什么会出现在VisualStudio中?
这可能与它的设计时间差有关。在那个时候,语言设计者提出了这种方法。所以在最新版本的配置中可能没有人改变它。
答案 3 :(得分:1)
这只是他们使用的惯例,我也是这样做的。您最终可以根据需要为私人字段命名。使用下划线对其进行前缀只是为了更容易阅读IMO。
答案 4 :(得分:0)
这只是C#语言约定,因此在构造函数中,当构造函数和字段名相同时,可以使用_varable而不是this.variable。
中有所有c#命名约定 http://msdn.microsoft.com/en-us/library/ms229002.aspx
如果您遵循生成代码的约定,那么您就是其中的一员。 除了推荐之外,许多程序员使用与生成的代码相同的约定。 一些帮助您重构代码的程序也会让您遵循字段名称的名称约定。
答案 5 :(得分:0)
作为惯例,私人领域被用作下划线,例如string _name;
此链接将为您提供有关MS http://msdn.microsoft.com/en-us/library/ms229045.aspx
命名注册的指南的更多信息答案 6 :(得分:0)
开头的下划线是VS显示它是私人会员的方式。我们通常将下划线保留在开头,但对于您使用的命名约定,它实际上是个人偏好。只需选择一个并坚持下去,这样就不会让自己或其他任何可能会看到你代码的人感到困惑。