作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个解析字符串并将结果转换为通用类型的方法。
例如(伪代码):
let S be a string.. and Value my generic type
if (generictype == int) Value = int.parse(S);
else if (generictype == float) Value = float.parse(S);
问题是我什至无法让 Actor 工作:
T Value;
if (typeof(T) == typeof(float))
{
var A = 1.0f;
Value = A // doesn't compile
Value = A as T; // doesn't compile
Value = (T)A; // doesn't compile
}
我不明白的是,在这段代码中我们知道 T 是一个 float ,但我不能给它写一个 float 。
目标是从字符串中解析不同类型的数字。在每种情况下,我都知道类型,所以不存在处理传递错误类型等的问题。
我想看看我是否可以有一个单一的方法,用通用的而不是几个。
我能做到:
Value = ParseInt(S);
Value = ParseFloat(S);
etc...
但我正在尝试做:
Value = Parse<int>(S);
Value = Parse<float>(S);
etc...
再一次,“值”的类型与作为泛型传递的类型之间不存在不匹配的问题。
我可以创建一个泛型类并覆盖执行解析的方法,但我认为可能有一种方法可以在单个方法中完成。
最佳答案
这将编译并将结果转换为 T
:
Value = (T)(object)A;
关于C#:从泛型到值类型的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34832017/
我是一名优秀的程序员,十分优秀!