这是一个不是真正问题的事情,如果这是一个愚蠢的问题我很抱歉,但这只是我很好奇的事情.假设我想将字符串参数解析为整数(如果字符串不为null),否则将整数设置为-1.有没有更好的方法来写这个声明:
int id = context.Request["Id"] == null ? -1 : int.Parse(context.Request["Id"]);
Run Code Online (Sandbox Code Playgroud)
只是评估字符串以查看它是否为null然后再次评估它以解析它似乎很麻烦.现在我考虑一下,如果对象属性不为null,它就会产生对象并访问对象属性.所以类似于:
int id = person == null ? -1 : person.id;
Run Code Online (Sandbox Code Playgroud)
这是公认的做法吗?
Mar*_*ers 11
对于第一个示例,您可以使用null合并运算符:
int id = int.Parse(context.Request["Id"] ?? "-1");
Run Code Online (Sandbox Code Playgroud)
如果存在一个空的安全解除引用运算符 但是因为它在C#中不存在,那么第二个例子可以得到改进,你的方法很好:
int id = person == null ? -1 : person.Id;
Run Code Online (Sandbox Code Playgroud)