关于C#:语法帮助,为什么在变量之前加上’_’?

Syntax help, why put '_' before variables?

我一直在运行一些教程,经常会看到类似的东西。

在H

1
2
3
UIButton *_loginButton;

@property (retain) IBOutlet UIButton *loginButton;

然后在.m中它会像…

1
@synthesize loginButton = _loginButton;

所以我的问题是,把一个放在前面有什么好处?或者为什么这是常见的做法?最后,我也应该这样做吗?


这是一种约定,人们有时使用它来表示私有实例变量,或者从属性中分离实例变量。有时,您会看到名称的前导下划线用于专用函数或方法。据我所知,苹果公司将该约定保留给自己使用,并建议您不要使用它以避免名称冲突。出于这个原因,您有时也会看到带有尾随下划线而不是前导下划线的名称,即foo_而不是_foo


我不知道这是从哪个版本开始的,但是我注意到,如果您只想将它表示为一个属性,那么根本不需要有一个实际的变量声明。

1
2
3
4
5
// Interface
@property (retain) IBOutlet UIButton *loginButton;

// Implementation
@synthesize loginButton

然后你就可以使用这个属性:

1
2
3
4
loginButton = (....)
self.loginButton = (...)
[self setLoginButton:(...)]
etc...

现在,无论是一种方式还是另一种方式,都取决于个人的品味。对于类似的事情,它通常属于"保持一致并遵循由您(唯一开发人员)或您的公司/团队/团队制定的任何编码标准"类别。


因为它是一个局部变量。

有些公司有内部要求用_