gpt4 book ai didi

c# - 如何修复开关运算符中的错误

转载 作者:太空宇宙 更新时间:2023-11-03 18:12:51 26 4
gpt4 key购买 nike

我有一个名为 config 的类,其中包含两个名为 key paramValue 和 parameterPath 的字符串字段。

当我应用类的 ChooseType 方法时,该方法必须返回一个不同类型(Int 或 bool 或 String)的变量 paramValue。

我是这样实现的:

class ConfigValue
{
public string parameterPath;
private string paramValue;

public ConfigValue(string ParameterPath="empty",string ParamValue="empty")
{
this.parameterPath = ParameterPath;
this.paramValue = ParameterPath;
}

public enum RetType { RetInt=1, RetBool, RetString };



public T ChooseType<T>(RetType how)
{

{

switch(how)
{
case RetType.RetInt:

return int.Parse(string this.paramValue);
break;

case RetType.RetBool:

return Boolean.Parse(string this.paramValue);
break;

case RetType.RetString:

return this.paramValue;
break;
}

}
}

}

但是,我在下一行的 switch 运算符中遇到错误:

 return int.Parse(string this.paramValue);

错误:

Only assignment, call, increment, decrement, and new object expressions can be used as a statement.

 return  Boolean.Parse(string this.paramValue);

错误:

Invalid expression term 'string'.

 return this.paramValue;

错误:

Cannot implicitly convert type 'string' to 'T'.

知道为什么会出现这些错误以及如何修复代码吗?

最佳答案

Any idea why do I get these errors?

编译器不知道 T 是什么,也不知道如何从 stringboolintT

and how can I fix the code?

您可以显式转换为 object,然后再转换为 T:

return (T) (object) int.Parse(string this.paramValue);

“通过”object 的要求有点奇怪 - Eric Lippert 有一个 blog post going through this in more detail .

关于c# - 如何修复开关运算符中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11503716/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com