C#对C++的扬弃
C#是一个面向对象的语言,但是它抛弃了C++多重继承,却提供了对COM+虚拟对象系统的内在支持,封装、继承也被保留下来。
C#没有全局函数、全局变量、常量的概念,不过可以使用创建类的静态成员来代替它们,这样一方面增强了代码的可读性,同时也避免了许多命名冲突。
说起命名冲突,很容易使人想起函数的重载和虚函数。默认情况下C#的方法不是虚函数,除非用户在方法的前面加上vitual修饰符。这样,几乎不可能因为意外而重载一个方法,很容易提供一个正确的版本,而且VTable(变量表)的增长并不快。C#中的类成员可以定义为private、protected、public或者internal。用户可以对它们的封装实现完全的控制。
在C#中,方法和操作符都可以被重载,使用的语法也比C++容易的多,用户不能重载一个全局的操作符函数,重载只能限定于局部范围内。
C#没有全局函数、全局变量、常量的概念,不过可以使用创建类的静态成员来代替它们,这样一方面增强了代码的可读性,同时也避免了许多命名冲突。
说起命名冲突,很容易使人想起函数的重载和虚函数。默认情况下C#的方法不是虚函数,除非用户在方法的前面加上vitual修饰符。这样,几乎不可能因为意外而重载一个方法,很容易提供一个正确的版本,而且VTable(变量表)的增长并不快。C#中的类成员可以定义为private、protected、public或者internal。用户可以对它们的封装实现完全的控制。
在C#中,方法和操作符都可以被重载,使用的语法也比C++容易的多,用户不能重载一个全局的操作符函数,重载只能限定于局部范围内。
浙公网安备 33010602011771号