在C#中有什么好的语法"如果foo不为null,则返回它的属性,否则返回null"

Dav*_*ave 3 c# c#-4.0

在我的下面的小代码片段中,我有一个简单动态对象的包装类,当它不为null时,我可以访问"id"和"name"这两个属性.对于那些在家里玩的人来说,这是一个Facebook对象.

无论如何,在我的GET访问器中你可以看到我必须检查我给出的动态对象是否为null,因为在空引用上引用动态属性将是AV.但是因为我可能是第一百万个人,所以我认为有一种更简洁和优雅的方式来表达这一点.

哦,强大的圣贤啊,请赐教.谢谢!

public class IdNamePair
{
    private dynamic _data;
    public IdNamePair(dynamic data)
    {
        _data = data;
    }
    public string Id
    {
        get
        {
            return (_data == null) ? null : _data.id;
        }
    }
    public string Name
    {
        get
        {
            return (_data == null) ? null :_data.name;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

slu*_*ter 6

你做了什么没有错,我唯一要做的就是放下括号并改变评价:

return _data != null ? _data.name : null;
Run Code Online (Sandbox Code Playgroud)

这样做只是(IMVHO)稍微容易阅读,但基本上与你的相同.

  • @RobotWoods:在C#中有必要使用`!=`.否则,C#不会接受它作为布尔表达式,并且会引发编译错误. (3认同)
  • @Robot:不,在C#中没有从引用类型到bool的自动转换.您可能正在考虑C/C++指向bool,它更像是指向整数的指针,如果非零则为true,如果为零则为false. (3认同)