2016-03-09 55 views
1

我希望能夠降低下面的代碼行數更少,因爲它是用來幾個地方:實例化一個int如果聲明

int callID = getCallIndex(roomID); 
if (callID >= 0) 
{ 
    ... 

,並嘗試一些這

if (int callID = getCallIndex(roomID) >= 0) 
{ 
    ... 

但它給出了一個編譯器錯誤。

是否有可能在if()語句中實例化和設置一個變量?

+2

你爲什麼要這麼做?如果你在幾個地方需要這個值,那麼在「if」之外聲明它會更好。 –

+2

你試圖實現什麼 – BugFinder

+0

這個代碼需要幾個if()/ else()語句本身嵌套的if語句,但不是全部。 呼叫ID並不總是與所有if()語句相關 編輯:whoops,[enter]提交... – Sam0

回答

1

for -loop不同的是,if語句中的表達式是一個表達式,其表達式爲truefalse。然而,分配給您的示例中的分配值爲int。在for -loop但是你可以做這樣assignmenets你可以包含的代碼塊,而不是單值表達式:

for(assignements; condition; actions) 

正如你所看到的第一個參數和循環的最後一個也可以是幾種聲明。然而,if語句需要一個值而不是語句。

所以這是不可能的。

+0

謝謝 - 那麼我會堅持原來的代碼。 – Sam0

1

據我的理解,在C#中的if語句的編碼中聲明一個變量是不可能的。

4

你可以做一個任務,並像這樣的if語句中的比較:

int callID; 
if ((callID = getCallIndex(roomID)) >= 0) 
{ 
} 

,但你仍然需要聲明的聲明的變量int callID外。

0

當你不需要內的CALLID如果使用以下命令:

if (getCallIndex(roomID) >= 0) 
{ 
    ... 
} 
0

是的,它是possible.You可以使用分配的if內condition.but你不能實例內部變量它。

int callID; 
if (callID=getCallIndex(roomID) >= 0) 
{ 
    //do something. 
} 

所以,這是不可能的。