如何使用默认文字比较ValueType
?
我试过了,但它返回_darkBlue.Equals(default)
总是返回false
:
static Color _darkBlue;
public static Color DarkBlue => _darkBlue.Equals(default) ? (_darkBlue = Color.FromHex("2980b9")) : _darkBlue;
注意:此示例中的Color
为Xamarin.Forms.Color
答案 0 :(得分:0)
原来问题在于.Equals
。编译器将.Equals(default)
解释为.Equals(default(object))
。
将.Equals
更改为==
解决了问题。
public static Color DarkBlue => _darkBlue == default ? (_darkBlue = Color.FromHex("2980b9")) : _darkBlue;
另一种解决方案是使用.Equals(default(Color))
public static Color DarkBlue => _darkBlue.Equals(default(Color)) ? (_darkBlue = Color.FromHex("2980b9")) : _darkBlue;
另一种解决方案,使用Color.IsDefault
public static Color DarkBlue => _darkBlue.IsDefault ? (_darkBlue = Color.FromHex("2980b9")) : _darkBlue;