你可以在c#中将对象强制转换为长对象吗?

Bla*_*man 4 c# asp.net generics

我使用泛型属性从Session中提取"long"值,然后崩溃了.

所以我有:

public static T Get<T>(string key)
{
    if(...)
        return (T)System.Web.HttpContext.Current.Session[key];

    ...
}
Run Code Online (Sandbox Code Playgroud)

调试时,值为4,崩溃.

Phi*_*ert 9

如果您坚持保留泛型方法,则可以使用Convert.ChangeType():

public static T Get<T>(string key)
{
    if (...)
        return 
          (T) Convert.ChangeType(System.Web.HttpContext.Current.Session[key],
                                 typeof(T));

    ...
}
Run Code Online (Sandbox Code Playgroud)

那将允许你打电话:

long n = Get<long>("sessionkey");
Run Code Online (Sandbox Code Playgroud)

但要小心:Convert.ChangeType()不适用于所有转换.


Ami*_*abh 6

使用Convert.ToInt64