首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 熬不住....了....希望明天能够解决!!!! [已结贴,结贴人:hackztx]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hackztx
    • 等级:
    发表于:2008-05-11 22:12:37 楼主
    C# code
    using System; class Test { static void Main() { class1 over = new class1(); class2 df = new class2(); Console.WriteLine(df.a); class2 go = over as class2;//为什么结果是Null class2 go2 = (class2)over;//Error //目前我写了一个供调用的dll(采集)...现在我要将采集的内容存入到数据库.... //所以继承采集内容的对象,然后多添加一些字段........ //我调用采集的代码,返回给我一个对象...然后我将对象转换为派生类....结果就为Null了.......... //请问怎么解决..... //郁闷的我都睡着了!!! } } class class1 { public int a; public class1() { a = 10; } } class class2 : class1 { public class2() { } }
    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 22:16:091楼 得分:5
    不能转换,就是null了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 22:39:192楼 得分:4
    基类当然不能转为继承类,反过来就可以:
    class1 go = df as class1;
    class1 go2 = (class1)df;
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xiaoqhuang
    • 等级:
    发表于:2008-05-11 22:40:263楼 得分:4
    应该是class2可以转成class1,而不是class1转成class2。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wfyfngu
    • 等级:
    发表于:2008-05-11 22:45:574楼 得分:4
    as的工作原理应该要弄清楚
    as的最大好处是永远不会抛出异常(和is不一样)
    as执行前会测试转化结果,如果不能转化,返回null
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 22:51:215楼 得分:3
    基类和派生类,原始类型和参照类型;
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 22:54:306楼 得分:3
    over凭什么能转换成class2类型?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-11 23:54:017楼 得分:6
    as转换是这样的,它用于引用类型之间的类型转换,如果转换失败它不会

    抛出异常,只会让结果为null;

    而()转换会抛出异常

    继承之间不用显示写()来转换直接写就可以了

    class2 c2=new class2();
    class2 c2_2=new class1();
    //
    class1 c1=new class1();
    class2 c2_3=c1;

    这样做的前提是class2是class1的基类即

    class class1:class2{}

    而你这样做但却把基类继承关系做反了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hackztx
    • 等级:
    发表于:2008-05-12 06:39:018楼 得分:0
    C# code
    using System; class Test { static void Main() { class1 class1 = new class1(); class2 class2 = class1;//Error////////////(class2)class1,编译OK,运行错误!!! } } class class1 { public int a; public class1() { a = 10; } } class class2 : class1 { public class2() { } }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • journeydj
    • 等级:
    发表于:2008-05-12 08:12:319楼 得分:3
    引用 2 楼 Choi57671452 的回复:
    基类当然不能转为继承类,反过来就可以:
    class1 go = df as class1;
    class1 go2 = (class1)df;

    正解
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • possible_Y
    • 等级:
    发表于:2008-05-12 08:21:3810楼 得分:3
    class1 class1 = new class1();
    class2 class2 = class1;

    -----------------
    class class2 : class1

    编译不过吧
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 08:41:2511楼 得分:3
    引用 4 楼 wfyfngu 的回复:
    as的工作原理应该要弄清楚
    as的最大好处是永远不会抛出异常(和is不一样)
    as执行前会测试转化结果,如果不能转化,返回null

    楼上说的很清楚,也就不说什么了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • goldxinx
    • 等级:
    发表于:2008-05-12 09:09:5212楼 得分:3
    引用 2 楼 Choi57671452 的回复:
    基类当然不能转为继承类,反过来就可以:
    class1 go = df as class1;
    class1 go2 = (class1)df;
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 09:12:3613楼 得分:3
    class1是class2的父类,父类是不允许被转化为子类的,这在C#是不允许的,作者搞反了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yagebu1983
    • 等级:
    发表于:2008-05-12 09:24:3114楼 得分:3
    顶了!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-12 09:34:2715楼 得分:3
    引用 6 楼 amandag 的回复:
    over凭什么能转换成class2类型?

    up
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
    Copyright © 2000-2007, CSDN.NET, All Rights Reserved