在上一章,你学到如何创建一个通用语言运行时(clr)组件,且如何在一个简单的测试应用程序中使用它。虽然clr组件就要准备装载了,但你还是应该思考以下技术之一: 。条件编译 。文档注释 。代码版本化9.1 条件编译 没有代码的条件编译功能,我就不能继续工作。条件编译允许执行或包括基于某些条件的代码;例如,生成应用程序的一个查错(debug)版本、演示(demo)版本或零售(release)版本。可能被包括或被执行的代码的例子为许可证代码、 屏幕保护或你出示的任何程序。 在c#中,有两种进行条件编译的方法: 。预处理用法 。条件属性9.1.1 预处理用法 在c++中,在编译器开始编译代码之前,预处理步骤是分开的。在c#中,预处理被编译器自己模拟—— 没有分离的预处理。它只不过是条件编译。 尽管c#编译器不支持宏,但它具有必需的功能,依据符号定义的条件,排除和包括代码。以下小节介绍了在c#中受支...
第八章 用c#写组件 这一章关于用c#写组件。你学到如何写一个组件,如何编译它,且如何在一个客户程序中使用它。更深入一步是运用名字空间来组织你的应用程序。 这章由两个主要大节构成: 。你的第一个组件 。使用名字空间工作8.1 你的第一个组件 到目前为止,在本书中提到的例子都是在同一个应用程序中直接使用一个类。类和它的使用者被包含在同一个执行文件中。现在我们将把类和使用者分离到组件和客户,它们分别位于不同的二进制文件中(可执行文件)。 尽管你仍然为组件创建一个 dll,但其步骤与用c++写一个com组件差别很大。你很少涉及到底层结构。以下小节说明了如何构建一个组件以及使用到它的客户: 。构建组件 。编译组件 。创建一个简单的客户应用程序8.1.1 构建组件 因为我是一个使用范例迷,我决定创建一个相关web的类,以方便你们使用。它返回一个web网页并储存在一个字符串变量中,以供后来重用。所有这...
第七章 异常处理 通用语言运行时(clr)具有的一个很大的优势为,异常处理是跨语言被标准化的。一个在c#中所引发的异常可以在visual basic客户中得到处理。不再有 hresults 或者 isupporterrorinfo 接口。 尽管跨语言异常处理的覆盖面很广,但这一章完全集中讨论c#异常处理。你稍为改变编译器的溢出处理行为,接着有趣的事情就开始了:你处理了该异常。要增加更多的手段,随后引发你所创建的异常。7.1 校验(checked)和非校验(unchecked)语句 当你执行运算时,有可能会发生计算结果超出结果变量数据类型的有效范围。这种情况被称为溢出,依据不同的编程语言,你将被以某种方式通知——或者根本就没有被通知。(c++程序员听起来熟悉吗?) 那么,c#如何处理溢出的呢? 要找出其默认行为,请看我在这本书前面提到的阶乘的例子。(为了方便其见,前面的例子再次在清单 7.1...
第六章 控制语句 有一种语句,你在每种编程语言控制流程语句中都可以找到。在这一章中,我介绍了c#的控制语句,它们分为两个主要部分:。选择语句。循环语句如果你是c或c++程序员,很多信息会让你感到似曾相似;但是,你必须知道它们还存在着一些差别。 6.1 选择语句 当运用选择语句时,你定义了一个控制语句,它的值控制了哪个语句被执行。在c#中用到两个选择语句:。if 语句。switch 语句6.1.1 if 语句 最先且最常用到的语句是 if 语句。内含语句是否被执行取决于布尔表达式: if (布尔表达式) 内含语句 当然,也可以有else 分枝,当布尔表达式的值为假时,该分枝就被执行: if (布尔表达式) 内含语句 else 内含语句 在执行某些语句之前就检查一个非零长字符串的例子:if (0 != strtest.length){} 这是一个布尔表达式。(!=表示不等于。) 但是,如果你来...
前一章讨论了数据类型和它们的用法。现在我们转移到c#中至关重要的结构——类。没有了类,就连简单的c#程序都不能编译。这一章假定你知道了一个类的基本组成部分:方法、属性、构造函数和析构函数。 c#在其中增加了索引和事件。 在这一章中,你学到下列有关类的话题。 。 使用构造函数和析构函数 。给类写方法 。给一个类增加属性存取标志 。实现索引 。创建事件并通过代表元为事件关联客户 。应用类、成员和存取修饰符。5.1 构造函数和析构函数 在你可以访问一个类的方法、属性或任何其它东西之前, 第一条执行的语句是包含有相应类的构造函数。甚至你自己不写一个构造函数,也会有一个缺省的构造函数提供给你。class testclass{ public testclass(): base() {} // 由编译器提供} 一个构造函数总是和它的类名相同,但是,它没有声明返回类型。总之,构造函数总是public的,你...
既然你知道了怎样创建一个简单的c#程序,我将会给你介绍c#的类型系统。在这一章中,你学到如何使用不同的值和引用类型,加框和消框机制能为你作些什么。尽管这一章的不侧重于例子,但你可以学到很多重要的信息,关于如何创建现成类型的程序。4.1 值类型 各种值类型总是含有相应该类型的一个值。c#迫使你初始化变量才能使用它们进行计算-变量没有初始化不会出问题,因为当你企图使用它们时,编译器会告诉你。 每当把一个值赋给一个值类型时,该值实际上被拷贝了。相比,对于引用类型,仅是引用被拷贝了,而实际的值仍然保留在相同的内存位置,但现在有两个对象指向了它(引用它)。c#的值类型可以归类如下:·简单类型(simple types )·结构类型(struct types)·枚举类型(enumeration types)4.1.1 简单类型 在c#中出现的简单类型共享一些特性。第一,它们都是.net系统类型的别名。...
直接谈技术让入门往往变得相当困难。如果有各种编程基础,并且相当熟悉java,那就不用提入门了。直接了解一下,并且根据文档就可以投入开发。的确如此,但相对大多数初学者朋友总是想知道这是干什么的。我最喜欢用通俗的解释来对一个你感到陌生的东西进行阐述。其实闭上眼睛好好想,你也可以想到很多很多。更何况你每天会对着你的手机发呆。其实sun推出的java2有三个版本,即j2ee,j2se,j2me。我在前面的文章<j2ee初学者应该知道的>介绍过j2ee是什么东西。如果你说他是一种语言是不确切的。只能说他们是针对解决问题的覆盖领域不同而有所区别。学过c++的朋友知道,基本的c++语言本身无非语法、控制、函数等,那么如果你想用c++来做很多事情,那么你应该更多了解相关内容,至少标准c++函数库得了解些吧。那会不会问标准c++库是c++吗?当然不是。但大家都在用,哈哈,java是一种解释性语言...
作者:rainbow asp动网先锋 3.0 选择一个编辑器 尽管我是一个顽固的notepad狂,但这次我不建议用它编辑源码。原因是你正在与真正的编程语言打交道,使用notepad编辑源码编译时可能产生大量的错误信息行(c++程序员知道我在说什么。) 你有几种选择。可以重新配置你信任的老式visual c++ 6.0,使它能够和c#源文件一起工作。第二种选择是使用新的visual studio 7。第三,你可以用任何第三方程序编辑器,最好要支持行数、色彩编码、工具集成和良好的搜索功能。 图3.1 codewright 是你可以用于创建c#代码文件众多可能编辑器中的一个。 当然,在所提到的编辑器中,没有一个对创建c#程序来说是必要的。用notepad肯定可以编辑。但是,如果你考虑到要编写更大的项目,最好还是忍痛割爱吧。 3.1 "hello world" 代码 讨论编辑器有点离题 ,让我们把...
作者:rainbow asp动网先锋 既然你已经具有了c#全面的印象,我也想让你了解ngws runtime的全貌。c#依靠由ngws提供的运行时;因此,有必要知道运行时如何工作,以及它背后所蕴含的概念。 所以,这一章分为两部分——它们是所有的概念和使用的基础。两部分的内容虽然有些重叠,但它有助于加深理解正在学习的概念。 2.1 ngws runtime ngws和ngws runtime为你提供了一种运行时环境。该运行时管理执行代码,并提供了使编程更容易的服务。只要你的编译器支持这种运行时,你就会从这种受管理的执行环境中得益。 你猜测c#编译器支持ngws runtime很正确,但是不仅它支持ngws runtime,vb和c++也支持。这些为支持运行时所创建的代码称作"受管代码"(managed code)。以下是你的应用程序从ngws runtime那里所得到的利益: 交叉语言集成(...
欢迎您加入c#的世界! 这一章将把您引进c#的天地,并回答一些相关的问题,如:您为什么要使用c#,c++和c#的主要有什么不同点,以及为什么c#使开发更容易而且还使您感到很有趣。 为什么是另外一种编程语言? 必须回答的一个问题:当您已经使用c++或vb从事企业开发时,为什么还要学习另一种语言? 市场式的回答就是:"在企业计算领域,c#将会变成为用于编写"下一代窗口服务"(next generation windows services,简写为ngws )应用程序的主要语言。" 这一章将对用参数请求提供支持,并陈列了c#的一些功能。这一章会使您开胃的。 c#语言自c/c++演变而来。但是,它现代、简单、完全面向对象和类型安全。如果您是c/c++程序员,学习曲线将会很平坦。许多c#语句直接借用您所喜爱的语言,包括表达式和操作符。假如不仔细看,简直会把它当成c++。 关于c#最重要的一点:它是现...
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器