Rumah > pembangunan bahagian belakang > C++ > Mengapa C# Mengeluh Tentang Mengisytiharkan Semula Pembolehubah dalam Skop Berbeza?

Mengapa C# Mengeluh Tentang Mengisytiharkan Semula Pembolehubah dalam Skop Berbeza?

Barbara Streisand
Lepaskan: 2025-01-16 16:58:15
asal
317 orang telah melayarinya

Why Does C# Complain About Redeclaring a Variable in Different Scopes?

Skop pembolehubah C#: mengapa pengkompil mengelirukan 'x'?

Coretan kod C# berikut:

<code class="language-csharp">if (true)
{
    string var = "VAR";
}

string var = "New VAR!";</code>
Salin selepas log masuk

Mengisytiharkan pembolehubah 'var' untuk kali kedua dalam skop luar akan menimbulkan ralat berikut:

Ralat 1: Pembolehubah tempatan bernama 'var' tidak boleh diisytiharkan dalam skop ini kerana ia akan mempunyai makna yang berbeza daripada 'var' yang sudah digunakan untuk mewakili sesuatu yang lain dalam skop "anak".

Ralat ini berlaku kerana C# menguatkuasakan peraturan skop yang ketat yang menghalang pembolehubah dengan nama yang sama daripada diisytiharkan semula dalam skop bertindih. Walaupun pengisytiharan 'var' pertama terhad kepada skop dalaman dan nampaknya tidak mempunyai kesan pada skop luar, pengkompil menganggap kedua-dua kejadian sebagai berada dalam skop yang sama.

Masalahnya berpunca daripada batasan reka bentuk pengkompil. Ia menganalisis pembolehubah berdasarkan skopnya semata-mata, tanpa mengira susunan di mana ia diisytiharkan atau digunakan. Jadi, kod yang sah secara teori berikut:

<code class="language-csharp">string var = "New VAR!";

if (true)
{
    string var = "VAR";
}</code>
Salin selepas log masuk

Pengkompil juga menganggapnya tidak sah.

Untuk menyelesaikan kekaburan ini, disyorkan untuk menggunakan nama pembolehubah yang berbeza atau menggunakan skop adik-beradik:

<code class="language-csharp">string varOuter = "New VAR!";

if (true)
{
    string varInner = "VAR";
}</code>
Salin selepas log masuk

Walaupun skop adik-beradik adalah sah dari segi teknikal, ia boleh mengelirukan dan biasanya tidak disyorkan. Sebagai alternatif, adalah amalan yang lebih baik untuk menamakan semula pembolehubah, yang membantu membezakan pembolehubah daripada skop yang berbeza.

Atas ialah kandungan terperinci Mengapa C# Mengeluh Tentang Mengisytiharkan Semula Pembolehubah dalam Skop Berbeza?. 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