gpt4 book ai didi

c# - 为什么我不能从 System.Object 中提取一个 ushort,然后将其转换为一个 uint? (C#)

转载 作者:行者123 更新时间:2023-11-30 13:10:11 24 4
gpt4 key购买 nike

我正在操作列表中的项目,该列表是 System.Management.ManagementObjectCollection。其中每一项都是一个 System.Management.ManagementObject,其中包含由字符串索引的属性。见:

foreach (ManagementObject queryObj in searcher.Get())
{
string osversion = (string)queryObj["Version"];
string os = (string)queryObj["Name"];
uint spmajor = (uint)queryObj["ServicePackMajorVersion"];
uint spminor = (uint)queryObj["ServicePackMinorVersion"];
...
...
...
}

queryObj 的每个“字典访问”都会返回一个 C# object,它实际上是属性应该是什么——我必须知道它们的“真实”类型事先,没关系。

问题是,我在 uint 转换中得到了一个 InvalidCastException。我必须使用真实类型,即 ushort。从 ushortuint 的转换不应该是可以接受的和明显的吗?

在这种情况下,我最终会将值转换为 string,但如果我必须将它们转换为 uintint 怎么办?或 long 变量?

最佳答案

您正在尝试拆箱一个 ushort,它只能被拆箱为一个 ushort。

一旦你打开它,你就可以像往常一样施放它。

任何类型 T 的装箱值只能被拆箱为 T(或 Nullable)。

Eric Lippert 写了一篇关于这件事的非常好的博文 here .

关于c# - 为什么我不能从 System.Object 中提取一个 ushort,然后将其转换为一个 uint? (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1080945/

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