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