if (statement)
base.Database.AddInParameter(command, "ColumnX", DbType.String, "StackOverflow");
else
base.Database.AddInParameter(command, "ColumnX", DbType.String, DBNull.Value);
Run Code Online (Sandbox Code Playgroud)
我想通过使用在一行中做这个声明
? "true" : "false"
Run Code Online (Sandbox Code Playgroud)
例如:
if(statement) ? base.Database.AddInParameter(command, "ColumnX", DbType.String, "StackOverflow") : base.Database.AddInParameter(command, "ColumnX", DbType.String, DBNull.Value);
Run Code Online (Sandbox Code Playgroud)
但是这是错误的.Visual Studio说出了":"的意外标记
任何的想法?谢谢
为什么不这样做(为了SO而把它包裹在很多行上)?
base.Database.AddInParameter(
command,
"ColumnX",
DbType.String,
statement ? "StackOverflow" : (Object)DBNull.Value);
Run Code Online (Sandbox Code Playgroud)
您的尝试无效C#.如果你真的想按照自己的方式去做并使用if...else一行,那就需要:
if(statement) base.Database.AddInParameter(command, "ColumnX", DbType.String, "StackOverflow"); else base.Database.AddInParameter(command, "ColumnX", DbType.String, DBNull.Value);
Run Code Online (Sandbox Code Playgroud)
但这很难读.
即使if (true) DoOne(); else DoTwo();是做空:也不是那么容易.
if (true)
DoOne();
else
DoTwo();
Run Code Online (Sandbox Code Playgroud)
更好.
首先,条件运算符不需要ifbefore .(statement)
其次,你不能使用它作为条件的两边需要是一个类型或类型,其中一个可以隐式转换为另一个 - string而DBNull.Value不是这种类型.
你可以使用它,如果你施放无论是string或DBNull.Value到object:
base.Database.AddInParameter(
command,
"ColumnX",
DbType.String,
statement ? "StackOverflow" : (object)DBNull.Value);
Run Code Online (Sandbox Code Playgroud)
但是,如果我必须在一行上阅读它,我会发现它比你发布的原始版本更不易读 - 将这个逻辑放在一行中是没有价值的,特别是如果它降低了可读性并使代码不那么容易了解.
| 归档时间: |
|
| 查看次数: |
211 次 |
| 最近记录: |