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
Lepaskan: 2025-01-24 18:17:17
asal
694 orang telah melayarinya

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>
Salin selepas log masuk
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>
Salin selepas log masuk
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>
Salin selepas log masuk
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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan