我对此做了一些阅读,并且从类似的到我的问题,看起来我要问的可能不是(轻松)可能......但我想要验证无论如何。也许所有这些问题都来自旧版本的C#/ .NET,而且最近已经实现了这个问题。
反正。我的一个类中有一个switch-case语句,其目的主要是采用int(typeID
)和string(value
)并检查value
是否可以解析为typeID
指示的数据类型。例如,这是我现在拥有的一部分:
case 1:
char charret;
return char.TryParse(value, out charret);
case 2:
Regex re = new Regex(Constants.REGEX_ALPHANUMERIC);
return re.IsMatch(value);
case 3:
bool boolret;
return bool.TryParse(value, out boolret);
//And so on...
我想要做的是能够避免在案例1和案例中看到的char
/ bool
实例化。理想情况下,我想要回复声明。这显然不是什么大不了的事,但如果能让它更紧凑(甚至更紧凑),那就太好了。
答案 0 :(得分:2)
这本质上是不可能的。
作为out
参数传递的变量必须与参数类型完全匹配。
答案 1 :(得分:2)
当您使用out参数调用函数时,无法避免声明变量。
答案 2 :(得分:1)
这篇文章可能会有所帮助,因为它会使用通用的TryParse(如果可用):
http://toadcode.blogspot.com/2010/10/generic-object-tryparse.html