C#?运算符语法
一个简单的问题: 在C#中是否有这种操作的语法:C#?运算符语法,c#,operators,C#,Operators,一个简单的问题: 在C#中是否有这种操作的语法: 如果为条件,则返回对象本身:默认值 如下面的示例所示,但我不想对myObject求值两次(这可能是更复杂的事情,比如数据库查询): 我知道在检查null(如下面的示例中)时有相应的语法,但是否有用于检查任何不同值的语法,如本例中的DBNull.value int myVar = Convert.ToInt32(myObject ?? 0); 您不必对对象求值两次。计算对象,将其存储在变量中,并对结果变量进行检查 你的问题的答案是不,你不能随
- 如果为条件,则返回对象本身:默认值
int myVar = Convert.ToInt32(myObject ?? 0);
您不必对对象求值两次。计算对象,将其存储在变量中,并对结果变量进行检查 你的问题的答案是不,你不能随心所欲地用C#创建自己的迷你语言。最常见的操作有快捷方式,但自定义三元一元运算符不是快捷方式。否:
int myVar = myObject == DBNull.Value ? 0 : (int)myObject;
这是你能做的最好的了。它不会因为对象被提到两次就对其进行两次求值
或者将其包装在函数中,当然:
int myVar = DBObjectToInt(myObject);
public static int DBObjectToInt(object dbObj)
{
return dbObj == DBNull.Value ? 0 : (int)dbObj;
}
另一个选项是在SQL中使用,因此您甚至一开始就不会得到DBNull。所以您说这不会在db查询中出现两次:int i=(dt.Compute(“MAX(Column)”,string.Empty)=DBNull.Value?0:dt.Compute(“MAX(Column)”,string.Empty));我知道我可以将它存储在一个临时变量中,但我希望我可以在一行代码中完成这一切:)是的,但我假设
myObject
是一个变量的名称。所以您应该已经完成了var myObject=dt.Compute(“MAX(Column)”,string.Empty)
您可以使用函数intmyvar=DBObjectToInt(dt.Compute(“MAX(Column)”,string.Empty))
另一个选项正在SQL中使用,因此您一开始甚至不会得到一个DBNull
。我知道我可以将它存储在一个临时变量中,但我希望我可以在一行代码中完成这一切:)
int myVar = DBObjectToInt(myObject);
public static int DBObjectToInt(object dbObj)
{
return dbObj == DBNull.Value ? 0 : (int)dbObj;
}