从2004年初开始学习C#就读的这本书,但是一直是断断续续的看,没有仔细的从头到尾看过,现在把这本书重新拿出来细品(毕竟是Lippman的书,值得细读),发现还有些知识点以前没有注意过或者理解的不够透彻,记录下来,以便随时翻阅并与大家共享:
第一章 Hello, C#
1.2、命名空间(Namespaces):
命名空间和类可以指定别名(alias)。别名仅在当前的声明空间内有效。(当前声明空间我理解为当前文件,做过测试,在其他代码文件中无法使用)
using data = System.Data;
using table= System.Data.DataTable;
1.4、编写一个语句:
在switch中可以使用goto从一个标签跳转到另一个标签
第二章 Class的设计
2.15、可变长度之参数列():
关键字params用以指明 “参数个数不定”;紧接着关键字params之后有个array,其型别是我们愿意接受之参数型别。
public void message(string msg, params object[] args) 与 public void message(string msg, object[] args) 是不同的,前者参数至少为一个string,最长可变;后者的第二个参数是object数组。
2.16、操作符重载():
所有操作符函数都必须声明为pugblic和static,然后是返回类型,关键字operator,紧跟在关键字operator之后的十待被重载的操作符。
public static Matrix operator *(Matrix mat, double dval)
这个操作符重载至少必须有一个参数是此类的实体。参数个数取决于被重载操作符需要的参数个数。参数不可以使ref或out。
复式赋值操作符不可以进行重载,不能重载的操作符包括:&&, ||, =, ?:, +=, -=, *=, /=, |=, ^=, <<=, >>=
2.17、转换式操作符():
自定义类的隐式(implicit)转换或显示(explicit)转化,就像“重载操作符”一样,“转化式操作符”必须为static和public。此外还必须指定关键字implicit或explicit。紧跟在关键字operator之后的那个型别,就是转换式的返回型别。其唯一参数所代表的,是转换动作的原始型别。
隐式转换
public class BitVector
{
static public implicit operator string(BitVector bv)
{
return "0";
}
static public implicit operator ulong(BitVector bv)
{
return 0;
}
}
显示转换
public class BitVector
{
static public explicit operator BitVector(string s)
{
return new BitVector();
}
static public explicit operator ulong(BitVector bv)
{
return 0;
}
}
第三章 面向对象程序设计
这一章描述的都是面向对象的基础,只有个别特别之处
3.14、Exception 继承体系:
Exception class阶层体系有两个主要子树:SystemException和ApplicationException,如果要引入自己的异常类,建议从ApplicationException派生他们。同时最好为这些异常提供缺省构造函数。
第一章 Hello, C#
1.2、命名空间(Namespaces):
命名空间和类可以指定别名(alias)。别名仅在当前的声明空间内有效。(当前声明空间我理解为当前文件,做过测试,在其他代码文件中无法使用)
using data = System.Data;
using table= System.Data.DataTable;
1.4、编写一个语句:
在switch中可以使用goto从一个标签跳转到另一个标签
第二章 Class的设计
2.15、可变长度之参数列():
关键字params用以指明 “参数个数不定”;紧接着关键字params之后有个array,其型别是我们愿意接受之参数型别。
public void message(string msg, params object[] args) 与 public void message(string msg, object[] args) 是不同的,前者参数至少为一个string,最长可变;后者的第二个参数是object数组。
2.16、操作符重载():
所有操作符函数都必须声明为pugblic和static,然后是返回类型,关键字operator,紧跟在关键字operator之后的十待被重载的操作符。
public static Matrix operator *(Matrix mat, double dval)
这个操作符重载至少必须有一个参数是此类的实体。参数个数取决于被重载操作符需要的参数个数。参数不可以使ref或out。
复式赋值操作符不可以进行重载,不能重载的操作符包括:&&, ||, =, ?:, +=, -=, *=, /=, |=, ^=, <<=, >>=
2.17、转换式操作符():
自定义类的隐式(implicit)转换或显示(explicit)转化,就像“重载操作符”一样,“转化式操作符”必须为static和public。此外还必须指定关键字implicit或explicit。紧跟在关键字operator之后的那个型别,就是转换式的返回型别。其唯一参数所代表的,是转换动作的原始型别。
隐式转换
public class BitVector
{
static public implicit operator string(BitVector bv)
{
return "0";
}
static public implicit operator ulong(BitVector bv)
{
return 0;
}
}
显示转换
public class BitVector
{
static public explicit operator BitVector(string s)
{
return new BitVector();
}
static public explicit operator ulong(BitVector bv)
{
return 0;
}
}
第三章 面向对象程序设计
这一章描述的都是面向对象的基础,只有个别特别之处
3.14、Exception 继承体系:
Exception class阶层体系有两个主要子树:SystemException和ApplicationException,如果要引入自己的异常类,建议从ApplicationException派生他们。同时最好为这些异常提供缺省构造函数。