是否有内置的方法来识别类的实例?

PIC*_*ain 8 .net c# class instance

我正在使用我的一个C#.NET项目进行一些诊断日志记录,我希望能够记录代表一个特定类的实例的标识符.我知道我可以用一个静态变量做到这一点,每次创建一个类实例时它都会增加,但我只是想知道在.NET框架中是否有任何内置方法来执行此操作.也许使用反射或其他东西.

Jon*_*n B 8

您可以Guid在类中添加一个属性,并在构造函数中初始化它(保证每个实例都是唯一的).

  • 使用这种技术几次.你可以直接初始化一个字段`public Guid InstanceId = Guid.NewGuid();`以保持你的构造函数清理调试内容. (2认同)

Dan*_*Tao 6

只是为了补充Henk在答案中所说的内容GetHashCode,并减轻他在答案中收到的一些负面评论:

有一种方法叫GetHashCode任何无关该对象的价值,无论它的类型是否已覆盖对象GetHashCode.

看看System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode.

当然,这个值不保证是唯一的.也不是Guid(虽然不是唯一的将涉及合法微观的几率).

我会说你的直觉是关于静态计数器变量的.但是,我应该提一下,++在每个对象的构造函数中使用运算符简单地递增它不是线程安全的.如果可能的话,您可以从多个线程中实例化一个类的实例,Interlocked.Increment而不是想要使用它.