巢狀循環中的 C# 變數作用域問題
了解 C# 中的變數作用域對於避免常見錯誤至關重要。 變數的作用域決定了程式碼中可以存取該變數的位置。讓我們檢查兩個突出顯示潛在範圍問題的程式碼範例:
範例1:
<code class="language-csharp">public void MyMethod(){ int i=10; for(int x=10; x<20; x++){ int i = x; // Point 1: Error Console.WriteLine(i); } Console.WriteLine(i); // Point 2: Error }</code>
範例2:
<code class="language-csharp">public void MyMethod(){ for(int x=10; x<20; x++){ int i = x; object objX = new object(); Console.WriteLine(i); } for(int y=20; y<30; y++){ int i = y; object objX = new object(); Console.WriteLine(i); } }</code>
錯誤分析
在範例 1 中,編譯器標記了 Point 1,因為內部循環重新宣告了 i
,在同一範圍內建立了一個具有相同名稱的新變數。這違反了給定範圍內唯一變數名稱的規則。 第 2 點的錯誤源自於嘗試在循環外部存取 i
,其中在循環範圍內聲明了不同的 i
。
解析度
範例2編譯成功。 這兩個循環建立了不同的範圍。 每個循環中的 i
和 objX
變數被視為單獨的實體,避免命名衝突。每個循環的作用就好像它被括在不可見的大括號中一樣,創造了自己的局部範圍。
重點
C# 的變數範圍規則要求在給定範圍內具有唯一的名稱,並在整個範圍內對同一實體進行一致的引用。 了解這一點,尤其是在巢狀循環中,可以防止範例 1 中所示的作用域錯誤。透過仔細管理變數宣告和作用域,開發人員可以編寫更乾淨、更無錯誤的 C# 程式碼。
以上是為什麼 C# 會報告嵌套循環中的變數範圍錯誤以及如何解決這些錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!