我对铸造有一个疑问.
public void Test(out T a, out T b)
{
object d,e;
d = 10;
e = 35;
Console.WriteLine(d.GetType());
a = (T)d;
b = (T)e;
}
Run Code Online (Sandbox Code Playgroud)
这里d.getType()将返回System.int32.所以我的问题是为什么我们不能直接编码像=(T)10; 我没有得到正确的帮助.请帮忙.谢谢.
投射不起作用.T需要是System.int32的子类或超类才能在没有任何额外的运算符重载的情况下进行转换.
我假设T是int的某种包装器.您需要创建一个函数或构造函数来转换int
为T
.这与铸造不一样.
您可以定义自己的显式运算符,为您执行此转换,语法将与您拥有的相同.但是你仍然需要自己定义转换.
像这样的东西:
public static explicit operator T (int original) {
T t = new T();
t.value = original;
return t;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1201 次 |
最近记录: |