<script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>
《c#的细节》是我当初学习c#时候,做的一些学习笔记的整理,现在回头看来这些都是非常浅显的知识,是c#非常细节的地方,同时也是不能忽略的地方,”细节决定成败“,也许有些严重。我希望把这些整理出来,可以给初学者一个参考,也给自己一个温故知新的机会。高手就不必花时间来看了。;-)
-------------------------------------------------------------------------------
在c#中类型的转换分两种:显式和隐式,基本的规则如下:
1、基类对象转化为子类对象,必须显式转换,规则:(类型名) 对象。
2、值类型和引用类型的转换采用装箱(boxing)或拆箱(unboxing).
3、子类转化为基类对象。
4、基本类型互相之间转化可以用Covent类来实现。
5、字符串类型转换为对应的基本类型用Parse方法,除了String类型外其他的类型都可以用Parse方法。
6、用GetType可以取得对象的精确类型。
7、子类转化为基类,采用隐式转换。
下面来说说AS和IS操作符。
AS:用于在兼容的引用类型之间执行转换。
IS:检查对象是否与给定类型兼容
从概念来分析:
1、AS在转换的同事兼判断兼容性,如果无法进行转换,则 as 返回 null(没有产生新的对象)而不是引发异常。有了AS我想以后就不要再用try-catch来做类型转换的判断了。因此as转换成功要判断是否为null。
2、AS是引用类型类型的转换或者装箱转换,不能用与值类型的转换。如果是值类型只能结合is来强制转换,代码如下:
object objTest = 11; if( objTest is int )
{
int nValue = (int )objTest;
}
3、IS只是做类型兼容判断,并不执行真正的类型转换。返回true或false,不会返回null,对象为null也会返回false。
4、AS模式的效率要比IS模式的高,因为借助IS进行类型转换的化,需要执行两次类型兼容检查。而AS只需要做一次类型兼容,一次null检查,null检查要比类型兼容检查快。
本文首发地址:http://www.watch-life.net/csharp/csharp-detail-modifiers-as-is.html
更多文章见:守望轩[http://www.watch-life.net/]
分享到:
相关推荐
C# is a complex programming language for building .NET-connected software for Microsoft Windows, cloud computing, the Web, and a wide range of devices. Today’s developers use it to develop Azure and...
c#下post 发送 multipart/form-data和JSON数据
C#版USB-HID范例,原文链接:https://blog.csdn.net/u010875635/article/details/73321066
c#图片文字-字母-数字自动识别-深入代码-非常好
C#网络编程---第1章_进程、线程与网络协议.ppt ...C#网络编程---第7章_三维设计与多媒体编程.ppt C#网络编程---第8章_电子邮件协议编程.ppt C#网络编程---第9章_HTTP编程.ppt C#网络编程---第10章_Web_Service_编程.ppt
C#源码--权限管理系统源码
C#经典编程-220例 超经典的C#编程教程,免费下载
C# 开发的YMODEM升级上位机,有源码,目前支持hex文件和bin文件。如果需要其他程序文件格式,请私信我!
使用c#实现的HttpClient拼接multipart/form-data形式参数post提交数据,包含图片内容,有需要的可以下载,希望能帮到有需要的人,
使用详见我的博客:https://blog.csdn.net/HorseRoll/article/details/83310677
The game is built using C#, a high-level programming langua ge, and OpenGL, an industry favorite for graphics display. You'll get an overview of the methods and libraries used to build good games, ...
C#对ffmpeg的封装,该Demo已经删到最精简了,可直接运行。。。。。。。。
本人实战项目用C#编程读取多块电表,按照时序读取,解读电力协议报文,自动统计数据,转换成浮点数据。
使用C#连接PI数据库。 是博客http://blog.csdn.net/yiliaowu/archive/2008/11/14/3300928.aspx的源代码。
C#直接和S7-200SMART以太网通讯,不经过任何第三方软件。
C#版 MessageboxTimeout-自动关闭messagebox 消息对话框 实现了messagebox 对话框自动关闭,可以自由设定等待几秒后自动关闭。 内附使用说明
Along the way is clear, concise coverage of a broad spectrum of C# techniques that will help developers of all levels become more proficient with C# and the most popular .NET tools. Fast, Reliable, ...
C#写的 GBK GB2312 UTF-8转换 功能简单,仅供学习
c#开源代码-医院管理系统sql数据库