C#short if语句

时间:2011-03-12 17:40:07

标签: c#

有没有办法在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);

我基本上想检查以确保变量/属性设置/不为空/存在/具有值/等等...并返回它或“”没有像上面这样的代码有些荒谬。

5 个答案:

答案 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();