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

If int value equal to x replace with a string

我在 schadstoffklasse 中存储了一个整数,所以当像这样调用 Car 对象时(括号中的最后一个整数): 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;
        }
    }

感谢您对初学者的耐心等待

您不能有 属性 return 混合类型。 Schadstoffklasse 的 属性 是一个 int,因此它只能 return 一个 int 而不是字符串。

虽然有多种不同的方法可以实现这一点,但如果不了解您如何使用它,就不可能说出您应该使用哪一种。我会推荐另一个没有 setter 的 属性,getter 查看另一个 属性,读取它的值,然后 returns 字符串想要或做同样的方法。

扩展我的建议:

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

另外,很抱歉伤害了德国人。

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

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

并使用 schadstoffklasse 的值作为索引

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

试试这个

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

Note: The explain from user @gilliduck is useful. Consider this just as a situational workaround.

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