나는 목록에서 System.Management.ManagementObjectCollection
인 항목을 조작하고 있습니다. 각 항목은 문자열로 인덱싱 된 속성을 포함하는 System.Management.ManagementObject
입니다. 나는 사전에 자신의 "진짜"유형을 알고 있고, 그 괜찮아요 - queryObj
에System.Object에서 ushort를 가져 와서 왜 그것을 Uint로 변환 할 수 없습니까? (C#)
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"];
...
...
...
}
각 "사전 액세스"속성이 있어야하는데 어떤 사실에있는 C# object
을 반환 참조하십시오.
문제는 uint
캐스트에 InvalidCastException
이 표시됩니다. 나는 실제 타입 인 ushort
을 사용해야한다. ushort
에서 uint
까지 캐스트를 허용해서는 안됩니까?
, 나는 결국 string
에 값을 변환,하지만 뭐 내가 uint
또는 int
또는 long
변수로 얻을해야한다면?
. 바로 기억할 수있는 것은 int에 기본 "int"유형이있는 열거 형을 unbox 할 수 있고 그 반대도 가능하다는 것입니다. 내가 처음 그것을 보았을 때 나는 가장 놀랐다. –
하하, 놀라 울 정도예요 :-) 또한 Eric은 Nullable에 캐스팅 할 수 있다는 또 다른 예외를 언급했습니다. –
Jon, 아마도 여기에 이해가 부족함을 보여주고 있지만 Enums는 박스에 들어 있나요? 그들이 그렇지 않다면 나는 박스형에만 적용되기 때문에이 규칙에 위배되지 않는다고 말하고 싶습니다. –