C#将T转换为long
我有一个通用类(C#) 但似乎什么都不管用C#将T转换为long,c#,generics,types,int,C#,Generics,Types,Int,我有一个通用类(C#) 但似乎什么都不管用 有什么想法吗?打电话给Convert.ToInt64 写入(对象)文件位置将创建一个装箱的UInt32 ,因此不能一步将其强制转换为long 您可以编写(long)(ulong)fileLocation,但出于同样的原因,对于uint,该操作将失败。您可以使用TryParse: long lng; int testNum = 55; long.TryParse(testNum.ToString(),out lng); 试试看 如果我写的是 publi
有什么想法吗?打电话给
Convert.ToInt64
写入(对象)文件位置
将创建一个装箱的UInt32
,因此不能一步将其强制转换为
long
您可以编写
(long)(ulong)fileLocation
,但出于同样的原因,对于uint
,该操作将失败。您可以使用TryParse:
long lng;
int testNum = 55;
long.TryParse(testNum.ToString(),out lng);
试试看
如果我写的是
public MyClass<long> myclass = new MyClass<long>();
public long returnLong()
{
return myclass.filelocation;
}
public MyClass MyClass=new MyClass();
公众长时间返回长时间()
{
返回myclass.filelocation;
}
myclass.fileLocation返回long by defult需要一个字符串作为输入参数,而不是
UInt32
或UInt64
,即它不会编译!同样,该类应该有一个IConvertible
constraint@Broken:否Convert.ToInt64
接受一个对象
。然而,你是对的;它应该有这样的限制。我最终把所有的东西都改写成了非泛型。因为T只能是两个值中的一个,所以我在其中放了一些if语句,在重要的地方。。。但这是我重写之前的路线。如果你有一个泛型类/方法,它只接受uint或ulong,那么你可能滥用或误用泛型。泛型应该是泛型的。为什么不让一个非泛型类接受一个ulong呢?uint将自动转换为ulong。我正在使用PST文件格式。它有两种格式,ANSI(UInt32)和UNICODE(UInt64)。我这样做是为了(希望)减少代码duplication@Eric我走了你的路线。我把它改写成非一般性的。
long lng;
int testNum = 55;
long.TryParse(testNum.ToString(),out lng);
long loc = Convert.ToInt64(myclass.filelocation);
public MyClass<long> myclass = new MyClass<long>();
public long returnLong()
{
return myclass.filelocation;
}