揭示了意外: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中文網其他相關文章!