Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 用C#跟踪我在这段代码中的错误?_C# 4.0 - Fatal编程技术网

C# 4.0 用C#跟踪我在这段代码中的错误?

C# 4.0 用C#跟踪我在这段代码中的错误?,c#-4.0,C# 4.0,我只想使用switch语句,而不是下面的注释行。 如果默认值为整数 所以这里我的代码不起作用,请确认我的错误 ParameterInfo[] pif = m.GetParameters(); foreach (ParameterInfo p in pif) { string ParamType = p.ParameterType.ToString(); string ConvPType = ConvertToShortForm(ParamType); if (p.IsOu

我只想使用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 += @"""" + @"""";

您应该使用
p.DefaultValue.ToString()
,以便在switch语句中使用
optional\u value
作为表达式


MSDN表示switch语句中的表达式应为整型或
string
型。您传递了类型为
object
的表达式。这是您的错误。

所以注释的行是正确的,并且可以工作,您想要重构它们?错误在哪里,错误是什么?这里我想使用开关而不是注释的行。这里p.DefaultValue是一种对象类型。但是对于使用开关,我已经转换为ToString().但它向我显示了无法转换为字符串类型的错误。p.DefaultValue中的值是多少。在转换为ToString()之前,请检查是否存在此问题,如果其为对象类型,则可以使用convert.ToString()对吗?