我正在寻找用于在null情况下提供默认值的漂亮语法。我已经习惯在Java中使用Optional&而不是null,并且想知道C#的更好的可空类型是否具有等价?
自选
Optional<String> x = Optional<String>.absent();
String y = x.orElse("NeedToCheckforNull"); //y = NeedToCheckforNull
@nullable
String x = null;
String y = x == null ? "NeedToCheckforNull" : x ; //y = NeedToCheckforNull
如何在C#中使上述内容更具可读性?
Javascript允许y = x | &#34; NeedToCheckforNull&#34;
答案 0 :(得分:8)
您可以使用??
运算符。
您的代码将更新为:
string x = null;
string y = x ?? "NeedToCheckforNull";
请参阅:https://msdn.microsoft.com/en-us/library/ms173224(v=vs.100).aspx
答案 1 :(得分:4)
c#具有特殊的Nullabel<>
类型,可以用作int?
decimal?
等,
这些可以通过使用提供默认值
.GetValueOrDefault()
T GetValueOrDefault(T defaultValue)
,
并且??
也适用于像上面的anwsers这样的可空类型。
string x = null;
Console.WriteLine(x ?? "NeedToCheckforNull");
答案 2 :(得分:1)
我已经创建了自己的
public class Optional<T> {
private T value;
public bool IsPresent { get; private set; } = false;
private Optional() { }
public static Optional<T> Empty() {
return new Optional<T>();
}
public static Optional<T> Of(T value) {
Optional<T> obj = new Optional<T>();
obj.Set(value);
return obj;
}
public void Set(T value) {
this.value = value;
IsPresent = true;
}
public T Get() {
return value;
}
}
答案 3 :(得分:0)
考虑使用language extensions选项类型
int x = optional.IfNone("NeedToCheckforNull");