[英]goto statement in C#
我正在寫一個像C#一樣的函數:
public void CountNumber()
{
for(int i = 0; i < 40; i++) {
if(i > 20) {
goto out1;
}
Console.WriteLine("hello " + 1);
out1:
string hello = "";
}
}
這基本上計算數字,如果i大於20,則不應寫入console.writeline。 它應該跳過並點擊“out1”但是“out1”最終需要有一個函數來編譯。 它需要有“string hello =”“”來編譯。 我不需要“string hello =”“”。 我只是希望它什么也不做,並且循環結束了。 如果沒有out1:語句需要的“string hello =”“”,有沒有辦法做到這一點? 喜歡:
public void CountNumber()
{
for(int i = 0; i < 40; i++) {
if(i > 20) {
goto out1;
}
Console.WriteLine("hello " + 1);
out1:
}
}
謝謝。
盡管說使用goto有更好的方法來解決這個問題是絕對正確的,但我注意到沒有人真正回答過你的問題。
標簽必須標記聲明 。 您想要轉到沒有與之關聯的語句的位置。 您可以使用單個分號或空塊創建空語句。
out1:
;
}
要么
out1:
{}
}
但就像他們說的那樣,如果你能避免它,就不要去那里。
這個循環可以很容易地用很多其他方式編寫 - 你可以在i<=20
而不是i<40
(最好)的情況下循環,或者將Console.WriteLine
調用移動到if語句中並使用if反轉。
但是,我假設您正試圖在“真實”案例中使用更精細的場景。 如果是這種情況,而不是使用goto
,只需使用continue
跳過循環的其余部分:
public void CountNumber()
{
for(int i = 0; i < 40; i++) {
if(i > 20) {
continue; // Skips the rest of this loop iteration
}
Console.WriteLine("hello " + 1);
}
}
類似地,如果在您的實際情況中更合適,您可以使用break
來完全擺脫循環而不處理更多元素。
只是顛倒你的情況 - if...else
可能是另一種選擇。 我假設還有其他代碼,否則你可以將for
循環本身更改for
最多20個。
for(int i = 0; i < 40; i++)
{
if(i <= 20)
{
Console.WriteLine("hello " + 1);
}
//other code
}
還有一些其他類似goto的語句,你應該考慮使用:
continue
進入當前循環的下一次迭代。 break
離開當前循環 return
退出當前方法 如果以上都不符合您的要求,您應該只考慮goto
。 根據我的經驗,這種情況很少發生。
看起來你想在這里continue
使用。
您可以使用continue
關鍵字:
public void CountNumber() {
for(int i = 0; i < 40; i++) {
if(i > 20) {
continue;
}
Console.WriteLine("hello " + 1);
}
}
但是,請考慮使用if
代替:
public void CountNumber() {
for(int i = 0; i < 40; i++) {
if(i <= 20) {
Console.WriteLine("hello " + 1);
}
}
}
public void CountNumber()
{
for(int i = 0; i < 40; i++) {
if(i > 20) {
continue;
}
Console.WriteLine("hello " + 1);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.