gpt4 book ai didi

C#:从泛型到值类型的转换

转载 作者:行者123 更新时间:2023-11-30 16:50:36 25 4
gpt4 key购买 nike

我有一个解析字符串并将结果转换为通用类型的方法。
例如(伪代码):

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/

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