分类

链接

2011 年 12 月
 1234
567891011
12131415161718
19202122232425
262728293031  

近期文章

热门标签

新人福利,免费薅羊毛

c#中的结构详解

  前面介绍了类如何封装程序中的对象,也介绍了如何将它们保存在堆中,通过这种方式可以在数据的生存期上获得很大的灵活性,但性能会有一定的损失。因托管堆的优化,   这种性能损失比较小。但是,有时仅需要一个小的数据结构。此时,类提供的功能多于我们需要的功能,由于性能的原因,最好使用结构。看看下面的例子: class Dimensions { public double Length; public double Width; } 上面的示例代码定义了类Dimensions,它只存储了一个项的长度和宽度。假定编写一个安排设备的程序,让人们试着重新...

.NET 暂无评论 阅读(1,833)

C#预处理器指令(二)

  除了前面介绍的常用关键字外,C#还有许多名为“预处理器指令”的命令。这些命令从来不会转化为可执行代码中的命令,但会影响编译过程的各个方面。例如,使用预处理器指令可以禁止编译器编译代码的某一部分。如果计划发布两个版本的代码,即基本版本和有更多功能的企业版本,就可以使用这些预处理器指令。在编译软件的基本版本时,使 63 第Ⅰ部分 C# 语 言 用预处理器指令还可以禁止编译器编译与额外功能相关的代码。另外,在编写提供调试信息的代码时,也可以使用预处理器指令。实际上,在销售软件时,一般不...

.NET 暂无评论 阅读(2,178)

给Main()方法传送参数

给Main()方法传送参数 前面的例子只介绍了不带参数的Main()方法。但在调用程序时,可以让CLR包含一个参数,将命令行参数转送给程序。这个参数是一个字符串数组,传统称为args(但C#可以接受任何名称)。在启动程序时,可以使用这个数组,访问通过命令行传送过来的选项。 下面的例子ArgsExample.cs是在传送给Main方法的字符串数组中迭代,并把每个选项的值写入控制台窗口: using System; namespace Wrox.ProCSharp.Basics { class ArgsExample { public static int Main(string[] args) { for (int i = 0; i < ar...

.NET 暂无评论 阅读(1,904)

.NET中的using

using语句 显然,命名空间相当长,键入起来很繁琐,用这种方式指定某个类也是不必要的。如本章开头所述,C#允许简写类的全名。为此,要在文件的顶部列出类的命名空间,前面加上using关键字。在文件的其他地方,就可以使用其类型名称来引用命名空间中的类型了: using System; using Wrox.ProCSharp; 如前所述,所有的C#源代码都以语句using System;开头,这仅是因为Microsoft提供的许多有用的类都包含在System命名空间中。 如果using指令引用的两个命名空间包含同名的类,就必须使用完整的名称(或者至少较长的名称...

.NET 暂无评论 阅读(2,117)

.net中的string类型

  有C和C++开发经验的人员可能在使用C风格的字符串时不太顺利。C或C++字符串不过是一个字符数组,因此客户机程序员必须做许多工作,才能把一个字符串复制到另一个字符串上,或者连接两个字符串。实际上,对于一般的C++程序员来说,执行包装了这些操作细节的字符串类是一个非常头痛的耗时过程。Visual Basic 程序员的工作就比较简单,只需使用string类型即可。而Java程序员就更幸运了,其String类在许多方面都类似于C#字符串。 C#有string关键字,在翻译为.NET类时,它就是System.String。有了它,像字符串连...

.NET 暂无评论 阅读(1,981)

C#预定义类型

8位有符号的整数 7 7 sbyte System.SByte –128~127 (–2~2–1) 16位有符号的整数 15 15 short System.Int16 –32 768~32 767 (–2 ~2 –1) 32位有符号的整数 31 31 int System.Int32 –2 147 483 648~2 147 483 647(–2 ~2 –1) long System.Int64 64位有符号的整数 –9 223 372 036 854 775 808~9 223 372 036 854 775 807(–263~263–1) 8位无符号的整数 8 byte System.Byte 0~255(0~2–1) 16位无符号的整数 16 ushort System.Uint16 0~65535(0~2 –1) 32位无符号的整数 32 uint System.Uint32 0~4 294 967 295(0~2 –1) ulong...

.NET 暂无评论 阅读(2,089)

深入.net实质讨论系列(七)

第Ⅰ部分 C# 语 言 进程:4GB虚拟内存 应用程序域: 一个应用程序使用一些 虚拟内存 应用程序域: 另一个应用程序使用一些虚 拟内存 图 1-3 如果不同的可执行文件都运行在同一个进程空间中,显然它们就能轻松地共享数据,因为理论上它们可以直接访问彼此的数据。虽然在理论上这是可以实现的,但是CLR会检查每个正在运行的应用程序的代码,以确保这些代码不偏离它自己的数据区域,保证不发生直接访问其他进程的数据的情况。这初看起来是不可能的,如何告诉程序要做什么工作,而又不真正运行它? 实际上,这么做通常...

.NET 暂无评论 阅读(1,543)

深入.net实质讨论系列(六)

第Ⅰ部分 C# 语 言 类型 引用类型 接口类型 值类型 指针类型 自我描述类型 内置值类型 用户定义 的值类型 枚举 数组 类类型 委托 装箱的值类型 用户定义的 引用类型 图 1-1 这个树形结构中的类型说明如表1-1所示。 表 1-1 类 型 含 义 Type 代表任何类型的基类 Value Type 代表任何值类型的基类 Reference Types 通过引用来访问,且存储在堆中的任何数据类型 Built-in Value Types 包含大多数标准基本类型,可以表示数字、Boolean值或字符 Enumerations 枚举值的集合 User-defined Value Types 在源代码中定义,且...

.NET 暂无评论 阅读(1,818)

深入.net实质讨论系列(五)

第1章 .NET体系结构 (5) COM和COM+ 从技术上讲,COM 和 COM+并不是面向.NET 的技术,因为基于它们的组件不能编译为IL(但如果原来的COM组件是用C++编写的,使用托管C++,在某种程度上可以这么做)。但是,COM+仍然是一个重要的工具,因为其特性没有在.NET中完全实现。另外,COM组件仍可以使用——.NET组合了COM的互操作性,从而使托管代码可以调用COM组件,COM组件也可以调用托管代码(见第33章)。在一般情况下,把新组件编写为.NET组件,大多是为了方便,因为这样可以利用.NET基类和托管代码的其他优点。 1.3 中间语言...

.NET 暂无评论 阅读(1,635)

深入.net实质讨论系列(四)

第Ⅰ部分 C# 语 言 (2) Visual C++ 2005 Visual C++ 6有许多Microsoft对Windows的特定扩展。通过Visual C++ .NET,又加入了更多的扩展内容,来支持.NET Framework。现有的C++源代码会继续编译为内部可执行代码,不会有修改,但它会独立于.NET运行库运行。如果让C++代码在.NET Framework中运行,就可以在代码的开头添加下述命令: #using <mscorlib.dll> 还可以把标记/clr 传递给编译器,这样编译器假定要编译托管代码,因此会生成中间语言,而不是内部机器码。C++的一个有趣的问题是在编译托管代码时,编译器...

.NET 暂无评论 阅读(1,819)