我知道用@
作为C#字符串文字的前缀会将其标记为逐字字符串文字,但如果它以私有属性的名称为前缀,它的用途是什么?
这出现在我维护的一些代码中......
public class JourneyBuilder
{
// ...
private JourneyBuilder @this
{
get { return this; }
}
// ...
}
有人可以为此提出理由吗?
我想这实际上是两个问题(其中一个问题已经得到解答)。第二个是:为什么私有财产只返回this
?
答案 0 :(得分:3)
这是一种“转义”保留关键字的方式,因此您可以将其用作标识符。在大多数情况下,最好只是提出一个不同的名称,而不是使用这种方法,但C#编译器确实允许这样做。
另一方面,我所看到的唯一一个有意义的地方就是在命名扩展方法的实例参数时:
public static void Foo(this Object @this)
{
// ...
}
但即使在这种情况下,将参数source
或其他东西命名为其性质也是一样好。
至于为什么你需要一个返回this
的私有属性:没有理由这样做。您只是为该类型提供了一个私有方法来访问已经可用的引用。幸运的是,由于该成员是私有的,您可以轻松删除它。