同名的變數不能在相同的範圍內宣告兩次,變數的範圍是可以訪問該變數的**區域。
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
console.
writeline()
;for
(int i =
9; i >=
0; i--
) console.
readkey()
;}}}
輸出為:01
2345
6789
9876
5432
10在同乙個方法中,**中的變數i宣告了兩次。i都是在迴圈內部宣告的,所以變數對於迴圈來說是區域性變數。迴圈結束後該變數就出作用域,不能再訪問,接著執行下乙個迴圈,此時變數的作用域都只在迴圈內部,可以同時存在。
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
console.
readkey()
;}}}
此時會產生乙個錯誤:
變數「j」已被賦值,但從未使用過他的值,
變數「j」是在for迴圈開始前定義的,仍在for迴圈的範圍內,在main方法結束執行後,變數「j」才出作用域,第二個「j」不合法,編譯器無法區別這兩個變數,所以這樣不允許。
在某種情況下,可以區分同名但範圍不同的兩個識別符號。此時編譯器允許宣告第二個變數,原因是c#使得變數之間有乙個基本的區分,它把宣告為型別級的變數看作是字段,而把在方法中宣告的變數看作區域性變數。
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
}}
j變數定義在類級上,在類刪除前是不會出作用域的,此時在main方法中宣告的新變數j隱藏了同名的類級變數,所以最後輸出30
如果要引用類級變數,可以使用語法「object.fieldname」,在物件的外部引用類的字段或結構。
**如下:
using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.threading.tasks;
}}
輸出結果:
3020
第乙個是區域性變數的輸出,第二個引用類級變數的輸出。
C 中變數的作用範圍 可見範圍
作用域為當前 塊,即 中。在 塊外部不可見。區域性靜態變數,即在 塊中宣告的靜態變數,作用域為當前 塊,超過該 塊則不可見 static int a 0 void test 2.類靜態成員變數,作用域為當前類,超出類範圍則不可見 static int a class test 3.全域性靜態變數,不...
中宣告變數的範圍
c 0 x現在被稱為c 11 因為它不是過去十年完成 它終於被批准。我打算繞過新增一些關於它的教程,但我想做一些可能更直接的stl以來首次適用於大多數人。編譯器支援c 11而參差不齊 見 init statement expr1 expr2 宣告 迴圈考慮最簡單的方法是將其轉換成等價的while迴圈...
C 中整型變數的儲存大小和範圍
c 中可用的整型型別有五種,由小到大分別是char 也可以看成一種單位元組的整型 short int long long long。它們使用不同數目的位來儲存整型值。char在任何系統中都是單位元組8位,但是short總是16位,int總是32位嗎?並非那麼簡單,沒有一種選擇能夠滿足所有計算機的設計...