2013-03-27 63 views
0

是否可以編寫自己的條件語句或重載當前語句?如何創建自定義語句

是我真正想要做的是

object obj = null; 

if(obj) // or something like if(1==1 || obj && obj.Value) 
    // do something 
else 
    // do someotherstuff 

回答

1

不完全是,但對於你提到的具體情況,你可以重載如何在特定的類的實例計算爲true/false

// returns true if the object evaluates to true 
public static bool operator true(YourClass x) 
{ 
    return x != null; 
} 

// returns true if the object evaluates to false 
public static bool operator false(YourClass x) 
{ 
    return x == null; 
} 

這樣的話,你可以這樣做:

YourClass x = new YourClass(); 

if (x) // same as "if (x != null)" (defined in operator true) 
    // do something 
else if (!x) // same as "if (x == null)" (defined in operator false) 
    // do someotherstuff 

更多信息:
true Operator (MSDN)
false Operator (MSDN)

+0

+1爲您很好的解決方案,但遺憾的是沒有回答我的問題,如果有一種方法或許沒有辦法創建一個自定義聲明 – WiiMaxx 2013-03-27 15:08:07

+0

@WiiMaxx我的意思是「不算什麼確切地說「是你不能重載諸如」if「,」else「之類的條件語句或者創建新的條件語句。您只能重載操作符,如'||'或'&&'。你想重新定義「如果」做什麼? – Botz3000 2013-03-27 15:36:34

+0

如果僅僅是一個例子,這個問題背後沒有實際的需求。我在一些論壇上看到有人問這個問題,但其中一個人得到了答案,有時候寫'if(value!= null)'也很緊張,所以我認爲這將是一個很好的例子。 – WiiMaxx 2013-03-28 07:43:10