C#默认文字总是返回False,。Equals()

时间:2018-03-22 21:50:54

标签: c# xamarin.forms c#-7.1

如何使用默认文字比较ValueType

我试过了,但它返回_darkBlue.Equals(default)总是返回false

static Color _darkBlue;

public static Color DarkBlue => _darkBlue.Equals(default) ? (_darkBlue = Color.FromHex("2980b9")) : _darkBlue;

注意:此示例中的ColorXamarin.Forms.Color

修改:复制示例:https://github.com/brminnick/ColorEqualsRepro

1 个答案:

答案 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;