1
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; }
}

当我输入前面的代码时,我收到这个错误消息,

操作数“==”不能应用于“Life.setGender”和“Life.setGender”类型的操作数

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

我曾试图查找它,但我仍然不知道那是什么意思。有人可以帮我解决错误。

我正在使用 C#。

4

3 回答 3

13

我很确定您真正想要的是:

public enum Gender 
{
    Male, Female
}

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

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

        }
    }
}
于 2012-05-20T21:11:43.347 回答
3

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

但是,我看不到此代码可以完成什么。在这种情况下,枚举适合使用,而不是结构。

于 2012-05-20T21:12:26.087 回答
1

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

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

于 2012-05-20T21:11:21.757 回答