Operand '==' не может быть применен к операндам типа (структура)

StackOverflow https://stackoverflow.com//questions/10677142

Вопрос

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 #.

Это было полезно?

Решение

Я уверен, что вы действительно хотите, это:

public enum Gender 
{
    Male, Female
}

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

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

        }
    }
}
.

Другие советы

Вы должны переопределить оператор ==.Проверьте эту ссылку на MSDN: http://msdn.microsoft.com/en-us/library/ddd183755.aspx

Однако я не вижу, что можно достичь с этим кодом.Enums будет целесообразно использовать в этом случае, а не структурирует.

Вы пытаетесь получить доступ к свойству экземпляра в классе.Вы можете захотеть генеракодицетагкод в этом случае.

Также обратите внимание, что ваше наименование немного выключено.В типах C # используйте Person.Gender == Gender.Male, как и свойства и методы.Поля и местные жители используют PascalCase.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top