Если значение int равно x, заменить на строку - PullRequest
0 голосов
/ 20 января 2019

Я храню int в schadstoffklasse, поэтому при вызове объекта Car следующим образом (последний int в скобках): PKW Kaefer = new PKW("VW", "Käfer", "K-GS-01", 1965, 9999, 1000, 30, 1); Я могу сказать 0, 1, 2. Теперь, когда я пишу это Console.WriteLine(Kaefer.Schadstoffklasse) вв этом случае утешительно выводит 1.

Я хочу, чтобы он не сказал 1, например, хочу ....

0 = foo 1 = bar 2 = foobar

Таким образом, он выводит на консоль строку.

Вот то, что я пробовал, но это не работает.

private int schadstoffklasse;

    public int Schadstoffklasse
    {
        get
        {
            return schadstoffklasse;
        }
        set
        {
            if (value == 0)
            {
                string foo = value.ToString();
                foo = "BLABLALBA";

            }

            schadstoffklasse = value;
        }
    }

Спасибо, что проявили терпение к новичку

Ответы [ 4 ]

0 голосов
/ 20 января 2019

Я нахожу enum полезным в подобных ситуациях, поскольку это набор именованных целых чисел.Это один из примеров того, как я мог бы справиться с этим.

void Main()
{
    var Kaefer = new PKW("VW", "Käfer", "K-GS-01", 1965, 9999, 1000, 30, Schadstoffklassen.Bar);
    Console.WriteLine(Enum.GetName(typeof(Schadstoffklassen), Kaefer.Schadstoffklasse));
    // Output: Bar
}

public class PKW
{
    private Schadstoffklassen schadstoffklasse;

    public PKW(string v1, string v2, string v3, int v4, int v5, int v6, int v7, Schadstoffklassen _schadstoffklasse) {
        schadstoffklasse = _schadstoffklasse;
    }

    public Schadstoffklassen Schadstoffklasse
    {
        get { return schadstoffklasse; }
        set { schadstoffklasse = value; }
    }
}

public enum Schadstoffklassen {
    Foo = 0,
    Bar = 1,
    FooBar = 2
}
0 голосов
/ 20 января 2019

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

["foo","bar","foobar"]

и использовал бы значение schadstoffklasse в качестве индекса

Console.WriteLine(Kaefer.myArray[Schadstoffklasse]);
0 голосов
/ 20 января 2019

Попробуйте это

private int schadstoffklasse;
public object Schadstoffklasse
    {
        get
        {
         if(this.schadstoffklasse==0)
             return "foo";
         if(this.schadstoffklasse==1)
             return "bar";
         if(this.schadstoffklasse==2)
             return "foobar";
         return "N/A";
        }
        set
        {
            this.schadstoffklasse=(int)value;
        }
    }

Примечание: объяснение от пользователя @gilliduck полезно.Рассматривайте это как ситуативный обходной путь.

0 голосов
/ 20 января 2019

У вас не может быть свойства, возвращающего смешанные типы. Ваше свойство Schadstoffklasse является int, поэтому оно может только когда-либо возвращать int, а не строку.

Существует множество различных способов сделать это, но, не зная больше о том, как вы используете это, было бы невозможно сказать, какой из них вы должны сделать. Я бы порекомендовал либо другое свойство, которое не имеет установщика, а получатель просматривает другое свойство, считывает его значение и возвращает желаемую строку или метод, который делает то же самое.

Чтобы расширить мое предложение:

public enum SchadstofklasseStrings
{
    foo = 0,
    bar = 1,
    foobar = 2
}

public int Schadstoffklasse { get; set; }
public string SchadstoffklasseToString { 
{
    get
    {
        var stringValue = (SchadstofklasseStrings) Schadstoffklasse;
        return stringValue.ToString();
     }
}

Также извините за нанесение увечий немцу.

...