从好奇心驱使,试图破坏事物的角度来看,也包括防范潜在问题。想象一下通过调用以下代码(或类似的代码,但 string.Empty
是一个很好的例子)可能会发生的最糟糕的情况:
typeof(String).GetField("Empty",
BindingFlags.Public |
BindingFlags.NonPublic |
BindingFlags.Static |
BindingFlags.GetField
).SetValue(null, "foo" );
当代码中存在 x = myClass.bar ?? string.Empty
这样的语句时,可能会出现问题。
是否有任何方法(类似于不同的应用程序域或类似方法),可以保护(或检测)某人更改诸如String.Empty
或SqlDateTime.MinValue
(或其他类似的只读字段在.NET中)的值?
string.Empty
。在这种情况下,自己给自己惹麻烦是非常明显的。 - CodesInChaosInt.MaxValue
不是一个 常量 字段吗? - haroldreadonly
字段被改变,此外,代码已经在密封舱的另一侧。 - Dai