跟踪我在C#中的代码片段中的错误?

时间:2010-10-12 11:20:49

标签: c#-4.0

我只想使用switch语句而不是下面的注释行。 如果默认值是整数。

所以这里我的代码无效,请找出我的错误。

ParameterInfo[] pif = m.GetParameters();
foreach (ParameterInfo p in pif) {
    string ParamType = p.ParameterType.ToString();
    string ConvPType = ConvertToShortForm(ParamType);
    if (p.IsOut)
        ConvPType = ConvPType.Replace("ref", "out");
    strMethodName += ConvPType;
    strMethodName += " ";
    strMethodName += p.Name;

    if (p.IsOptional) {
        var optional_value = p.DefaultValue;
        switch (optional_value) {
            case "":
                strMethodName += @"""" + @"""";
                break;
            case null:
                strMethodName = strMethodName + "=" + "null";
                break;
            case "False":
                strMethodName += " = " + p.DefaultValue.ToString().ToLower();
                break;
            default: strMethodName += ", ";
                break;
        }
    //...
    }
//...
}

注释行:

//if (p.DefaultValue != null)
//    strMethodName += " = " + p.DefaultValue.ToString().ToLower();
//if (p.DefaultValue == null)
//    strMethodName = strMethodName + "=" + "null";
//if (strMethodName.EndsWith("= "))
//    strMethodName += @"""" + @"""";

1 个答案:

答案 0 :(得分:1)

您应该使用p.DefaultValue.ToString()以便在switch语句中使用optional_value作为表达式。

MSDN说switch语句中的表达式应该是整数类型或string类型。您传递了object类型的表达式。你错了。