gpt4 book ai didi

C#:使用泛型将对象转换为无符号数字类型

转载 作者:行者123 更新时间:2023-11-30 18:58:14 29 4
gpt4 key购买 nike

我正在尝试编写一些代码以将数据从对象类型字段(来自数据集)转换为目标(类型化)字段。我正在做(至少尝试)它使用动态转换。它似乎适用于字符串、int、DateTime。

但它不适用于无符号类型(ulong、uint)。下面有一个简单的代码,显示了我想要做什么。如果将 ul var 类型从 ulong 更改为 int,它工作正常。

有人知道吗?

public class console
{

public static void CastIt<T>(object value, out T target)
{
target = (T) value;
}

public static void Main()
{
ulong ul;
string str;
int i;
DateTime dt;

object ul_o = (object) 2;
object str_o = (object) "This is a string";
object i_o = (object)1;
object dt_o = (object) DateTime.Now;

Console.WriteLine("Cast");

CastIt(ul_o, out ul);
CastIt(str_o, out str);
CastIt(i_o, out i);
CastIt(dt_o, out dt);

Console.WriteLine(ul);
Console.WriteLine(str);
Console.WriteLine(i);
Console.WriteLine(dt.ToString());
}

}

最佳答案

正如 Andrew 所说,问题是您无法从装箱的 int 中拆箱至 ulong .

两种选择:

1) 方框 a ulong相反:

object ul_o = (object) 2UL;

ulong tmp = 2;
object ul_o = tmp;

2) 制作CastIt<T>使用 Convert.ChangeType :

public static void CastIt<T>(object value, out T target)
{
target = (T) Convert.ChangeType(value, typeof(T));
}

这有点臭,但适用于您的示例代码。如果你能在你的实际代码中使用第一种方式,那就更好了。

关于C#:使用泛型将对象转换为无符号数字类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/773971/

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