C# 4.0 用C#跟踪我在这段代码中的错误?
我只想使用switch语句,而不是下面的注释行。 如果默认值为整数 所以这里我的代码不起作用,请确认我的错误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
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()对吗?