2012-05-20 114 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這個答案解釋了他爲什麼會得到一個錯誤。這是完全有效的。 –

相關問題