苏坤基础提高视频笔记
- 格式: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还严重
注意理解字符串的不可改变性