| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2516 人关注过本帖
标题:C#重写基类成员和虚方法重写的区别是什么?另外类中能使用结构枚举吗?
只看楼主 加入收藏
卡巴斯
Rank: 2
等 级:论坛游民
帖 子:50
专家分:31
注 册:2012-12-18
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:3 
C#重写基类成员和虚方法重写的区别是什么?另外类中能使用结构枚举吗?
书上说c#中子类可以用new来重写基类成员,这个和虚方法的区别有什么不一样?另外如果我定义了结构、枚举,然后在类中使用,那这个类中定义的结构、枚举成员在其他的程序集里面可以使用吗?是不是要给类和结构加上访问修饰符?
搜索更多相关主题的帖子: 结构 
2013-03-22 23:31
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
收藏
得分:3 
书上说c#中子类可以用new来重写基类成员,这个和虚方法的区别有什么不一样?
基类如果有定义虚方法,子类除了new以外,还多一种选择override,如果基类没有定义虚方法,那子类只能使用new,而不能使用override,也就是无论基类有没有定义虚方法,子类都可以使用new

另外如果我定义了结构、枚举,然后在类中使用,那这个类中定义的结构、枚举成员在其他的程序集里面可以使用吗?是不是要给类和结构加上访问修饰符?
如果要在其它程序集中使用,类和结构都需要public,并且使用结构的程序集需要"引用"定义结构的那个程序集
2013-03-23 00:06
卡巴斯
Rank: 2
等 级:论坛游民
帖 子:50
专家分:31
注 册:2012-12-18
收藏
得分:0 
回复 2楼 yhlvht
那用new重写和虚方法的功能不就一样了?那什么时候重写,什么时候用虚方法?
2013-03-23 13:29
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
收藏
得分:2 
通常虚方法使用的较多,new重写用得少,在使用到继承的时候,通常都会用到虚方法
实际上子类使用new并不叫重写,而是子类新创建一个方法,只是新创建的这个方法刚好跟基类中的方法同名,这跟你子类新建的任何方法作用都一样,只是这个方法跟基类中某个方法名称一样,这样反而容易引起误解,你还不如把方法改个名称.另外子类创建跟基类同名的方法,也可以不使用new关键字,编译器会默认这是一个新方法,只是加上new,语义上更明确而已.
而使用override关键字重写基类的虚方法,这个才是重写的含义,你应该知道重写是什么意思,就知道什么时候用重写,至于使用new创建跟基类同名的方法,你甚至可以完全不用,一个项目中,如果不是非常特殊的情况,你是见不到这样的情况的,除非你想故意显得很高端
2013-03-23 14:20
快速回复:C#重写基类成员和虚方法重写的区别是什么?另外类中能使用结构枚举吗? ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011658 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved