用 Visual C# 编写的组件 (CompCS.cs)

来源:互联网 发布:php爬虫开源框架 编辑:程序博客网 时间:2024/06/05 09:57
using System;namespace CompCS {   public class StringComponent {      private string[] StringsSet;      public StringComponent() {         StringsSet = new string[] {            "C# String 0",            "C# String 1",            "C# String 2",            "C# String 3"         };      }     public string GetString(int index) {        if ((index < 0) || (index >=            StringsSet.Length)) {           throw new IndexOutOfRangeException();         }         return StringsSet[index];      }      public int Count {         get { return StringsSet.Length; }      }   }}

如上所述,使用 namespace 语句创建新的命名空间来封装要创建的类:

namespace CompCS {

该命名空间可以在多个文件中嵌套和拆分。单个源代码文件也可以包含多个不嵌套的命名空间。由于所有 Visual C# 代码都必须包含在一个类中,所以需要一个包含命名空间。

public class StringComponent {

StringComponent 的实例将通过公共语言运行库创建,并在垃圾回收堆中进行托管。类构造函数(每次创建该类的新实例时执行)与类同名,且没有返回类型。

public StringComponent() {

由于 Visual C# 只使用托管类型,所以在声明变量时不必像在 C++ 托管扩展中那样要进行特殊操作。

下面是 GetString 方法,该方法获取一个整数并返回一个字符串,对于三种示例语言而言都很简单而且效果相同:

public string GetString(int index) {   ...   return StringsSet[index];}

请注意 GetString 方法中的 throw 语句:

throw new IndexOutOfRangeException();

该语句创建并引发 IndexOutOfRangeException 类型的基于运行时的异常处理对象。

最后,创建只读的 Length 属性:

public int Count {   get { return StringsSet.Length; }}

Visual C# 组件的编译过程只比独立程序的编译过程稍微复杂一些:

csc.exe /t:library /debug+ /out:../bin/CompCS.dll CompCS.cs

与 C++ 托管扩展组件相同,使用 /out 开关将编译的组件置于 ../Bin 子目录中。同样,需要用 /t(arget):library 开关来创建一个 DLL 而不是带 .dll 文件扩展名的可执行文件。

                                                            ---------------------------摘自msdn

 
原创粉丝点击