Welcome 微信登录

首页 / 软件开发 / C#

C#中对类的成员的访问

C#中对类的成员的访问

C#中对类的成员的访问2007-09-21 本站 在编写程序时,我们可以对类的成员使用不同的访问修饰符,从而定义它们的访问级别。公有成员C#中的公有成员提供了类的外部界面,允许类的使用者从外部进行访问。公有成员的修饰符为public,这是限制最少的一种访问方式。私有成员C#中的私有成员仅限于类中的成员可以访问,从类的外部访问私有成员是不合法的。如果在声明中没有出现成员的访问修饰符,按照默认方式成员为私有的。私有成员的修饰符为private。保护成员为了方便...
C#的this保留字

C#的this保留字

C#的this保留字2007-09-21 本站 保留字this仅限于在构造函数、类的方法和类的实例中使用,它有以下含义:●在类的构造函数中出现的this作为一个值类型,它表示对正在构造的对象本身的引用。●在类的方法中出现的this作为一个值类型,它表示对调用该方法的对象的引用。●在结构的构造函数中出现的this作为一个变量类型,它表示对正在构造的结构的引用。●在结构的方法中出现的this作为一个变量类型,它表示对调用该方法的结构的引用。除此之外,在其它地方...
C#中的静态成员和非静态成员

C#中的静态成员和非静态成员

C#中的静态成员和非静态成员2007-09-21 本站 若将类中的某个成员声明为static,该成员称为静态成员。类中的成员要么是静态,要么是非静态。一般说来,静态成员是属于类所有的,非静态成员则属于类的实例--对象。以下示例代码演示了如何声明静态和非静态成员。程序清单10-5:using System;class Test{int x;static int y; void F(){ x=1; //正确,等价于this.x=1 y=1; //正确,等价于T...
类的成员

类的成员

类的成员2007-09-22 本站 类的成员可以分为两大类:类本身所声明的,以及从基类中继承而来的。类的成员有以下类型:●成员常量,代表与类相关联的常量值。●域,即类中的变量。●成员方法,复杂执行类中的计算和其它操作。●属性,用于定义类中的值,并对它们进行读写。●事件,用于说明发生了什么事情。●索引指示器,允许象使用数组那样为类添加路径列表。●操作符,定义类中特有的操作。●构造函数和析构函数,分别用于对类的实例进行初始化和销毁。包含有可执行代码的成员被主食...
构造函数

构造函数

构造函数2007-09-22 本站 构造函数用于执行类的实例的初始化。每个类都有构造函数,即使我们没有声明它,编译器也会自动为我们提供一个默认的构造函数。在访问任何一个类的时候,将最先执行构造函数中的语句。实际上,任何构造函数的执行都隐式地调用了系统提供的默认的构造函数base()。如果我们在类中声明了如下的构造函数,C(...){...}它等价于:c(...):base(){...}使用构造函数请注意以下几个问题:●一个类的构造函数通常与类名相同。●构造...
构造函数的参数

构造函数的参数

构造函数的参数2007-09-22 本站 上一小节的例子中,类A同时提供了不带参数和带参数的构造函数。构造函数可以是不带参数的,这样对类的实例的初始化是固定的。有时,我们在对类进行实例化时,需要传递一定的数据,来对其中的各种数据初始化,使得初始化不再是一成不变的,这时,我们可以使用带参数的构造函数,来实现对类的不同实例的不同初始化。在带有参数的构造函数中,类在实例化时必须传递参数,否则该构造函数不被执行。让我们回顾一下10.2节中关于车辆的类的代码示例。我...
析构函数

析构函数

析构函数2007-09-22 本站 在类的实例超出范围时,我们希望确保它所占的存储能被收回。C#中提供了析构函数,用于专门释放被占用的资源。析构函数的名字与类名相同,只是在前面加上了一个符号“~”。析构函数不接受任何参数,也不返回任何值。如果你试图声明其它任何一个以符号“~”开头而不与类名相同的方法,和试图让析构函数返回一个值一样,编译器都会产生一个错误。析构函数不能是继承而来的,也不能显式地调用。当某个类的...
C#方法中的参数

C#方法中的参数

C#方法中的参数2007-09-22 本站 C#中方法的参数有四种类型:●值参数,不含任何修饰符。●引用型参数,以ref修饰符声明。●输出参数,以out修饰符声明。●数组型参数,以params修饰符声明。11.2.1 值参数当利用值向方法传递参数时,编译程序给实参的值做一份拷贝,并且将此拷贝传递给该方法。被调用的方法不传经修改内存中实参的值,所以使用值参数时,可以保证实际值是安全的。在调用方法时,如果形式化参数的类型是值参数的话,调用的实参的值必须保证是正...
C#静态和非静态的方法

C#静态和非静态的方法

C#静态和非静态的方法2007-09-22 本站 C#的类定义中可以包含两种方法:静态和非静态的。使用了static修饰符的方法为静态方法,反之则是非静态的。静态方法是一种特殊的成员方法,它不属于类的某一个具体的实例。非静态方法可以访问类中的任何成员,而静态只能访问类中的静态成员。看这个例子:class A{ int x; static int y; static int F(){x=1; //错误,不允许访问y=2; //正确,允许访问 }在这个类定义中...
C#操作符重载

C#操作符重载

C#操作符重载2007-09-22 本站 11.5.1 问题的提出在面向对象的程序设计中,自己定义一个类,就等于创建了一个新类型。类的实例和变量一样,可以作为参数传递,也可以作为返回类型。在第七章中,我们介绍了系统定义的许多操作符。比如对于两个整型变量,使用算术操作符可以简便地进行算术运算:class A{ public int x; public int y; public int Plus{return x+y;}}再比如,我们希望将属于不同类的两个实...
C#的静态域和非静态域

C#的静态域和非静态域

C#的静态域和非静态域2007-09-23 本站 静态域的声明是使用static修饰符,其它的域都是非静态域。静态域和非静态域分别属于C#中静态变量和非静态变量。若将一个域说明为静态的,无论建立多少个该类的实例,内存中只存在一个静态数据的拷贝。当这个类的第一个实例建立时,域被初始化。以后再进行类的实例化时,不再对其进行初始化,所有属于这个类的实例共享一个副本。与之相反,非静态域在类的每次实例化时,每个实例都拥有一份单独的拷贝。下面的例子清楚地反映了二者之间...
C#的只读域

C#的只读域

C#的只读域2007-09-23 本站 域的声明中如果加上了readonly修饰符,表明该域为只读域。对于只读域我们只能在域的定义中和它所属的构造函数中进行修改,在其它情况下,域是“只读”的。熟悉c和C++的程序员可能习惯了使用const和#define定义一些容易记住的名字来表示某个数值。static和readonly修饰符可以起到同样的效果:public class A{public static readonly double...
C#域的初始化

C#域的初始化

C#域的初始化2007-09-23 本站 注意:在C和C++中,未经初始化的变量是不能使用的。在C#中,将为每个未经初始化的变量提供一个默认值。这虽然中某种程序中保证了程序的安全性,但对本应初始化为某个特殊值的变量忘记了初始化,也常常会导致程序的执行误入岐途。对于静态变量、非静态的对象变量和数组变量,这些变量自动初始化为本身的默认值。对于所有引用类型的变量,默认值为null。所有值类型的变量的默认值见下表所示:表12-1 部分类型的域初始化的值变量类型默认...
C#中的属性

C#中的属性

C#中的属性2007-09-24 本站 属性是对现实世界中实体特征的抽象,它提供了对类或对象性质的访问。比如,一个用户的姓名、一个文件的大小、一个窗口的标题,都可以作为属性。类的属性所描述的是状态的信息,在类的某个实例中属性的值表示该对象的状态值。C#中的属性更充分地体现了对象的封装性:不直接操作类的数据内容,而是通过访问器进行访问。它借助于get和set对属性的值进行读写,这在C++中是需要程序员手工完成的一项工作。12.2.1 C#属性的声明C#的属性...
<< 101 102 103 104 105 106 107 108 109 110 >>