苏坤基础提高视频笔记

  • 格式:docx
  • 大小:239.68 KB
  • 文档页数:9

基础提高

01 类-----------------------------------------2012-05-17

●类是不占内存的 ,只有声明了对象之后才占内存

●C#中一般定义一个类都新建一个.cs文件 ,并且类名与文件名相同

●类的命名一般首字母大写

●产生一个类对象的方法 :

●在C#中,结构也可以定义方法,典型的例子就是:

其中int 就是一个结构,TryParse就是方法

02复习类-----------------------------------------2012-05-18

●虽然一个文件中可以定义多个类,但是一般情况下,一个类写在一个单独的文件中

●静态方法只能调用静态方法。如果想要调用一个非静态方法,必须实例化要调用的那个方法所属的类的一个对象,再利用该对象去调用方法。

●注意:Person zhangshan; 这只是声明一个该类型的变量;必须通过zhangshan = new Person() ; 这样才能在内存中产生一个实实在在的对象。

static void Main(string[] args)

{

Person personZhangsan = new Person();

personZhangsan.SayHello();

Console.ReadKey();

}

如果未指明对象各个属性的值,默认初始化为空(字符串或char型),或者0(int型),结果如下

Person personZhangsan;

personZhangsan.SayHello();

这样是不行的,相当于使用了一个未赋值的变量,这在C#中是不允许的。

●Person personZhangsan;

= "zhangsan";

personZhangsan.age = 20;

personZhangsan.sex = '男';

personZhangsan.SayHello();

这样也是不行的,C#跟C++不一样,必须通过new Person();才能分配出一个内存空间,相当于调用了构造函数

03属性-----------------------------------------2012-05-18

●访问修饰符在C#中有4个:

Public:可以在任何地方被访问

Internal:只能在本项目中被访问

Private:只能在本类中被访问

Protected:只能在本类和子类中被访问

●在一个类定义的变量或方法,没有写访问修饰符,那么访问修饰符默认为private

●在类中定义的变量应该叫作字段。这种图标表示的东西才叫属性。

●用=访问私有变量的方法 :

当用户对用=号对Age进行赋值的时候就自动调用set方法,当用户用=对Age进行取值的时候就自动调用get方法。在get中用return关键字返回要给别人的字段。Set中用value关键字保存了用户所给的值。 ●

●对字段封装为属性的快捷方法:

右击字段名-重构-封闭字段

快捷键方法:看菜单-重构

●允许外部访问的变量一定要声明为属性

●设置只读,只写,读写属性,只须选择相应的get set 即可。

比如:如果想设为只读,则只须写get方法即可。

只写属性用得比较少

04属性习题-----------------------------------------2012-05-18

●internal 用于修饰类级别的,表明该类仅可以为本项目访问

●属性命名方法开头大写

●静态方法只能访问静态字段。

05构造方法-----------------------------------------2012-05-18

● ●

●定义构造方法

●注意定义构造方法的时候一般为构造方法 声明为public访问类型,否则在比如 Student zhangshan = new Student();时就会出错,因为在没有声明构造方法访问类型的时候,默认访问类型为private,是不能被外界访问的。

●this表示当前类,当前实例(当实例化一个对象时)。注意,this并不是指针,这个和C++的不一样。

●当构造方法对类中的一些字段进行赋初值的时候,没被赋初值的那些字段跟调用默认构造函数的的情况是一样的。

06构造方法的重载-----------------------------------------2012-05-18

●要实例化一个类,必须调用构造方法

●如果自己写了一个构造方法,则默认无参构造方法将不再起作用。

●C#中的通用类图

-表示私有,+表示公有。

●项目名-右键-查看类关系图

●析构函数在C#中几乎不用,因为C#中有一种“垃圾回收器”。

一个类只有一个析构方法。

无法调用析构函数,因为它是被自动调用的。

析构函数既没有访问修饰符,也没有参数,也没有返回值。

●不能在结构体中定义析构函数,但是结构体中可以有构造函数

●析构函数名和类名相同前面加一个~

07构造方法习题-----------------------------------------2012-05-18

●如果想要抛出一个异常,可以 这样写:

Throw new Exception(“错误信息”);

也可以这样写:

Exception ex = new Exception(“错误信息”); Throw ex;

其中“错误信息”是用来报错的,当遇到抛出异常之后,就会自动报错。

●如果要声明一个数字为decimal型,则在数字后面加一个m,如:

1.2m

09命名空间-----------------------------------------2012-05-18

●不在同一个命名空间的类,不能被直接访问,要想访问别的命名空间下的类有两种方法:

1:通过using 引用要使用的类的命名空间

2:写全称:命名空间名.类名

●自动加命名空间的方法:

类名称. + enter 即可自动加上定义该类的命名空间

●命名空间下可以包含其它命名空间

●system 为.net框架下的根命名空间

10 string-----------------------------------------2012-05-19

●string 是一个类

●string 可以通过下标来访问单个字符,跟Char数组一样

如:string str; 这样也可以得到长度 str.Length ;

但是,它是只读的,不能过单个位置进行赋值。

●用string 定义的一个字符串为什么可以不用new,因为用“”包起来的东西本身就是一个字符串对象。

● 可以返回一个char数组。

●如果想改变字符串中的某一个字符就可以这样:

●字符串转大写或都小写,查看string 类的msdn

11 复习昨天的内容-----------------------------------------2012-05-19

●定义了一个类之后,默认的访问修饰符为internal ,只能在本项目被访问,如果想要被其它项目访问,可以加public,(三层架构的时候会用得到)。

●凡是允许外部访问的变量,一定要设置为属性

●string 的 Equals 方法用于比较两个字符串,如果相同则返回true,否则返回false,可设定区不区分大小写,详情查看msdn.

●一切类型都有一个ToString 方法,可以转换为字符串

●自定义类型转化为字符串之后,输出为 :命名空间名.类名

如:

●string 类的Split用于分隔一个字符串,返回一个字符串数组

●怎么分隔这句话“How are you?Fine,thank you!”为多个单词?

string str = "How are you?Fine,thank you!";

string[] strs = str.Split(' ','?','!',',');

for(int i=0;i

{

Console.WriteLine(strs[i]);

} Console.ReadKey();

●不返回空字符

string[] strs = str.Split(ch,StringSplitOptions.RemoveEmptyEntries);

注意第二个参数的使用

●Substring

Contains

Replace

StartsWith

EndsWith

IndexOf //首次出现的位置

用法 见msdn

●String 其内存消耗会比StringBuilder还严重

注意理解字符串的不可改变性