2013-03-27 55 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