作者:kiki百乐门_867 | 来源:互联网 | 2023-10-09 21:14
类成员声明语句由下列部分组成:核心声明、一组可选的修饰符和一组可选的特性(attribute)。[特性][修饰符]核心声明修饰符:如果有修饰符,必须放在核心声明之前。如果有多个
类成员声明语句由下列部分组成:核心声明、一组可选的修饰符和一组可选的特性(attribute)。
[特性] [修饰符] 核心声明
修饰符:
如果有修饰符,必须放在核心声明之前。
如果有多个修饰符,要有序放置
特性
如果有特性,必须放在修饰符和核心声明之前
如果有多个特性,可以任何顺序
修饰符:public,private,static,const
实例类成员
public int Mem1;
静态字段
static int Mem2;被所有的实例可见,并且如果一个实例改变该值,其它实例使用的该值也会变化。
静态成员可以不用实例化,直接使用。
静态函数成员
Static public void PrintValA();
成员常量
Const int IntVal = 100;// 定义int类型常量,值为100
属性
属性是代表类的实例或类中的一个数据项的成员。
private>int theRealValue;
public>int TheRealValue
{
get
{ return theRealValue; }
set
{ theRealValue = value; }
}
但是使用属性的话,不能直接用get和set,而是直接使用赋值的方式。
构造函数
如果需要外部调用,需要声明为public
和类名相同,但是没有返回类型。
析构函数
每个类只能有一个析构函数
析构函数不能带参数
析构函数不能带访问修饰符
析构函数和类有相同的名称,但以一个"~"字符作前缀
析构函数只对类的实例起作用,因为没有静态析构函数。
不能在代码中显式地调用析构函数。
标准的清理模式
class>FuncTest:IDisposable
{
bool
disposed = false;
public>void Dispose()
{
Dispose(true);
GC.SuppressFinalize(>this);
}
~FuncTest()
{
Dispose(false);
}
protected>virtualvoid
Dispose(bool disposing)
{
if
(disposed == false)
{
if
(disposing == true)
{
//
Dispose the managed resources
}
//
Dispose the unmanaged resources
}
disposed =
true;
}
}
readonly修饰符
和const不同,即可以直接初始化,也可以在构造函数中设置它的值。
但是,如果是static字段,初始化必需在static构造函数中完成。
this关键字
this关键字在类中使用,是对当前实例的引用。
索引
和属性一样,索引不分配内存为存储
索引和属性都主要被用来访问其它数据成员这些成员和它们关联,它们为这些成员提供设置和获取访问。
和属性一样,索引可以只有一个访问器,也可以两个都有。
索引总是实例成员,因此,索引不能声明为static。
和属性一样,实现get和set访问器的代码不必一定要关联到某个字段或属性。这段代码可以做任何事情或什么也不做,只要get访问器返回某个指定类型的值即可。>
class>Employee
{
public>string LastName;
public>string Firstname;
public>string CityOfBirth;
public>stringthis[>int index]
{
set
{
switch
(index)
{
case
0: LastName = value;
break;
case
1: Firstname = value;
break;
case
2: CityOfBirth = value;
break;
default:
throw>new>ArgumentOutOfRangeException(>"index");
}
}
get
{
switch
(index)
{
case
0: return LastName;
case
1: return Firstname;
case
2: return CityOfBirth;
default:
throw>new>ArgumentOutOfRangeException(>"index");
}
}
}
}
当一个类中,有多个string和多个int想同时定义索引时,可以将索引定义为多个参数。
分部类和分部类型
用partial class的形式,声明分部类
partial>class>MyClass
{
partial>void PrintSum(int
x, int y);
public>void Add(int x,
int y)
{
PrintSum(x,
y);
}
}
partial>class>MyClass
{
partial>void PrintSum(int
x, int y)
{
Console.WriteLine(>"Sum is {0}", x + y);
}
}
var
mc = newMyClass();
mc.Add(5,
6);
C#图解教程读书笔记(第6章 类进阶),布布扣,bubuko.com