【发布时间】:2010-10-31 18:16:54
【问题描述】:
这让我很困扰,我发现与 Intellisense (VS 2008 Pro) 结合使用时会写出愚蠢的错误:
class Foo
{
public Foo(bool isAction)
{
this.IsAction = IsAction;
}
public bool IsAction { get; private set; }
}
你抓到了吗?我当然没有,直到 IsAction 从未改变,导致错误。
Intellisense 以某种方式将“isA<tab>”转换为“IsAction”,这意味着无论构造函数输入如何,Foo.IsAction 属性总是为假。简直太棒了。
我不得不说我特别讨厌“隐式this”(我不知道它是否有正式名称)并且我想将其关闭,因此它永远不会假设它。 有没有办法做到这一点? 这也适用于调用同一类的静态方法。
或者,什么命名约定可以避免这个小问题? 属性必须保持为“IsAction”,因此它必须是构造函数参数名称的约定。奇怪的是,如果我用完全匹配的拼写命名它,那么 this.IsAction = IsAction; 会正确运行。
问题不在于区分大小写的语言,而是this 的隐含性。现在我想起来了,这也更像是一个 VS 2008 Pro 的问题,而不是 C#。我可以忍受没有this 的已经编写的代码,但我不想在没有它的情况下编写新代码,这意味着告诉 In
诺多林的回答让我思考。
现在我想起来了,这更像是 VS 2008 的问题,而不是 C#。我可以在没有this 的情况下使用已经编写的代码(尽管如果我在那里乱七八糟,我会更改它)但我不想在没有它的情况下编写新代码,这意味着告诉 Intellisense 停止这样做。 我可以告诉 Intellisense 关闭它吗?
【问题讨论】:
-
这不是隐含的问题。即使你可以关闭它(我认为你不能),我相信你会在几分钟内再次打开它。
-
我很确定我不会。我有提到我讨厌吗? :)
-
我很想看看你的代码没有它,每次调用私有或受保护的方法都以“this”开头......好的类包含许多小的重构和表达方法来实现它们的目标。你会到处都是“这个”。
-
对不起,我是一个新手程序员,但据我所知,您的代码没有任何问题,只是您传递的变量和您分配的变量不同。区分大小写是我在这里看到的恶魔。
标签: c# visual-studio-2008 .net-3.5 this