C#-一种更有效的三元算子
我正在制作一个程序,我想检查一个字符串是否等于C#-一种更有效的三元算子,c#,ternary,C#,Ternary,我正在制作一个程序,我想检查一个字符串是否等于”,如果不等于,则使用它,如果等于,则使用默认值。我知道我能做string!="" ? 字符串:“默认值”,但是,我觉得这样做效率很低,因为我一直在键入string。当然,写出字符串对我来说是没有问题的,但是,如果在另一个项目中,我必须引用一个带有长包名的字符串,这会有点烦人。根据DavidG的选项和有用的链接,您可以使用此扩展函数 public static string IfEmpty(this string str, string altern
”
,如果不等于,则使用它,如果等于,则使用默认值。我知道我能做string!="" ? 字符串:“默认值”
,但是,我觉得这样做效率很低,因为我一直在键入string
。当然,写出字符串对我来说是没有问题的,但是,如果在另一个项目中,我必须引用一个带有长包名的字符串,这会有点烦人。根据DavidG的选项和有用的链接,您可以使用此扩展函数
public static string IfEmpty(this string str, string alternate)
{
return str?.Length == 0 ? str : alternate;
}
(即使“str”为空,也将返回备用字符串)
并用作mystring.IfEmpty(“其他东西”)
来源:
此外,您不需要引用很长的字符串。根据DavidG的选项和有用的链接,您可以使用此扩展函数
public static string IfEmpty(this string str, string alternate)
{
return str?.Length == 0 ? str : alternate;
}
(即使“str”为空,也将返回备用字符串)
并用作mystring.IfEmpty(“其他东西”)
来源:
此外,您不需要引用很长的字符串。目前没有运算符可以执行您想要的操作 但实际上有一个“默认或空合并运算符”的建议,如下所示: 目前,您最好声明一个扩展方法,如下所示:
public static string NullIfEmpty(this string str)
{
return string.IsNullOrEmpty(str) ? null : str;
}
var foo = yourString.NullIfEmpty() ?? "default value";
然后像这样使用它:
public static string NullIfEmpty(this string str)
{
return string.IsNullOrEmpty(str) ? null : str;
}
var foo = yourString.NullIfEmpty() ?? "default value";
目前没有一个操作员可以做你想做的事情 但实际上有一个“默认或空合并运算符”的建议,如下所示: 目前,您最好声明一个扩展方法,如下所示:
public static string NullIfEmpty(this string str)
{
return string.IsNullOrEmpty(str) ? null : str;
}
var foo = yourString.NullIfEmpty() ?? "default value";
然后像这样使用它:
public static string NullIfEmpty(this string str)
{
return string.IsNullOrEmpty(str) ? null : str;
}
var foo = yourString.NullIfEmpty() ?? "default value";
如果检查空值,可以使用?操作员a?.b?.c??“违约”。对你来说,我宁愿延期method@Seb我正在研究它,但是我的字符串不是空的,它等于“What is
a.b.c.d.string.toString()
?”?你能举个例子吗?@ChetanRanpariya我的意思是a.b.c.d
是一个引用整数的长包名,然后我必须将其转换为字符串。在OPOne中阐明的选项是,当字符串太长时,只使用别名使用shortString=my.too.long.string
如果要检查空值,可以使用?操作员a?.b?.c??“违约”。对你来说,我宁愿延期method@Seb我正在研究它,但是我的字符串不是空的,它等于“What isa.b.c.d.string.toString()
?”?你能举个例子吗?@ChetanRanpariya我的意思是a.b.c.d
是一个引用整数的长包名,然后我必须将其转换为字符串。在OPOne中阐明的选项是,当字符串太长时,只使用别名using shortString=my.too.long.string
如果str
为空,当然会抛出该命令。我更喜欢使用string.IsNullOrEmpty
我想这意味着不存在像我描述的那样的运算符。然后使用string.IsNullOrEmpty
并避免运行时异常。@如果str为null,这将避免异常:返回str?.Length==0?str:交替代码>三元运算符具有语法条件?true\u表达式:false\u表达式
——如写,答案将返回一个空字符串,如果它为空,则返回默认值。这与您想要的正好相反。当然,如果str
为空,则会抛出此错误。我更喜欢使用string.IsNullOrEmpty
我想这意味着不存在像我描述的那样的运算符。然后使用string.IsNullOrEmpty
并避免运行时异常。@如果str为null,这将避免异常:返回str?.Length==0?str:交替代码>三元运算符具有语法条件?true\u表达式:false\u表达式
——如写,答案将返回一个空字符串,如果它为空,则返回默认值。这与你想要的正好相反。