以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 Dot NET,C#,ASP,VB 』 (http://bbs.xml.org.cn/list.asp?boardid=43) ---- 初探c#(六 至 十) (http://bbs.xml.org.cn/dispbbs.asp?boardid=43&rootid=&id=75965) |
-- 作者:卷积内核 -- 发布时间:7/10/2009 4:11:00 PM -- 初探c#(六 至 十) 初探c#(六)统一系统类型 c#独创了一种类型——统一系统类型(为了这个累刑,我头疼死了。谁有更好的名字,请务必告诉我)。总之,所有的其他类型,包括值和引用,都可以被当作统一系统类型来对待。从概念上说,所有的类型都从它派生。这样,其他的类型就可以使用统一系统类型的属性和方法。包括一些“简单”类型,如:int。还是给个例子吧: */ “3.ToString()”调用了object的“ToString()”方法。相信学过c/c++的朋友都知道要输出一个数字有多麻烦,现在就省事了。再看一个:*/ class Test 这个像帽子戏法的例子中,从“int”转换成“object”,又转换回来。这样一来,在值和引用之间就架起了一座桥梁。
QQ病毒 腾讯QQ空间代码专题 PPT教程专题 ADSL应用面面俱到 Fireworks教程专题 计算机和网络技术基础知识 校园网专题 网吧技术专题 这样有什么用呢。即兴举一个常见的例子...就min把。在c/c++中:*/ // c/c++ code void min(int i, int j) /* 如果比较的不是int,或者说可能是int,也可能是float、double呢?可以这样:*/ template /* 用c#可以:*/ /* |
-- 作者:卷积内核 -- 发布时间:7/10/2009 4:12:00 PM -- 初探c#(七)语句(Statements) c#借用了c/c++大多数的语句方法,不过仍然有些值得注意的地方。还有些地方是有所改动的。在这里,我只提一些c#特有的东东。 1.7.10 “foreach”语句 “foreach”语句列举一个集合内的所有元素,并对这些元素执行一系列的操作。还是看看例子吧:*/ using System; /*这个例子用“foreach”扫描了整个“list”,并把“list”中所有的元素打印出来。有时候还是挺方便的。 1.7.15 安全检查开关(The checked and unchecked statements) “checked”和“unchecked”语句用来控制数学运算和完整类型转换的检查工作。“checked”检查它作用的域中可能出现的违例,并抛出一个异常;而“unchecked”则阻止所有的检查。举个例子:*/ using System; /* using System; /* 当F()和H()求值的时候,就会引起一个编译警告。而在G()中,因为有了“unchecked”,屏蔽了这个警 class Test /* 其实大家稍微想一下知道为什么m$没有这么做!对这个内容的讨论超出本文的范围和俺的能力之外哦。 在c#中,所有的十六进制数都是uint。如果用强制类型转换会引起编译器报错。用“unchecked”则可以跳过这个机制,把uint的十六进制数转化为int。如:*/ class Test /* 上例所有的常数都是uint,而且超过了int的范围,没有“unchecked”,这种转换会引发一个编译器错误。注意:上面用的是“unchecked”操作符。不是语句。不过它们之间除了一个用“()”,另一个用“{}”以外,几乎一样。BTW,“checked”同样。 1.7.16 “lock”语句(The lock statement) “lock”获得一个相互排斥的对象锁定。(俺查过一些资料,但都没有清晰说明,暂不介绍) |
-- 作者:卷积内核 -- 发布时间:7/10/2009 4:13:00 PM -- 初探c#(八)类(Classes) 类用于定义一个新的引用类型。c#不支持多重继承,但支持一个类多重界面(“interfaces”)。 类的成员包括常量、位域、方法、属性、索引(indexers)、事件、操作符、构造器、析构器和嵌套类型声明。(一口气说这么多,呼——) 对类中得所有成员有五种访问权限: · “public” 可以被所有代码访问; |
-- 作者:卷积内核 -- 发布时间:7/10/2009 4:13:00 PM -- 初探c#(九)结构(Structs) 结构和类又非常多的相似之处,如结构可以实现界面,和可以拥有和类一样的成员。结构与类也有一些重要的区别:结构是值类型,而不是引用类型,所以不支持继承!结构被存在堆栈中或者是内联。结构在精心下可以提高存储效能。例如,定义一个与类有着相同信息的结构可以大大地减少存储空间。在下例中,程序创建并初始化100个points。在类“Point”中需要分配101个独立的对象(object)。*/ class Point 如果“Point”被作为一个结构,就可以这样啦:*/ struct Point 因为Point在内联中实例化,所以得到了优化。当然,错误运用的只会适得其反。比如,当我们传递结构的时候就会比传递类要慢。因为结构的传递是拷贝值,类是引用值的地址。数据量越大差距就越明显。 所以“There is no substitute for careful data structure and algorithm design.”(实在是不想译了 ^_^ )。 1.10 界面(Interfaces) 界面用来定义一种程序的契约。有了这个契约,就可以跑开编程语言的限制了(理论上)。而实现界面的 interface IExample 例子中的界面包含一个索引、一个事件E、一个方法F和一个属性P。 */ 类和结构可以多重实例化界面。 就像在下例中,类“EditBox”继承了类“Control”,同时从“IDataBound”和“IControl”继承。 interface IDataBound 在上面的代码中,“Paint”方法从“IControl”界面而来;“Bind”方法从“IDataBound”界面而来,都以“public”的身份在“EditBox”类中实现。 |
-- 作者:卷积内核 -- 发布时间:7/10/2009 4:14:00 PM -- 初探c#(十)界面(Interfaces) 界面用来定义一种程序的契约。有了这个契约,就可以跑开编程语言的限制了(理论上)。而实现界面的 类或者结构要与界面的定义严格一致。界面可以包含以下成员:方法、属性、索引和事件。例子:*/ interface IExample 例子中的界面包含一个索引、一个事件E、一个方法F和一个属性P。 */ 类和结构可以多重实例化界面。 就像在下例中,类“EditBox”继承了类“Control”,同时从“IDataBound”和“IControl”继承。 interface IDataBound 在上面的代码中,“Paint”方法从“IControl”界面而来;“Bind”方法从“IDataBound”界面而来,都以“public”的身份在“EditBox”类中实现。 |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
3,757.813ms |