首页 新闻 搜索 专区 学院

动态类,怎么动态转换

0
悬赏园豆:5 [已解决问题] 解决于 2011-12-04 23:01

类A   实例a=  对象X  as  类A;

如果 类A 是动态变化的,那么实现上面相同的功能,上面的式子该怎么写呢?

谢谢

青松之林的主页 青松之林 | 初学一级 | 园豆:189
提问于:2011-12-04 11:46
< >
分享
最佳答案
0

这是一个典型的应该通过范型编程解决的需求。

    public class TemplateFuncs<T> where T:class
{
public static T Func1(Object x)
{
T a = x as T;
return a;
}
}

使用as 表达式要注意的是,不能直接引用转换后的对象引用,因为有可能转换失败。

           string test = "模板函数实现";
string retRef = TemplateFuncs<string>.Func1(test);
if (null == retRef)
{
Console.WriteLine("as 语句类型转换为string对象失败!");
}
System.IO.TextWriter retRef2 = TemplateFuncs<System.IO.TextWriter>.Func1(test);
if (null == retRef2)
{
Console.WriteLine("as 语句类型转换为TextWriter对象失败!");
}

如果熟悉C++的程序员,看到C#中的as表达式,很自然会想到syntax_cast<>动态转型。


收获园豆:5
胡屯 | 小虾三级 |园豆:714 | 2011-12-04 15:54
其他回答(2)
0

变化的类型,.net 没有变化的类型吧。最多只是一些匿名的类型。至于动态类型也只是。制定了类型之后就不会有变化了的。

小小刀 | 园豆:1991 (小虾三级) | 2011-12-04 14:12

明白,非常感谢。

支持(0) 反对(0) 青松之林 | 园豆:189 (初学一级) | 2011-12-04 14:41
0

.net 4.0以后是可以的

上不了岸的鱼 | 园豆:4613 (老鸟四级) | 2011-12-04 14:36

知道了,非常感谢

支持(0) 反对(0) 青松之林 | 园豆:189 (初学一级) | 2011-12-04 14:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册