- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1
本文将介绍以下内容:
• 类型转换
• is/as操作符小议
1. 引言
类型安全是.NET 设计之初重点考虑的内容之一,对于程序设计者来说,完全把握系统数据的类型安全,经
常是力不从心的问题。现在,这一切已经在微软大牛们的设计框架中为你解决了。在.NET 中,一切类型都
必须集成自 System.Object 类型,因此我们可以很容易的获得对象的准确类型,方法是:GetType()方法。
那么.NET 中的类型转换,应该考虑的地方有那些呢?
2. 概念引入
类型转换包括显示转换和隐式转换,在.NET 中类型转换的基本规则如下:
任何类型都可以安全的转换为其基类类型,可以由隐式转换来完成;
任何类型转换为其派生类型时,必须进行显示转换,转换的规则是:(类型名)对象名;
使用 GetType 可以取得任何对象的精确类型;
基本类型可以使用 Covert 类实现类型转换;
除了 string 以外的其他类型都有Parse 方法,用于将字符串类型转换为对应的基本类型;
值类型和引用类型的转换机制称为装箱(boxing)和拆箱(unboxing)。
3. 原理与示例说明
浅谈了类型转换的几个普遍关注的方面,该将主要精力放在 is、as 操作符的恩怨情仇上了。类型转换将是
个较大的话题,留于适当的时机讨论。
is/as 操作符,是 C#中用于类型转换的,提供了对类型兼容性的判断,从而使得类型转换控制在安全的范
畴,提供了灵活的类型转换控制。
is 的规则如下:
检查对象类型的兼容性,并返回结果,true 或者 false;
不会抛出异常;
如果对象为 null,则返回值永远为 false。
其典型用法为:
1object o = new object ();
2
3class A
4
5 {
6
7}
8
9if (o is A) //执行第一次类型兼容检查
10
11{
12
13 A a = (A) o; //执行第二次类型兼容检查
14
15}
16
17
as 的规则如下:
检查对象类型的兼容性,并返回结果,如果不兼容就返回 null;
不会抛出异常;
如果结果判断为空,则强制执行类型转换将抛出 NullReferenceException 异常。
其典型用法为:
1object o = new object ();
2
3class B
4
5 {
6
7}
8
9B b = o as B; //执行一次类型兼容检查
10
11if (b != null)
12
13{
14
15 MessageBox.Show(b is Bs instance.);
16
17}
18
19
4. 结论
纵上比较,is/as 操作符,提供了更加灵活的类型转型方式,但是 as 操作符在执行效率上更胜一筹,我们
在实际的编程中应该体会其异同,酌情量才。
本文将介绍以下内容:
• 面向对象思想:多态
• 接口
• 抽象类
1. 引言
在我之前的一篇 post 《》中,和同事管伟的讨论,得到很多朋友的关注,因为是不成体系的论道,所以给
大家了解造成不便,同时关于这个主题的系统性理论,我认为也有必要做以总结,因此才有了本篇的新鲜
出炉。同时,我将把上贴中的问题顺便也在此做以交代。
2. 概念引入
什么是接口?
接口是包含一组虚方法的抽象类型,其中每一种方法都有其名称、参数和返回值。接口方法不能包含任何
实现,CLR 允许接口可以包含事件、属性、索引器、静态方法、静态字段、静态构造函数以及常数。但是
注意:C#中不能包含任何静态成员。一个类可以实现多个接口,当一个类继承某个接口时,它不仅要实现
该接口定义的所有方法,还要实现该接口从其他接口中继承的所有方法。
定义方法为:
public interface System.IComparable
{
int CompareTo(object o);
}
public class TestCls: IComparable
{
public TestCls()
{
}
private int _value;
public int Value
{
get { return _value; }
set { _value = val
文档评论(0)