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;

注:本例中的ColorXamarin.Forms.Color

编辑:复制样本:https://github.com/brminnick/ColorEqualsRepro

原来问题出在 .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;