参照型で ObjectIDGenerator メソッドを 2 回呼び出します。ID 値は同じです。
test a = new test();//reference type
bool isFirstTime;
ObjectIDGenerator IDGenerator = new ObjectIDGenerator();
long theID = IDGenerator.GetId(a, out isFirstTime);
Console.WriteLine(theID);
Console.WriteLine(isFirstTime);
theID = IDGenerator.GetId(a, out isFirstTime);
Console.WriteLine(theID);
Console.WriteLine(isFirstTime);
次のような出力:
1
True
1
False
オブジェクト「a」には 1 つの ID しかありません。
しかし、値の型で ObjectIDGenerator メソッドを呼び出すと、奇妙なことが起こります。
int a = 100;//value type
bool isFirstTime;
ObjectIDGenerator IDGenerator = new ObjectIDGenerator();
long theID = IDGenerator.GetId(a, out isFirstTime);
Console.WriteLine(theID);
Console.WriteLine(isFirstTime);
theID = IDGenerator.GetId(a, out isFirstTime);
Console.WriteLine(theID);
Console.WriteLine(isFirstTime);
出力:
1
真
2
偽
それが理由です?