C#学习教程之三
C# 类是一种数据结构,它可以封装数据成员、函数成员和其他的类。类是创建对象的模版。C#的一切类型都是类,所有的语句都必须位于类内,不存在任何游离于类外的语句。因此,类是C#语言的核心和基本构成模块。
C#类
类是从实际对象中抽象出来的一种完整、自含的数据结构,封装了一类对象共有的属性和功能。C#使用关键字Class来声明类
C#声明类形式如下:
[特性]-----------(类特性描述,可选)
[类修饰符-------可选] Class [类名------必须] [:[基类或接口-----是否存在,存在必须]]{
[类体--------必须]
}
C#类构成:
访问修饰符
可以访问一个成员(类)的代码(包含数据成员和函数成员)范围叫做该成员(类)的可访问域。访问修饰符用来控制所修饰成员的可访问域。访问修饰符使类或者类的成员在不同的范围内具有不同的可见性,用于实现数据和代码的隐藏。
同一程序集中的任何其他代码或引用该程序集的其他程序集都可以访问该类型或成员。
只有同一类或结构中的代码可以访问该类型或成员。
只有同一类或结构或者此类的派生类中的代码才可以访问的类型或成员。
同一程序集中的任何代码都可以访问该类型或成员,但其他程序集中的代码不可以。
由其声明的程序集或另一个程序集派生的类中任何代码都可访问的类型或成员。 从另一个程序集进行访问必须在类声明中发生,该类声明派生自其中声明受保护的内部元素的类,并且必须通过派生的类类型的实例发生。
类修饰符:如果类不是在某个类内声明,那么这个类就是顶级类。顶级类只能使用public 和internal两种访问修饰符,他们的意义如下:
public:所修饰的顶级类,访问不受限制。
internal:所修饰的顶级类可访问域是定义它的程序。
静态成员和实列成员
在类的成员类型前面加上关键字”Static“,就是将该成员定义为静态成员。常量或类型声明会隐式的声明为静态成员,其他没有用static 修饰的成员都是实列成员。
构造函数和折构函数
构造函数:用于执行类的实例的初始化。
构造函数分为:默认构造参数
私有构造参数:如果构造参数被声明为private 类型,则这个构造参数不能从类外访问,因此也不能用来在类外创建对象。私有构造函数一般仅仅应用于只包含静态成员的类。
静态构造参数:用于实现初始化类所需的操作。声明静态构造函数只需要在构造函数名前使用关键字static。
折构函数:用于实现销毁类实例所需的操作,并释放实例所占的内存。折构函数构成:”~“+类名
相关代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Hello_World
{
public class Conversion
{
public static void Main() {
//C# 类实例
A a = new A();
Console.WriteLine("按Enter键退出程序......");
Console.Read();
}
//声明一个C#类:Class A
public class A {
public A() {
Console.WriteLine("A的默认构造函数");
}
~A() {
Console.WriteLine("A的折构函数");
}
}
}
}
效果截图:
只读字段:在声明字段时,如果在字段类型之前使用关键字readonly,那么该字段就被定义为只读字段。只读字段只能在如下两个位置被赋值或传递到方法中改变;
1、在声明字段时赋值
2、在类的构造函数内被赋值或传递到方法中被改变。在构造函数内可以被多次赋值。
关键字this作用:
1、关键字this表示当前类实例或者对象的引用。this不能在静态构造函数和静态函数成员中,也不能在其他地方使用。
2、this 构造函数------待详细讲解
索引器:C#支持一种名为索引器的特殊”属性“,能够用引用数组元素的方式引用对象。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Hello_World
{
public class Conversion
{
public static void Main() {
//C# 类实例
A a = new A();
a[0] = "1";
a[1] = "2";
a[2] = "3";
a[3] = "4";
a[4] = "5";
a[5] = "6";
a[6] = "7";
a[7] = "8";
for (int i = 0; i < A.MaxNum;i++ )
{
Console.WriteLine("取值为:"+a[i]);
}
}
//声明一个C#类:Class A
public class A {
public const int MaxNum = 8;
private string[] member;
//构造函数
public A() {
member = new string[MaxNum];
}
//定义索引器
public string this[int index] {
get {
return member[index];//取值
}
set {
member[index] = value;//赋值
}
}
}
}
}
效果截图:
内部类:类的定义是可以嵌套的,即在类的内部还可以定义其他的类。类内声明的类称为内部类或者是嵌套类。
分部类:分布类型可以将类划分为多个部分,存储在不同的源文件中,以便于开发和维护。
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。