今天搞了一个下午的oracle,晕死了。装是是好了,就是连接还是老出错。烦死了,算了,明天继续搞了,先休息下继续学习C#了,今天多学点理论知识。
函数成员
函数成员是一些包含可执行语句的成员。函数成员总是类型的成员,并且不能是名称空间的成员。其中C#下面五种函数成员:
1、构造函数;
2、方法;
3、属性
4、索引
5、用户定义操作符
在函数成员中包含的语句通过函数成员调用来执行。函数成员调用的事件语法是根据不同的函数成员种类来定。然而,所有的函数成员调用都是表达式,它允许参数被传送到函数成员中,并且允许函数成员计算和返回一个结果。构造函数、方法、索引和操作符的引用,使用重载分析来确定调用哪个候选功能参数集。
下面看一个构造函数的五种函数成员发生的变化;
在表中,e、x、y和 value指示表达式被作作为变量或数值分类,T表示一个作为类型分类的表达式,F是一个方法的简单名称,P是一个属性的简单名称。
结构 | 例子 | 描述 |
构造函数调用 | new T(x, y) | 重载分析被应用于在类或结构T中选择最好的构造函数。构造函数被调用,有参数列表 (x, y)。 |
方法调用 | F(x, y) | 重载分析被应用于在包含的类或结构中选择最好的方法F。方法调用有参数列表 (x, y)。如果方法不是static,实例表达式就是this。 |
T.F(x, y) | 重载分析被应用于在类或结构T中选择方法F。如果方法不是static,会发生错误,方法调用有参数列表 (x, y)。 | |
e.F(x, y) | 重载分析被应用于在e给定的类、结构或接口中选择方法F。如果方法不是static,会发生错误,方法调用有参数列表 (x, y)。 | |
属性访问 | P | 在包含类或结构中的属性的get访问符被调用。如果P是只写的,会产生错误,如果P不是静态的,实例表达式就是this。 |
P = value | 在包含类或结构中的属性P的set访问符被调用,并且有参数列表(value)。如果P是只读的,会产生错误,如果P不是静态的,实例表达式就是this。 | |
T.P | 在类或结构T中的属性的get访问符被调用。如果P是只写的,会产生错误,如果P不是静态的,实例表达式就是this。 | |
T.P = value | 在类或结构T中的属性P的set访问符被调用,并且有参数列表(value)。如果P是只读的,会产生错误,如果P不是静态的,实例表达式就是this。 | |
e.P | 在类型e提供的类、结构或接口中的属性的get访问符被调用。如果P是只写的,会产生错误。 | |
e.P = value | 在类型e提供的类、结构或接口中的属性P的set访问符被调用,并且有参数列表(value)。如果P是只读的,会产生错误。 | |
索引访问 | e[x, y] | 重载分析被用于选择类型e提供的类、结构或接口。索引的get访问符被调用,有实例表达式e和参数列表(x, y)。如果P是只写的,会产生错误。 |
e[x, y] = value | 重载分析被用于选择类型e提供的类、结构或接口。索引的set访问符被调用,有实例表达式e和参数列表(x, y, value)。如果P是只读的,会产生错误。 | |
操作符调用 | -x | 重载分析被用于在类型x所给的类或结构中选择最好的一元操作符。所选择的操作符被调用,有参数列表(x)。 |
x + y | 重载分析被用于在类型x和y所给的类或结构中选择最好的一元操作符。所选择的操作符被调用,有参数列表 (x, y)。 |
参数列表
每种函数成员调用都包括一个参数列表,它提供了对函数成员的参数的引用的真实数据或变量。指定函数成员的参数列表的语法要根据函数成员的种类:
对于构造函数、方法和代表,参数被指定为一个参数列表,如下面所描述的一样 对于属性,当调用get访问符时参数列表是空的,并且当调用set访问符时由所指定的复制操作符的右边操作数构成。
· 对于标签,参数列表由标签访问中在方括号中指定的表达式构成。当调用set访问符时,参数列表另外包括所指定的复制操作符的右边操作数。
对于用户定义的操作符,参数列表由一元操作符的单操作数或二元操作符的两个操作数构成属性、索引和用户定义的操作符的复制通常要传递数值参数,这些函数成员的种类不支持引用和输出参数
功能成员调用
在运行时调用一个特殊的功能成员发生的过程。假设一个编译时的过程已经决定要调用的特殊成员,很可能是通过对候选功能成员集使用重载分析来实现。
静态函数成员。这里有静态方法、构造函数、静态属性访问符和用户定义的操作符。静态函数成员通常是非虚的
实例函数成员。这里有实例方法、实例属性访问符和索引访问符。实例函数成员可以是非虚拟或虚拟,并且通常是在一共特殊实例中引用。这个实例由一个实例表达式计算,并且它在功能成员中变的可访问