C# 将 T 转换为 long
我有一个泛型类(C#),
class MyClass<T> where T : struct, IComparable<T>
{
public T filelocation;
}
T 可以是 UInt32 或 UInt64 (没有别的)。
我需要将文件位置转换为 long 以便在文件中查找...
我已经尝试过以下方法
long loc = (T)myclass.filelocation;
long loc = (T)(object)myclass.filelocation;
但似乎没有任何效果...
有什么想法吗?
I have a generic class (C#),
class MyClass<T> where T : struct, IComparable<T>
{
public T filelocation;
}
T can be either UInt32 or UInt64 (nothing else).
I need to convert filelocation to a long to seek in a file...
I have tried the following
long loc = (T)myclass.filelocation;
long loc = (T)(object)myclass.filelocation;
But nothing seems to work...
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
调用Convert.ToInt64。
写入
(object)fileLocation
会创建一个装箱的UInt32
。装箱值类型只能拆箱到它们的值原始值类型,因此无法一步将其转换为
long
。您可以编写
(long)(ulong)fileLocation
,但出于同样的原因,对于uint
会失败。Call
Convert.ToInt64
.Writing
(object)fileLocation
creates a boxedUInt32
.Boxed value types can only be unboxed to their original value types, so you cannot cast it in one step to
long
.You could write
(long)(ulong)fileLocation
, but that will fail for auint
for the same reason.尝试Convert.ToInt64。
Try Convert.ToInt64.
您可以使用 TryParse:
You may use TryParse:
根据您的类定义,如果我写类似
myclass.fileLocation 的内容,则默认返回 long
with your class definition if i write something like
myclass.fileLocation return long by defult