操作数'=='不能应用于类型(struct)的操作数

时间:2012-05-20 20:56:50

标签: c# struct equals-operator operands

public class Human
{
    public setGender Gender { get; set; }

    public void setHeight(Human Person)
    {
        if (Person.Gender == setGender.Male) // <-- This is where the error is.
        {

        }
    }
}

public struct setGender
{
    public static setGender Male { get; set; }
    public static setGender Female { get; set; }
}

当我输入上述代码时,我收到此错误,

  

operand'=='无法应用于'Life.setGender'类型的操作数   和'Life.setGender'

(顺便说一句,命名空间是“生命”。这就是为什么它是'Life.setGender')

我曾试图查一查,但我仍然不知道这意味着什么。有人可以帮我解决错误。

我正在使用C#。

3 个答案:

答案 0 :(得分:13)

我很确定你真正想要的是这个:

public enum Gender 
{
    Male, Female
}

public class Human
{
    public Gender Gender { get; set; }

    public void setHeight(Human person)
    {
        if (person.Gender == Gender.Male)
        {

        }
    }
}

答案 1 :(得分:3)

您必须覆盖==运算符。在MSDN上查看此链接:http://msdn.microsoft.com/en-us/library/dd183755.aspx

但是我看不出这段代码可以实现什么。在这种情况下,枚举适合使用,而不是结构。

答案 2 :(得分:1)

您正在尝试访问该类的实例属性。在这种情况下,您可能需要Person.Gender == Gender.Male

另请注意,您的命名有点偏差。在C#类型中使用PascalCase,属性和方法也是如此。字段和本地人使用camelCase