2012-05-20 86 views
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.setGender”)

我试过去看看它,但我仍然不知道这意味着什么。有人能帮我解决错误吗?

我正在使用C#。

+2

这可能有助于告诉我们您使用的语言。 –

+0

为什么性别无论如何都是一个结构? – harold

+2

为什么你的struct'gender'包含'gender'成员?我怀疑那部分会编译 – corn3lius

回答

13

我敢肯定你真正想要的是这样的:

public enum Gender 
{ 
    Male, Female 
} 

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

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

     } 
    } 
} 
+2

是的。我认为这是正确的。 –

1

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

另请注意,您的命名有点偏离。在C#类型中使用PascalCase,就像属性和方法一样。田野和当地人使用camelCase

3

您必须重写==操作。检查此MSDN上的链接:http://msdn.microsoft.com/en-us/library/dd183755.aspx

但是,我不明白这个代码可以完成什么。枚举在这种情况下适用,而不是结构。

+0

我知道。我刚刚回答了一个关于2个结构比较的问题。但是,在给定的代码中,这是没有意义的。 – AlexanderMP

+0

@Cicada这个答案解释了他为什么会得到一个错误。这是完全有效的。 –

相关问题