C 的类与C#的类.pdf
文本预览下载声明
C++的类与C#的类
一、简介
面向对象(OO)编程在应用设计中已经发展二十来年了。程序不再是一系列函数的堆彻
(象一些范例那样的程序),而是对象的集合,每个对象都有其独特的属性和方法来与其它
对象打交道。
C语言系列是面向对象设计发展的最好例子。C++为开发者提供了优秀的面向对象编程
工具,程序员可以显式地创建构造函数,拷贝构造函数,重载操作符,使用模板等等。
象C++这样复杂语言的主要问题是程序员要花上好几个月来掌握面向对象设计本质。新
程序员必须学会掌握模板,函数重载,当然还要会创建和使用功能良好的类。
微软公司给C#(读为C-Sharp)赋予C++某些面向对象的本质,比如模板,但改变了类
的创建方法。本文,我将对比C++和C#的类,并着重说明微软在C#中类创建和使用方面的
改变。
本文对象是熟练的C++程序员,通过一些细节来解释C#面向对象的本质。
二、C#的类有了哪些改变?
如你所知,C#是部分基于C++,部分基于Java语法的语言。C#中还有一些细节上的改
变,使得它可以用于现代设计。当你开始用C#建类时就会立即看到这点。让我们通过一个
简单的例子开始了解在C++和C#中是如何建类并进行实例化的。
C++版本:
#include
classMyClass
{
public: voiddoSomething()
{ std::cout Thisis some text;
}
};
voidmain()
{ MyClassmc;
mc.doSomething();
}
C# 版本:
usingSystem;
classMyClass
{
publicvoid doSomething()
{
Console.WriteLine(This issome text);
}
}
classEntryPoint
{ public static void Main()
{ MyClassmc = newMyClass();
mc.doSomething();
}
}
上面的代码中有几个不同之处。
首先,C++用#include包含语句来指明包含文件iostream.h的物理路径。C#则告诉编
译器程序将在System命名空间下操作,所有的命名空间和类都属于System命名空间。C#
通过命名空间的名字来决定程序的作用范围(本例中只有System一个命名空间),而不用指
明物理路径的包含文件方法。
其次,C#的主程序用Main(注意M是大写)。
第三,C++的类声明结束后要在最后的大括号后面用分号结尾。C#则可用可不用,往往
都是省略。
第四,你能看到在C#中必须显式地声明方法和成员的作用域。若不加声明,缺省为私
有(只有类成员可以访问),这点与C++一样。C#中有5种作用域:公有(public):其他类
成员也可以访问私有(private):只有类成员才能访问保护(protected):类成员和继承类
成员可以访问内部(internal):只有汇编里的成员才能访问(C#的汇编是代码和资源数据
的结合,以asmx作文件后缀)
内部保护(protected internal):类成员和继承类成员可以访问最后,与Java一样,
C#的方法也可以声明为静态(static)的。静态变量的使用在C#和C++是一样的。在C#里,
可以这样创建并调用类的静态方法:
using System;
classMyClass
{ public staticvoid doSomething()
{Console.WriteLine(This is some
text);
}
};
显示全部