C# object@object是什么意思

C# object@object是什么意思,c#,keyword,C#,Keyword,我一直在处理事件和委托,需要异步引发事件,因此我一直在使用: public event EventHandler OnHelloEvent; public void Raise() { IAsyncResult syncResult = OnHelloEvent.BeginInvoke(this, new EventArgs(), null, null) 在Intellisense中,最后一个null表示为object@object。我以前没有遇到过这个问题,似乎也找不到任何相关文档

我一直在处理事件和委托,需要异步引发事件,因此我一直在使用:

public event EventHandler OnHelloEvent;

public void Raise()
{
    IAsyncResult syncResult = OnHelloEvent.BeginInvoke(this, new EventArgs(), null, null)
在Intellisense中,最后一个
null
表示为
object@object
。我以前没有遇到过这个问题,似乎也找不到任何相关文档


这是什么意思?它有用吗?

@允许您使用保留关键字作为参数名称。

这是用于转义保留字的特殊字符,以便它们可以用作标识符


请参阅。

符号可以被认为是某种类型的“转义”字符。由于
object
是C#中的关键字,因此不能将其用作变量名。但是,在它前面加一个
@
字符,它就不再是一个关键字,而是一个有效的变量名

符号@只是一个前缀,允许您使用保留标识符作为变量名

因此,
object@object
定义了一个object类型的变量,称为object。

每个人都回答“这是什么意思?”但没有人回答“它有用吗?”

在大多数情况下,答案是否定的。你不应该用这个

有一些特殊的例外。不经意间:

  • 与其他人的代码的互操作性问题:其他人的代码要求您拥有一个名称为保留字的变量。也许他们的代码是用一种与C#不同的语言编写的
  • 计算机生成的代码:使用@符号没有坏处。如果您担心保留字冲突,您可能会决定计算机生成的代码中的所有变量都将使用@符号。或者,您可能允许非C程序通过脚本语言或其他方式生成C程序,并且您希望支持名为
    class
    的变量

  • 请参阅:“关键字是预定义的保留标识符,对编译器具有特殊意义。它们不能用作程序中的标识符,除非它们包含@作为前缀。例如,
    @if
    是一个合法标识符,但
    if
    不是因为它是一个关键字。”这正是我要找的