C# 默认文字总是返回 False,.Equals()
C# Default Literal Always Returning False, .Equals()
如何使用默认文字比较 ValueType
?
我试过了,但是 returns _darkBlue.Equals(default)
总是 returns false
:
static Color _darkBlue;
public static Color DarkBlue => _darkBlue.Equals(default) ? (_darkBlue = Color.FromHex("2980b9")) : _darkBlue;
注:本例中的Color
为Xamarin.Forms.Color
原来问题出在 .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;
如何使用默认文字比较 ValueType
?
我试过了,但是 returns _darkBlue.Equals(default)
总是 returns false
:
static Color _darkBlue;
public static Color DarkBlue => _darkBlue.Equals(default) ? (_darkBlue = Color.FromHex("2980b9")) : _darkBlue;
注:本例中的Color
为Xamarin.Forms.Color
原来问题出在 .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;