揭示了意外:c#和.net的隐藏Quirks
>>本文探讨了C#和.NET中的一些令人惊讶的行为,证明了需要进行严格测试和仔细考虑边缘案例的必要性。
>一个有趣的示例涉及字符串Intuding。 考虑此代码段:
<code class="language-csharp">string x = new string(new char[0]); string y = new string(new char[0]); Console.WriteLine(object.ReferenceEquals(x, y));</code>>直觉上,人们可能会期待
作为输出。但是,False
和x
均被定义为空字符串,导致令人惊讶的结果。y
>
True
>另一种意外行为是通过可无效的类型和
是一种无效的类型,并且实现了所有覆盖方法(除GetType()
除外),则在盒装实例上调用T
>。
GetType()
GetType()
>此外,NullReferenceException
是参考类型的通用约束,需要一个非NULL值(
<code class="language-csharp">static void Foo<T>() where T : new() { T t = new T(); // ... // This throws a NullReferenceException... Console.WriteLine(t.GetType()); }</code>>约束旨在保证非NULL实例,但可以使用间接方向绕过这一点,例如,使用自定义代理属性返回新创建的实例的null:
T
这些示例说明了C#和.NET框架内意外行为的潜力。 彻底的测试和对边缘案例的敏锐意识对于稳健且可靠的应用程序开发至关重要。T : class, new()
>
以上是C#和.NET中有哪些意外的拐角案例?的详细内容。更多信息请关注PHP中文网其他相关文章!