该变量已分配但即使已使用也永远不会使用?令人困惑

时间:2019-01-22 20:10:04

标签: c#

你好,我在C#上是个菜鸟,我不明白为什么说即使我正在使用它也从未使用过变量,这很清楚。

它是否不执行if陈述?

  public void SetStellplatz(Fahrzeuge Anmeldung)
    {
        bool is_pkw = false;
        bool is_motorrad = false;
        bool is_lkw = false;
        int stellplatznummer; 

        if(Anmeldung is PKW)
        {
            is_pkw = true;
            stellplatznummer = GetStellplatz(1, 199);

        } else if(Anmeldung is Motorrad)
        {
            is_motorrad = true;
            stellplatznummer = GetStellplatz(200, 399);
        } else if (Anmeldung is LKW)
        {
            is_lkw = true;
            stellplatznummer = GetStellplatz(400, 599);
        }
    }

3 个答案:

答案 0 :(得分:1)

您的if语句缺少else子句,因此不能保证在所有情况下都分配变量stellplatznummer。您可以通过包括设置变量值的else语句来解决它,或者在定义变量时将其初始化为默认值。

答案 1 :(得分:0)

您的方法没有执行任何操作,因为所有变量都具有局部作用域。您的方法等效于:

public void SetStellplatz(Fahrzeuge Anmeldung)
{
    if (Anmeldung is PKW)
        GetStellplatz(1, 199);
    else if (Anmeldung is Motorrad)
        GetStellplatz(200, 399);
    else if (Anmeldung is LKW)
        GetStellplatz(400, 599);
}

似乎其中一些变量应该是类字段或可能是属性。

// Private Field
private bool is_pkw = false;

// Public Property
public bool is_motorrad { get; set; } = false;

public void SetStellplatz(Fahrzeuge Anmeldung)
{
    // if some condition
    is_pkw = true;

    // if some other condition
    is_motorrad = true;
}

答案 2 :(得分:0)

您可以在该方法中创建变量stellplatznummer,该方法完成后,该变量将被销毁,因为该变量仅用于该方法,并且您永远不会返回它。

尝试说出您想使用哪种方法。

    public int stellplatznummer; 
    public bool is_pkw = false;
    public bool is_motorrad = false;
    public bool is_lkw = false;

     public void SetStellplatz(Fahrzeuge Anmeldung)
    {



        if(Anmeldung is PKW)
        {
            is_pkw = true;
            stellplatznummer = GetStellplatz(1, 199);

        } else if(Anmeldung is Motorrad)
        {
            is_motorrad = true;
            stellplatznummer = GetStellplatz(200, 399);
        } else if (Anmeldung is LKW)
        {
            is_lkw = true;
            stellplatznummer = GetStellplatz(400, 599);
        }
    }

如果SetStellplatz方法将stellplatznummer设置为数字,则要在哪里使用它。您将如何使用该号码。并且请给出,因为Anmeldung的代码可能会有所帮助。

此外,我不理解您的语言,但有可能您不需要使用SetStellplatz的方法。