如何在C#中自动转换变量?

Moh*_*kar 3 .net c# vb.net

这是一个例子.

var tobeCasted = 1;
object data = null;

if (whatIsMyType == typeof(int)) {
    data = (int)tobeCasted;
}
else if (whatIsMyType == typeof(float)) {
    data = (float)tobeCasted;
}
Run Code Online (Sandbox Code Playgroud)

但是,上述代码是手动检测每种数据类型的.我正在寻找一个如下所示的一线通用解决方案:

 data = (whatIsMyType)tobeCasted;
Run Code Online (Sandbox Code Playgroud)

Eri*_*ert 13

使用该Convert.ChangeType方法.该Convert课程的文件在这里; 它包含许多用于运行时类型强制的有用方法.

http://msdn.microsoft.com/library/system.convert.aspx

也就是说,尽可能避免这种情况.这种运行时输入可以被认为是一种糟糕的代码味道.

  • Jon被42秒击败.:-) (8认同)
  • 你不必担心.任何被42秒击败的人都没有得到任何支持.+1包括文档和警告. (2认同)

Jon*_*eet 11

在这种特殊情况下,我认为你想Convert.ChangeType:

object data = Convert.ChangeType(toBeCasted, whatIsMyType);
Run Code Online (Sandbox Code Playgroud)

当然,这只适用于有限的一组类型 - 但首先是铸造.如果您可以告诉我们更多关于您尝试做什么的信息,那将会很有帮助.可能有更好的方法.

  • @Servy:在给出的确切情况下,它会很有用 - 因为当`whatIsMyType`是`float`时,它最终会给出一个盒装浮点数,**看起来像是想要的.所以我不同意你对"绝对零生产工作"的评价. (2认同)
  • @Mahdi - 考虑为发现此问题的其他人提供有关您的目标的更多信息,以便更好地帮助他们. (2认同)