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 に答える