读书笔记_C#技术内幕_第七章(类的使用)
来源:互联网 发布:淘宝导购软件 编辑:程序博客网 时间:2024/05/18 00:50
类的构架:
class classname
{
// constructors
// destructors
// fields
// methods
// properties
// indexers
// events
// delegates
// enumerations
// classes
}
实例成员和静态成员:
实例成员是在创建类成员时就以独立的实体存在,具有自己的一组属性和行为的成员。
静态成员是在给定的时间内只允许存在一个拷贝的类的成员。
访问限制修饰符:
修饰符 能够看到的成员
Private 只有同一类的成员
Protected 同一类的派生类的成员
Internal 同一程序的成员
Protected internal 同一程序或派生类的成员
Public 任何成员—开放的访问限制
常量字段和只读字段:
只读(readonly)字段与常量(const)字段一样,初始化之后就不能够修改。两者之间最大区别是初始化时间不同:常量是编译时初始化而只读字段是运行时初始化。
析构函数:
~classname(){}
使用析构函数来清除类的资源会增加资源耗尽、系统崩溃或死锁的危险。基本规则是:不要依靠析构函数来释放类所占用的关键资源。
方法的特征标记:
方法有与其他类成员完全不同的特征标记(signature)。基本格式如下:
[modifiers] returnType MethodName ([parameter list])
{
[statements]
}
方法修饰符 含义/引用
abstract 只是方法特征标记,没有实现
extern 外部方法的方法特征标记
internal 程序可访问
new 隐藏同一名称的基类方法
override 当虚基类方法通过基类引用调用时,在基类中同一方法的覆盖实现声明为虚拟的
private 只有同类可以访问
protected 只有同类或派生类可以访问
static 不属于类实例
virtual 允许派生类的方法定义为override,并且当这个方法通过对它包围的类的引用调用时才被调用
方法参数:
方法参数指定了从调用程序中作为参数接受的方法的变量的类型。方法参数列表中可以有零个或多个参数(视需要而定)。通常参数越少越好。有四种参数可以使用:值参数(value)、引用参数(reference)、输出参数(output)和参量参数(params)。
值参数:
通常在参数声明中没有指定它的种类时,参数种类就默认为值参数。如果参数已经是一个引用,那么它的类型就是引用参数。当传递数组时,就默认为params。值参数提供了它们自己的局部拷贝给方法。这就是说方法可以更具需要读取和写入参数,但是从调用程序来的原始拷贝不变。
引用参数:
可以把引用参数看作是in/out参数。在方法的主体内修改ref参数也会修改作为参数传递的原始变量。把ref参数传递到方法之前必须先对它们赋值。
输出参数:
从方法返回信息的另外一种方法是使用out(输出)参数。out参数不必预先进行赋值,但是在方法返回之前一定要赋值。即使一个变量在方法调用前确实已经赋值,但是一旦在方法调用内部仍然认为没有赋值。因此,在out变量的初始化前,在方法内要访问out变量都会导致一个编译错误。因为要求在离开方法之前赋值给参数,在进行方法调用完成前,可以放置任何数据到out对象。在方法执行时将用放进的数据代替该参数。
params参数:
参量(params)参数可以把一维数组或不规则数组传递到方法,并且必须是方法参数列表中的最后一个参数。传递的参数可以是数组或能够转换成数组的值的列表。在不能预先了解有多少值将会传递时,params参数是传递多个值到方法的好办法。
索引器:
public class class1
{
// class1 implementation
}
public class class2
{
SortedList list;
public class2()
{
list = new SortedList();
}
public class1 this[int index]
{
get
{
//
}
set
{
//
}
}
}
- 读书笔记_C#技术内幕_第七章(类的使用)
- 读书笔记_C#技术内幕_第二章
- 读书笔记_C#技术内幕_第三章(C#表达式)
- 读书笔记_C#技术内幕_第十三章(创建结构)
- 读书笔记_C#技术内幕_第十四章(实现接口)
- 读书笔记_C#技术内幕_第十五章(执行转换)
- 读书笔记_C#技术内幕_第二十三章(多线程)
- 读书笔记_C#技术内幕_第二十七章(属性)
- 读书笔记_C#技术内幕_第二十八章(反射)
- 读书笔记_C#技术内幕_第十二章(使用命名空间组织代码)
- 读书笔记_C#技术内幕_第十七章(文件的输入/输出和串行化)
- 读书笔记_C#技术内幕_第二十五章(字符串操作)(String类)
- 读书笔记_C#技术内幕_剩余章节
- 读书笔记_C#技术内幕_第八章(设计面向对象的程序)
- 读书笔记_C#技术内幕_第九章(重载类成员和操作符)
- 读书笔记_C#技术内幕_第十一章(委托和事件)(委托部分)
- 读书笔记_C#技术内幕_第十一章(委托和事件)(事件部分)
- 读书笔记_C#技术内幕_第二十五章(字符串操作)(StringBuilder,字符串格式化)
- 使用 Eclipse 中的 TCP/IP Monitor (转)
- 读书笔记_C#技术内幕_第二章
- 打造属于自己的eclipse plugin 插件
- 读书笔记_C#技术内幕_第三章(C#表达式)
- 读书笔记_C#技术内幕_第六章(对象和组件概念)
- 读书笔记_C#技术内幕_第七章(类的使用)
- 读书笔记_C#技术内幕_第八章(设计面向对象的程序)
- 注
- latin1轉utf8_general_ci
- mysql 從 latin1 轉 utf-8 的經驗
- Installing C++ Boost on Microsoft Windows for Visual Studio .NET 2003/2005/Orcas
- C++中的类:构造函数(上)
- 技术论坛
- c# 泛型集合Dictionary