ちょっとこれ見てやってみた
C#はプロパティというものがあるので簡単に実装できます。
class Program
{
private static int value = 1;
public static int Value
{
get { return value++; }
}
static void Main(string[] args)
{
//ここ
if (Value == 1 && Value == 2 && Value == 3)
{
Console.WriteLine("true");
}
}
}
と こ ろ で
このコードですね。
評価値をfalseにする方法があります。
それは上記コードの「ここ」の部分にVisualStudioでブレークポイントを張って、Valueの中身を見ること!
そうすると、getterが呼ばれるのでValueの値がずれてfalseで評価されます。
これ、昔踏んでバグらせました。
結論
プロパティのgetterに副作用持たせるなよ
絶対だぞ絶対