我可以在c#.NET中强制使用'this'关键字吗?

问题描述 投票:10回答:5

引用当前实例成员时,是否有一种方法可以在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#和其他语言之间切换时的生活更加轻松,因此完全没有任何缺点。

c# visual-studio visual-studio-2010 syntax conventions
5个回答
11
投票

您可以通过启用“将警告视为错误来解决此问题”:

警告2分配给同一变量;您是要分配其他内容吗?

(如果要仅为此启用它,则为CS1717)

编译器已经告诉您了这一点;您应该查看警告(并争取零警告)。

关于中间不清楚的地方:

Foo = foo;

我不同意-这对我来说是很清楚的(除非您来自VB背景并且已经变得盲目了。)>


6
投票

不,您不能更改这种语言的行为。如果您使用ReSharper I believe


3
投票

如果您不使用此前缀,则可以使用StyleCop生成警告。您可以通过遵循以下these instructions


2
投票

您可以使用FXCop \ Visual Studio Code Analysis创建自定义警告和错误


1
投票

您可以使用StyleCopAnalyzers,规则SA1101

© www.soinside.com 2019 - 2024. All rights reserved.