C# EventArgs.Empty是一个圆形字段。这怎么可能呢?

C# EventArgs.Empty是一个圆形字段。这怎么可能呢?,c#,C#,如果通过在VisualStudio中插入断点来查看EventArgs.Empty的值,它似乎是在循环 EventArgs.Empty {System.EventArgs} ◢static member ◢Empty {System.EventArgs} ◢static member ◢Empty {System.EventArgs}

如果通过在VisualStudio中插入断点来查看EventArgs.Empty的值,它似乎是在循环

EventArgs.Empty {System.EventArgs} ◢static member ◢Empty {System.EventArgs} ◢static member ◢Empty {System.EventArgs} ◢... EventArgs.Empty{System.EventArgs} ◢静态成员 ◢空{System.EventArgs} ◢静态成员 ◢空{System.EventArgs} ◢...
这怎么可能呢?如何实现这样一个类似“EventArgs.Empty”的字段?我已经尝试过通过查看EventArgs的确切定义来重新创建这样的字段,但我得到的只是一个空点异常。

它可能是这样实现的:

class EventArgs
{
     public static readonly EventArgs Empty;

     static EventArgs(){
         Empty = new EventArgs();
     }
}

如果你想知道怎么做的话,请看下面的例子。这个行为就是当一个对象有一个属于它自己类型的成员时,你所看到的行为。只是相同类型的静态字段
class MyEventArgs{public static readonly MyEventArgs Empty=new MyEventArgs();}
要理解递归,您必须理解recursion@RayKoopa“很好@RayKoopa这不是递归。如果你想改进你的答案编辑你的答案,不要发布第二个答案。哎呀,我做了另一个答案而不是编辑。我删除了另一个,谢谢你的回答。如果我查看System.EventArgs文件,则EventArgs结构的实际定义并不存在。也许它的部分定义和你说的一样。但我想知道。建议使用这种(不是递归的)自循环类吗?它是一种常见的构造。每个对象都有
这个
,它也指向自身。哦,为什么我没有想到呢。我觉得自己好笨。非常感谢你。这太有帮助了。