使用未分配的局部变量'totalroadtax'

Teo*_*yan 0 c# methods asmx

我正在尝试为我的网络服务创建一个方法,但我收到标题中列出的此错误

使用未分配的局部变量'totalroadtax'

这就是用户必须输入2个不同的变量来触发web方法中的方法

[WebMethod]
public double RoadTax(int engineCapacity, int vehicleAge)
{
    double totalroadtax;

    if (engineCapacity.Equals("600") && vehicleAge.Equals("12"))
    {
        totalroadtax = ((200.00 * 0.782) * (1.10));
    }

    return totalroadtax;
    //return (engineCapacity - vehicleAge);
}
Run Code Online (Sandbox Code Playgroud)

我在我的方法中声明了我的totalroadtax,输入了一些caluclation方法并返回值.我检查了有关此方法的必要信息,但我仍然收到错误.我在这里留下了什么吗?

xxb*_*bcc 5

if可跳过(如果条件是假的),你就回来totalroadtax.该变量未在该点初始化,因为您声明它没有初始值.

您应该使用一些初始值声明变量,例如:

double totalroadtax = 0;
Run Code Online (Sandbox Code Playgroud)

编辑:

您的代码不必要地将int值与string文字进行比较.以这种方式执行条件更干净,更有效:

[WebMethod]
public double RoadTax(int engineCapacity, int vehicleAge)
{
    double totalroadtax = 0;

    if (engineCapacity == 600 && vehicleAge ==12)
    {
        totalroadtax = ((200.00 * 0.782) * (1.10));
    }

    return totalroadtax;
}
Run Code Online (Sandbox Code Playgroud)

无需调用Equals()- ==操作员读取更好,并执行类型安全检查.

我还建议您不要对浮点值执行直接相等性检查.而不是使用==,你应该真正检查像:

if ( (engineCapacity >599.9999 && engineCapacity < 600.00001) && ...
Run Code Online (Sandbox Code Playgroud)

这是因为浮点值不是分数的精确表示.

阅读此问题了解更多详情.