C#将T转换为long

Mik*_*sen 5 c# generics int types

我有一个泛型类(C#),

class MyClass<T> where T : struct, IComparable<T>
{
    public T filelocation;
}
Run Code Online (Sandbox Code Playgroud)

T可以是UInt32或UInt64(没有别的).

我需要将filelocation转换为long以在文件中搜索...

我尝试了以下内容

long loc = (T)myclass.filelocation;

long loc = (T)(object)myclass.filelocation;
Run Code Online (Sandbox Code Playgroud)

但似乎没有任何作用......

有任何想法吗?

SLa*_*aks 11

打电话Convert.ToInt64.

写作(object)fileLocation会创造一个盒装UInt32.
盒装值类型只能打包到原始值类型,因此您无法一步到位long.
你可以写(long)(ulong)fileLocation,但uint出于同样的原因,这将失败.