如果int值等于x,则替换为字符串

时间:2019-01-20 16:33:27

标签: c# getter-setter

我将一个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。

例如,我确实不想让我说...。

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 :(得分:1)

您不能让属性返回混合类型。 Schadstoffklasse的属性是int,因此它只能返回int,而不能返回字符串。

尽管有很多不同的方法可以完成此操作,但是如果不了解您如何使用此功能,就不可能说出应该执行哪种操作。我建议您使用另一个没有setter的属性,而getter会查看另一个属性,读取它的值并返回您想要的字符串,或者这样做的方法。

根据我的建议进行扩展:

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();
     }
}

也很抱歉,肢解了德国人。

答案 1 :(得分:0)

您不能将变量的类型从int更改为string。 在这种情况下,我将创建一个数组

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

并使用schadstoffklasse的值作为索引

Console.WriteLine(Kaefer.myArray[Schadstoffklasse]);

答案 2 :(得分:0)

尝试一下

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的解释很有用。考虑一下   作为一种情况下的解决方法。

答案 3 :(得分:0)

我发现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
}