2 回答

TA貢獻1856條經驗 獲得超11個贊
第一樓回答時我不知道你有沒測試過!你的答案是對的,但是你的說法有問題,我完全可以負責人的說這里不會拋出你說的異常,同樣程序也會按照提問者那樣子的想法執行的,下面說下個人理解:
這里需要明白一個概念,
代碼塊作用域---一個代碼塊是包含在開始花括號和對應的結束花括號之內的一段代碼。這也就是說我們常常寫程序時使用的{}稱為一個代碼塊作用域,那這個作用域有啥作用呢?同時和提問者B類寫法有什么區別和相同點呢?那現在我寫下面幾段代碼大家可以看下
代碼段一:
for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++){
Response.Write(string.Format("i={0},j={1} ", i, j));
代碼段二:
for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++)
Response.Write(string.Format("i={0},j={1} ", i, j));
Response.Write("</br>"+j.ToString());
代碼段三:
for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++)
{
Response.Write(string.Format("i={0},j={1} ", i, j));
Response.Write("</br>" + j.ToString());
}
其實類似的代碼段還有好多,這三種基本可以代表,故不在寫其他的類型??戳松厦嫒未a,我想知道作用域和代碼塊作用域的同志們應該看完后就能說出一二三來。
哪么下面我說下這三段代碼,代碼段一是沒問題的,肯定能打印出結果來,代碼段三也一樣可以執行,哪么斷碼段二呢?他能執行嗎?我可以肯定的告訴你不可以。
在C#中如果我們這樣子int i=0寫程序的話,編譯器會報錯提示應輸入";",對,就是我們程序中的分號。說到此想必明白了吧!這里就是告訴編譯器int聲明的變量i并賦值為0,至此這個聲明和賦值結束了;說到此肯定有人會說我說的不對,因為存在int i=0,j=1;類似這樣子的生命和賦值語句,對沒錯,確實這樣,那這樣子的又如何解?我想這里開個小玩笑來理解吧,中文中大家都知道逗號是啥意思吧,表示一句話還沒說完對吧,那同樣;也一樣哦,他表示是對逗號語句的一個分隔哦!O(∩_∩)O~ 這么理解就對了!其實編譯器也一樣,在int i=0,j=1;這里可以理解為int聲明變量的作用域擴大了,原來int聲明一個變量就以;結束了,現在聲明了兩個變量才以;結束,那到這里了我想大家明白了吧!
即時我們前面寫多少個for循環,如果我們不用{}來限定for程序執行的作用域的話,哪么C#編譯器會以類似int i=0,int j=0;這樣子的方式來判斷for循環的作用域的,其實也就是以第一個;為程序作用域的結束標識的。也就是在寫for的時候如果我們不寫{}來定義for的作用域的話,哪么編譯器會依據for后面的第一個;作為當前for的作用域的!在這里可以說是縮小了for的作用域,把代碼塊的作用域縮小為語句式的作用域了。
說的有些亂...如果能理解就好

TA貢獻1852條經驗 獲得超7個贊
for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++)
{
Console.Write("[{0},{1}]", i, j);
}
都是一樣的.像if的下面代碼一樣,不過感覺加上大括號,可以幫助別人讀程序
if()
執行A
添加回答
舉報