引用当前实例成员时,是否有一种方法可以在Visual Studio中强制使用this
关键字?
在构造函数中有错误的示例:
class MyClass
{
public object Foo { get; set; }
public MyClass(object foo)
{
Foo = Foo; // this should of course be lowercase but it's easy to miss
}
}
此代码可能会在以后某处生成臭名昭著的'object reference not set to an instance of an object'
异常。
如何使它工作,但仍然很容易错过:
class MyClass
{
public object Foo { get; set; }
public MyClass(object foo)
{
Foo = foo; // Valid syntax but unclear.
}
}
这是有效的语法,但很容易遗漏。
我希望Visual Studio强制执行的语法:
class MyClass
{
public object Foo { get; set; }
public MyClass(object foo)
{
this.Foo = foo; // this is "safe".
}
}
如果强制执行此约定,则我必须键入this.Foo = this.Foo
才能创建与第一个示例相同的错误类型。
无论如何我总是使用this
关键字,因为它使我在c#和其他语言之间切换时的生活更加轻松,因此完全没有任何缺点。
您可以通过启用“将警告视为错误来解决此问题”:
警告2分配给同一变量;您是要分配其他内容吗?
(如果要仅为此启用它,则为CS1717)
编译器已经告诉您了这一点;您应该查看警告(并争取零警告)。
关于中间不清楚的地方:
Foo = foo;
我不同意-这对我来说是很清楚的(除非您来自VB背景并且已经变得盲目了。)>
不,您不能更改这种语言的行为。如果您使用ReSharper I believe
如果您不使用此前缀,则可以使用StyleCop生成警告。您可以通过遵循以下these instructions
您可以使用FXCop \ Visual Studio Code Analysis创建自定义警告和错误
您可以使用StyleCopAnalyzers
,规则SA1101: