Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-一种更有效的三元算子_C#_Ternary - Fatal编程技术网

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 is
a.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表达式
——如写,答案将返回一个空字符串,如果它为空,则返回默认值。这与你想要的正好相反。