有没有办法在C#中执行此操作而不为每个var类型设置重载的新方法?
$box = !empty($toy) : $toy ? "";
我能想到的唯一方法是:
if (toy != null)
{
box += toy;
}
或者这个:
public string emptyFilter(string s) ...
public int emptyFilter(int i) ...
public bool emptyFilter(bool b) ...
public object emptyFilter(object o)
{
try
{
if (o != null)
{
return o.ToString();
}
else
{
return "";
}
}
catch (Exception ex)
{
return "exception thrown":
}
}
box += this.emptyFilter(toy);
我基本上想检查以确保变量/属性设置/不为空/存在/具有值/等等...并返回它或“”没有像上面这样的代码有些荒谬。
答案 0 :(得分:18)
您可以使用conditional operator (?:
):
string box = (toy != null) ? toy.ToString() : "";
答案 1 :(得分:10)
return variable ?? default_value;
你想要的是什么?考虑到你正在展示PHP代码并用C#标记它,我有点困惑。
您还可以使用Nullable<T>
类型。
扩展课程怎么样?
public static class ToStringExtender
{
public static String ToStringExt(this Object myObj)
{
return myObj != null ? myObj.ToString() : String.Empty;
}
}
var myobject = foo.ToStringExt()
<强> DEMO 强>
答案 2 :(得分:1)
我不确定他想要什么,但是:
string str = String.Empty;
str += true;
str += 5;
str += new object();
str += null;
这是完全合法的。对于每一个adition,将调用ToString()
。对于null,根本不会添加任何内容。
最后str的值:True5System.Object
答案 3 :(得分:0)
或,
var s = (toy?? "").ToString();
或
var s = (toy?? string.Empty).ToString();
答案 4 :(得分:0)
我认为对如何使用var可能存在轻微的误解;但这是一个单独的主题。 也许下面的内容会有所帮助:
box += (toy ?? "").ToString();