C#基础代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3. 输出型参数
方法中的 return 语句只能返回一个数据,虽然也可以使用引用型参数返回多个数
据,但要求先初始化实参。而输出型参数不需要对实参进行初始化,它专门用于把方法中的
数据通过形参返回给实参,但不会将实参的值传递给形参。一个方法中允许有多个输出型参
数。
C#通过 out 关键字来声明输出型参数,无论是形参还是实参,只要是输出型参数,
1.6.2 索引器
通过属性可以控制类或结构中字段的访问,但是,如果某个类或结构中的字段是一个包 括多个元素的集合(如数组),索引器或许是一个更பைடு நூலகம்的选择。
索引器与属性类似,也是一种访问类和结构中字段的方法,不同之处在于索引器中的访 问器采用参数,通过它可以对类或结构的对象按照与数组相同的方式进行索引。
属性中不一定同时包括 get 和 set 访问器。根据属性中所使用的访问器,将属性分类如 下: 读/写属性:在这类属性的定义中,同时包含了 get 和 set 访问器。 只读属性:在该属性的定义中,只包含有 get 访问器,如果对其进行写操作,将会导致错误。 只写属性:在该属性的定义中,只包含有 set 访问器,通过属性可以修改内容,但如果对其 进行读操作,将会导致错误。
提示:静态类中只包含静态成员;非静态类中可以包含静态成员,也可以不包含静态成员。
当属性声明中包含 static 修饰符时,这个属性为静态属性。在很多方面,静态属性和其 他静态成员的限制相同。但要注意,静态属性只能访问类的静态成员。
例如,下面是 Person 类的一个无参数的构造函数,将 age 字段值设为 18: public Person() {
age = 18; }
如果希望通过不同的数据创建不同的对象,可以使用带参数的构造函数。例如: public Person (string s) { name = s; }
没有构造函数的类被指定一个默认的构造函数,即一个无参数的构造函数。默认构造函 数为字段赋默认值,也可以用自定义的无参构造函数取代默认构造函数。下面的新建语句调 用类的默认的构造函数:
列表。无论采用哪一种形式,形参数组都不能定义数组的长度。 提示:C#中使用数组型参数有三个规则:方法中只允许定义一个数组型参数,且必
须位于参数列表的最后;数组型参数所定义的数组必须是一维的;数组型参数不能同时作为 引用型参数或输出型参数。
1.4.4 方法的重载 方法重载(overload)是指程序在同一个类中定义相同名称的多个方法成员的能力。重载
基类:virtual 派生类:override 可变的参数 params 虚拟 virtual 重写 override 抽象 abstract 密封 sealed 局部 Partial
委托 delegate
3.逻辑运算符
用于逻辑运算。包括与(&&)、或(||)、非(!)三种。
4.位操作运算符
参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。
2.引用型参数 调用方给方法传递引用类型参数时,调用方将把实参变量的引用赋给对应的形参变量。
实参变量的引用代表数据值的内存地址,因此,形参变量和实参变量将指向同一个引用。如 果在方法内部更改了形参变量所引用的数据值,则同时也修改了实参变量所引用的数据值。 由于使用 return 语句一次只能返回一个数据,如果需要返回多个数据,可以利用引用型参 数来实现。
的成员之间惟一的差别,就是它们具有不同的签名(即不同的参数类型或不同的参数个数)。
方法的名称和形参列表定义了方法的签名。方法的签名由它的名称、成员、修饰符和形参类 型组成,而返回类型不是方法签名的一部分,形参的名称也不是方法签名的一部分。
其实在前面的很多例子中都用到过重载,例如 Console 类的 WriteLine()方法。下面来看 看如下代码: string text = ”字符串”; Console.WriteLine(text); int num=100; Console.WriteLine(num);
数据类型表示将要存取的数组或集合元素的类型; this 表示操作本对象的数组或集合成员,可以简单的把它理解成索引器的名字,因此索 引器不能具有用户定义的名称;
索引类型表示该索引器使用哪一种类型的索引来存取数组或集合元素,可以是整型,也 可以是字符串类型。
从索引器的声明格式可以看出,索引器和属性有很多的相似之处,都拥有 get 和 set 访问 器,而且访问器发生作用的方式也和属性相同。
1.3.3 类成员的可访问性
(3) 内部成员(internal)。内部成员通过在成员声明中使用 internal 修饰符来定义。该成员 只能在当前程序集中访问。 (4) 私有成员(private)。私有成员通过在成员声明中使用 private 修饰符来定义。在 C#中, 只有类内部的成员才可以访问私有成员,在类的外部是禁止直接访问私有成员的。这也是 C#中成员声明的默认方式,若在成员声明时没有使用任何访问修饰符,那么 C#自动将它限 定为私有成员。 (5) 保护内部成员(protected internal)。保护内部成员是同时使用了 protected 和 internal
在上述代码中,两次使用了 WriteLine()方法,但是,传递给方法的参数类型不同。在 Console 类中提供了十几种 WriteLine 方法,可以以不同的方式输出不同类型的数据。
1.5.1 构造函数
构造函数是类的重要成员,是用于初始化一个对象状态的特殊方法。构造函数与类同名, 其主要功能是初始化字段和保证对象在它的生存期里是一个可知状态。构造函数由 new 运 算符调用。一个构造函数的语法格式如下所示:
类的成员可以是静态成员也可以是非静态成员,C#中用关键字 static 作为静态修饰符。 一般来讲,静态成员是属于类的(而不属于类的实例),而非静态成员是属于对象(类的实 例)的。在使用静态成员时,不需要实例化类。
当一个字段、方法、属性、事件或构造函数的声明中包含静态修饰符时,它就声明为一个静 态成员。静态成员具有以下特征:
采用与属性的分类相同的方式,可以将索引分为以下三类: (1)读/写索引器:索引器中包含 set 和 get 访问器,对索引器拥有读和写两种方式。 (2)只读索引器:索引器中只包含 get 访问器,此时,只能通过索引器读取内容。 (3)只写索引器:索引器中只包含 set 访问器,此时,只能通过索引器写入内容。
静态类的主要特征如下: (1)静态类仅包含静态成员。 (2)静态类不能被实例化。 (3)静态类是密封的。 (4)静态类不能包含实例构造函数,但可以声明静态构造函数,以分配初始值或设置某个 状态。 (5)静态类不可继承。
静态类的优点如下: (1)编译器能够自动执行检查,以确保不添加实例成员。 (2)静态类能够使程序的实现更简单、迅速,因为不必创建对象就能调用其方法。 1.7.2 静态成员
通过索引器可以存取类的实例的集合和数组成员,操作方法与数组相似,一般格式如下: 对象名[索引]
其中,索引的数据类型必须与索引器中的索引类型相同。
1.7.1 静态类 静态类使用 static 关键字来声明,以指示它仅包含静态成员,而且不能使用 new 关键字
创建静态类的实例。在实际应用中,当类中的成员不与特定对象关联的时候,就可以把它创 建为静态类。
{ [ 语句; ]
} 【说明】
析构函数的名字与类名相同,只是在前面加了一个符号~ ,它不能带有任何参数,也不 能返回任何值,不能是静态的,也不能有访问修饰符。
1.6.1 属性 在使用属性之前,通常声明一个私有变量。微软推荐属性和私有变量使用相同的名称,
只是该变量名称和属性名称的第一个字母不同,属性名称使用 Pascal 样式(首字母大写), 而私有变量名称使用 Camel 样式(首字母小写)。
1.3 类和对象
1.3.3 类成员的可访问性
为了控制类的作用范围或访问级别,C#提供了访问修饰符。访问修饰符既可以用来限制 类和结构,也可以用来限制类成员。这些访问修饰符包括 public、internal、private、protected 和 protected internal。 (1) 公共成员(public)。公共成员通过在成员声明中使用 public 修饰符来定义。从直观上来 说,“公共的”是指“无限制访问”,定义的成员可以在类的外部进行访问。 (2) 保护成员(protected)。保护成员通过在成员声明中使用 protected 修饰符来定义。为 了方便派生类的访问,但又不希望其他无关类随意访问,就可以使用 protected 修饰符,将 成员声明为保护的。
索引器的声明格式如下: [访问修饰符] 数据类型 this [索引类型 形参] {
get {
// 执行代码 return <表达式>; } set { // 执行代码 // 表达式(可以使用关键字 value) } }
【说明】
访问修饰符包括 public、protected、internal、new、virtual、sealed、override、abstract、 extern;
这两个修饰符来定义的,访问权限仅限于当前程序集或该类的派生类访问。
1.4.3 方法的参数 1.值类型参数
调用方给方法传递值类型参数时,调用方将把实参变量的值赋给相对应的形参变量,即 被调用的方法所接收到的只是实参数据值的一个副本。当在方法内部更改了形参变量的数据 值时,不会影响实参变量的值,即实参变量和形参变量是两个不相同的变量,它们具有各自 的内存地址和数据值。因此,实参变量的值传递给形参变量是一种单向值传递。
(4)由于静态成员是属于类的,所以可以在类实例之间共享它。静态属性和静态字段可以 访问独立于任何对象实例的数据,静态方法可以执行与对象类型相关但与特定实例无关的命 令。
静 态 属 性 和 方 法 经 常 用 到 , 例 如 , 在 控 制 台 程 序 中 使 用 的 Console.ReadLine() 和 Console.WriteLine()就是静态方法。





out




4. 数组型参数 把数组作为参数,有两种使用形式:一种是在形参数组前不添加 params 修饰符,
另一种是在形参数组前添加 params 修饰符。不添加 params 修饰符时,所对应的实参必须是 一个数组名;添加 params 修饰符时,所对应的实参可以是数组名,也可以是数组元素值的
1.索引器的定义 在 C#中,数组声明之后就可以通过索引来访问数组中的单个成员了,例如:
int[] numbers = new int[5]; numbers[4] = 201;
数组为处理多个相同类型的数据带来了很大的便利,那么对象可不可以采用类似的方式 处理呢? C#提供了索引器可以实现类似的操作,允许程序员以简单的方式,像数组那样访问 对象。
【格式】[访问修饰符] 类名(参数列表) { [ 语句; ] }
【说明】 ① 一个构造函数的可访问性决定了引用类型的新实例可以在哪里创建。例如,一个公共构 造函数允许一个对象在程序的任意位置创建,一个私有的构造函数禁止在类之外创建实例。 ② 构造函数的参数列表有 0 到多个参数。 ③ 构造函数不能包含任何返回值。
(1)一个静态字段确定一个存储位置。不管类中创建了多少实例,总是只有一个静态字段 的备份。
(2)当以“E.M”形式引用静态成员时,E 必须是某个类型,而不能是某个实例。也就是 说,静态成员是通过类而不是通过类的实例来访问。
(3)静态功能成员(方法、属性、索引或构造函数)不能对指定的实例进行操作,而且不能 在静态功能成员中使用 this 关键字。
Person p1= new person() 构造函数可以重载。重载构造函数的函数解析是由新建语句的参数决定的
1.5.2 析构函数 析构函数用于销毁对象。当不再需要某个类的某个对象时,通常希望它所占的存储空间
能被收回。C#中提供了析构函数,专门用于释放对象占用的系统资源,它是类的特殊成员。 析构函数的定义格式如下: 【格式】~类名( )
相关文档
最新文档