gpt4 book ai didi

c# - ?? system.DBNull 中的运算符

转载 作者:行者123 更新时间:2023-11-30 21:14:03 26 4
gpt4 key购买 nike

是否有运算符或内置函数来简化此操作:

myVal = object1.object2.something(a,b).dataColumn.toString()==""?object1.object2.something(a,b).dataColumn.toString():"-";

我知道我可以做类似的事情:

string str = object1.object2.something(a,b).dataColumn.toString();
myVal =str==""?"-":str;

但我有很多对象,我想避免它:

string str1 = object1.object2.something(a,b).dataColumn1.toString();
myVal1==""?str1:"-"
string str2 = object1.object2.something(a,b).dataColumn2.toString();
myVal2==""?str2:"-"
:
string strN = object1.object2.something(a,b).dataColumnN.toString();
myValN==""?strN:"-"

我还可以创建一个函数:

private string CheckNull(object dataColumn){
return dataColumn == System.DBNull?"-":dataColumn.toString();
}

myVal1 = CheckNull(object1.object2.something1(a,b).dataColumn.toString())
myVal2 = CheckNull(object1.object2.something2(a,b).dataColumn.toString())
myVal3 = CheckNull(object1.object2.something3(a,b).dataColumn.toString())

最简单的方法是使用 ??运算符,但问题是“dataColumn”与 ?? 不兼容因为有时会返回 system.DBNull 而不是 null。查看即时窗口输出:

System.DBNull??"-"
'System.DBNull' is a 'type', which is not valid in the given context
null??"-"
"-"

我想知道是否有一些(字符串)函数或运算符可以在没有 if..then 的情况下返回“-”if dataColumn.toString()==""(因为我必须为 if..then 做很多所有这些。否则我宁愿使用上面显示的函数方法。

string str = object1.object2.something(a,b).dataColumn.toString().if("","-");

最佳答案

怎么样:

public static class StringHelper {
public static string ValueOrDash(this string value) {
return string.IsNullOrEmpty(value) ? "-" : value;
}
}

然后你可以这样做:

myVal = object1.object2.something(a,b).DataColumn.ToString().ValueOrDash();

或者更好的是:

public static class StringHelper {
public static string ValueOrWhatever(this string value, string defaultValue) {
return string.IsNullOrEmpty(value) ? defaultValue : value;
}
}

myVal = object1.object2.something(a,b).DataColumn.ToString().ValueOrWhatever("-");

关于c# - ?? system.DBNull 中的运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6473026/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com