Rumah >pembangunan bahagian belakang >C++ >Apakah beberapa kes sudut yang tidak dijangka di C# dan .NET?

Apakah beberapa kes sudut yang tidak dijangka di C# dan .NET?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-24 18:17:17688semak imbas

What Are Some Unexpected Corner Cases in C# and .NET?

mengemukakan yang tidak dijangka: C# dan .NET's Hidden Quirks

Artikel ini meneroka beberapa tingkah laku yang mengejutkan dalam C# dan .NET, menunjukkan keperluan untuk ujian yang ketat dan pertimbangan yang teliti terhadap kes -kes kelebihan.

Satu contoh yang menarik melibatkan rentetan rentetan. Pertimbangkan coretan kod ini:

<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>
Intuitif, seseorang mungkin menjangkakan

sebagai output. Walau bagaimanapun, kedua -dua False dan x diasingkan sebagai rentetan kosong, yang membawa kepada hasil yang mengejutkan y. True

Satu lagi tingkah laku yang tidak dijangka timbul dengan jenis yang tidak dapat dipertahankan dan kaedah

. Jika GetType() adalah jenis yang boleh dibatalkan dan semua kaedah yang ditindas (kecuali T) dilaksanakan, memanggil GetType() pada contoh berkotak boleh membuang GetType(). NullReferenceException

<code class="language-csharp">static void Foo<T>() where T : new()
{
    T t = new T();
    // ...

    // This throws a NullReferenceException...
    Console.WriteLine(t.GetType());
}</code>
Tambahan pula, kekangan generik di mana

adalah jenis rujukan dan memerlukan nilai non-null (T) yang menunjukkan cabaran halus. Walaupun kekangan T : class, new() bertujuan untuk menjamin contoh yang tidak nol, ini boleh dilangkau menggunakan ketidakpuasan, sebagai contoh, dengan atribut proksi tersuai yang mengembalikan NULL untuk contoh yang baru dibuat: new()

<code class="language-csharp">[MyFunnyProxy]
class MyFunnyType : ContextBoundObject { }</code>
Contoh -contoh ini menggambarkan potensi untuk tingkah laku yang tidak dijangka dalam kerangka C# dan .NET. Ujian menyeluruh dan kesedaran yang mendalam mengenai kes kelebihan adalah penting untuk pembangunan aplikasi yang mantap dan boleh dipercayai.

Atas ialah kandungan terperinci Apakah beberapa kes sudut yang tidak dijangka di C# dan .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn