-->学习.Net开发,学习C#语言作为自己的开发语言,就需要真正学好学会这门语言,而C#面向对象就是C#语言的核心思想。 -->C#面向过程相当于“自己亲力亲为”,而C#面向对象就是“Boss将任务分配给手下去做”,其中C#思想的转变非常关键。
-->知识点1:属性概念。属性就是对象具有的特征值,每个对象具有的每个属性都有特征值。比如陈军年龄是23岁,性别是男等特征,这个就是对象陈军的属性及属性值。
-->知识点2:对象与类的区别:对象是实实在在存在的,具体到那个是对象;而类是一个模板而已,是虚构的,不存在的。比如我现在操作的这部电脑是联想电脑,就是一个对象,实实在在存在的,但是如果只是说联想电脑,这个概念就是非常模糊,因为不清楚到底哪个才是联想电脑,可以指他的,或者你的,等等,这个就是类。
------------------类是模板,是确定对象会有的属性和方法。相当于人类可以确定出生的人有性别、身高等特征、能走路、吃饭等行为。前者在生活中找得到,后者无法找到。
-----------------类声明对象和前面声明变量类似。类名 对象名;就完成声明一个对象了,注意类不占计算机内存,对象才占内存。
-->知识点3:类的定义及使用:[访问修饰符] class 类名 {成员;...},类中可以包括变量的定义、属性、方法。比如class Person {public string name;public string age;public void SayHello() { Console.WriteLine("Hello!"); } },这样就完成一个类的定义,定义一个Person类,里面包括name、age字段,有SayHello方法。
----------------通过类产生对象。叫做声明一个对象,实例化类成一个对象。语法:类名 实例名(变量名) =new 类名 ();,比如Person chenH=new Person();,这样就完成一个对象的声明,注意=前面是声明一个对象名(变量名),后面的才是开辟一块内存空间,真正实例化了,才说明chenH在计算机中实实在在存在的。当然也必须是实例化之后,对象才能够类的属性和方法。
----------------访问类的属性:实例名.属性名;;访问类的方法:实例名.方法名。这个前提是访问的类是非静态的类。比如chenH.name;chenH.SayHello();。
----------------静态类的访问即有static修饰的类,不需要实例化,直接类名.属性名和类名.方法名即可访问类的属性和方法了。类似于生活中“公共设施“的意思。
-->知识点4:访问修饰符:包括属性的访问修饰符(public、internal、protected和private)和类的访问修饰符(public、protected和internal)。
-----------------属性:public代表公有的,可以在任何地方被访问;internal代表只能在本项目中被访问;protected是受保护的意思,只能在本类和子类中被访问;private指私有的,只能在本类中被访问。默认是private修饰符。
-----------------类:public代表公有,可以在任何地方被访问;protected是受保护的意思,只能在本类和子类中被访问。internal代表是只能在项目中被访问。默认是internal。
-->知识点5:属性。如果在方法中定义了一个变量,这个变量有get或set方法,那么这个变量就有对应的属性,为什么是说对应的?因为变量往往是由public修饰的,来保护一个由private私有的私有变量。这样外界只能通过属性来访问,保护了那个私有变量。 比如:private int age; public int Age { get { return age} ; set {age=value; } }。这个Age就是属性,外界可以访问Age,但无法访问age,保护了age字段。设置属性可以通过“右击字段”,然后选择“重构”,“封装字段”即可完成。Ctrl+R,E快捷键功能。
-----------------属性分为读写(含get和set方法)、只读(只含get方法)和只写(只含set方法),根据实际需要来设置相应的属性即可。
-->知识点6:构造方法。属性虽然可以保护字段,但是只是一方面的,比如性别只能是一个,但是又无法只赋值一次,所以就有了构造方法。构造方法是在声明一个对象并实例化时运行的方法,用于对类中的字段进行初始化,默认是系统自动初始化。
-----------------构造方法相对于属性优点:在有多个属性需要赋值时,通过构造方法一次就可以全部完成,但属性需要一个一个实例名.属性名赋值,方便高效;可以保证用户在实例化一个对象必须对特定属性赋值;属性针对只读属性无法赋值,但是构造方法就可以解决。
-----------------定义构造方法非常特殊,构造方法的名字必须与类的名字相同,而且如果我们手写了一个构造方法,那么系统就不会再自动产生一个无参的构造方法了,手写构造方法可以重载,此时如果我们还需要无参的构造方法,我们必须自己手写,建议自定义构造方法,同时写上系统原本添加的无参构造方法,防止出错。
-->知识点7:析构方法。析构方法是用来手动清理内存资源的,不过C#中有垃圾回收器会不定时清理内存资源。
-----------------注意点:析构方法只能定义在类中,而且只能对类使用析构方法,区别与构造方法可以在结构中定义;一个类中只能有一个析构方法,并且不允许重载;无法继承或重载析构方法;无法调用析构方法,写在那里是自动被调用的,并且析构方法没有修饰符、参数。比如 ~类名 { } ,这就是一个析构方法。
-->知识点8:字符串。字符串可以看做字符char的只读数组,有一个重要的特性——不可变性,而我们的赋值只不过是改变字符串变量的内存指向地址而已。
-----------------string是C#中的字符串,而String是.Net Framwork中的字符串,实际上是一样的。
-----------------字符串可以通过索引(下标)来读取特定位置的字符。如果要修改字符串中特定的字符,也是可以的。首先将字符串通过方法ToCharArray()得到一个字符数组,然后修改字符数组特定位置的字符,最后重新生成new string ( 字符数组名 ); 就可以了。其实这也只是改变字符串的指向,原来的字符串仍然存在的。
-----------------注意符号“+”,当两边只要有一个是字符串的时候,另一个会自动转换成字符串。
-----------------字符串方法:ToLower()和ToUpper(),得到字符串的小写或大写形式,注意字符串的方法也不会改变字符串的值,只是通过方法重新生成一个值。
-----------------字符串方法:Equals(),比较两个字符串是否相同。Compare()是比较两个字符串大小,通过设定一定规则进行比较字符串。
-----------------字符串方法:Split(),字符串分割,根据要求对字符串分割,注意Split()的第三个重载方法,第二个参数string.SplitStringOptions.RempveEmptyEntries是将分割之后的数组中的空格删除掉。
-----------------字符串方法:IndexOf()——记事本查找功能;Replace()——记事本替换功能;SubString()——走马灯;Contains()、StartWith()和EndWith()......
-->知识点1:属性概念。属性就是对象具有的特征值,每个对象具有的每个属性都有特征值。比如陈军年龄是23岁,性别是男等特征,这个就是对象陈军的属性及属性值。
-->知识点2:对象与类的区别:对象是实实在在存在的,具体到那个是对象;而类是一个模板而已,是虚构的,不存在的。比如我现在操作的这部电脑是联想电脑,就是一个对象,实实在在存在的,但是如果只是说联想电脑,这个概念就是非常模糊,因为不清楚到底哪个才是联想电脑,可以指他的,或者你的,等等,这个就是类。
------------------类是模板,是确定对象会有的属性和方法。相当于人类可以确定出生的人有性别、身高等特征、能走路、吃饭等行为。前者在生活中找得到,后者无法找到。
-----------------类声明对象和前面声明变量类似。类名 对象名;就完成声明一个对象了,注意类不占计算机内存,对象才占内存。
-->知识点3:类的定义及使用:[访问修饰符] class 类名 {成员;...},类中可以包括变量的定义、属性、方法。比如class Person {public string name;public string age;public void SayHello() { Console.WriteLine("Hello!"); } },这样就完成一个类的定义,定义一个Person类,里面包括name、age字段,有SayHello方法。
----------------通过类产生对象。叫做声明一个对象,实例化类成一个对象。语法:类名 实例名(变量名) =new 类名 ();,比如Person chenH=new Person();,这样就完成一个对象的声明,注意=前面是声明一个对象名(变量名),后面的才是开辟一块内存空间,真正实例化了,才说明chenH在计算机中实实在在存在的。当然也必须是实例化之后,对象才能够类的属性和方法。
----------------访问类的属性:实例名.属性名;;访问类的方法:实例名.方法名。这个前提是访问的类是非静态的类。比如chenH.name;chenH.SayHello();。
----------------静态类的访问即有static修饰的类,不需要实例化,直接类名.属性名和类名.方法名即可访问类的属性和方法了。类似于生活中“公共设施“的意思。
-->知识点4:访问修饰符:包括属性的访问修饰符(public、internal、protected和private)和类的访问修饰符(public、protected和internal)。
-----------------属性:public代表公有的,可以在任何地方被访问;internal代表只能在本项目中被访问;protected是受保护的意思,只能在本类和子类中被访问;private指私有的,只能在本类中被访问。默认是private修饰符。
-----------------类:public代表公有,可以在任何地方被访问;protected是受保护的意思,只能在本类和子类中被访问。internal代表是只能在项目中被访问。默认是internal。
-->知识点5:属性。如果在方法中定义了一个变量,这个变量有get或set方法,那么这个变量就有对应的属性,为什么是说对应的?因为变量往往是由public修饰的,来保护一个由private私有的私有变量。这样外界只能通过属性来访问,保护了那个私有变量。 比如:private int age; public int Age { get { return age} ; set {age=value; } }。这个Age就是属性,外界可以访问Age,但无法访问age,保护了age字段。设置属性可以通过“右击字段”,然后选择“重构”,“封装字段”即可完成。Ctrl+R,E快捷键功能。
-----------------属性分为读写(含get和set方法)、只读(只含get方法)和只写(只含set方法),根据实际需要来设置相应的属性即可。
-->知识点6:构造方法。属性虽然可以保护字段,但是只是一方面的,比如性别只能是一个,但是又无法只赋值一次,所以就有了构造方法。构造方法是在声明一个对象并实例化时运行的方法,用于对类中的字段进行初始化,默认是系统自动初始化。
-----------------构造方法相对于属性优点:在有多个属性需要赋值时,通过构造方法一次就可以全部完成,但属性需要一个一个实例名.属性名赋值,方便高效;可以保证用户在实例化一个对象必须对特定属性赋值;属性针对只读属性无法赋值,但是构造方法就可以解决。
-----------------定义构造方法非常特殊,构造方法的名字必须与类的名字相同,而且如果我们手写了一个构造方法,那么系统就不会再自动产生一个无参的构造方法了,手写构造方法可以重载,此时如果我们还需要无参的构造方法,我们必须自己手写,建议自定义构造方法,同时写上系统原本添加的无参构造方法,防止出错。
-->知识点7:析构方法。析构方法是用来手动清理内存资源的,不过C#中有垃圾回收器会不定时清理内存资源。
-----------------注意点:析构方法只能定义在类中,而且只能对类使用析构方法,区别与构造方法可以在结构中定义;一个类中只能有一个析构方法,并且不允许重载;无法继承或重载析构方法;无法调用析构方法,写在那里是自动被调用的,并且析构方法没有修饰符、参数。比如 ~类名 { } ,这就是一个析构方法。
-->知识点8:字符串。字符串可以看做字符char的只读数组,有一个重要的特性——不可变性,而我们的赋值只不过是改变字符串变量的内存指向地址而已。
-----------------string是C#中的字符串,而String是.Net Framwork中的字符串,实际上是一样的。
-----------------字符串可以通过索引(下标)来读取特定位置的字符。如果要修改字符串中特定的字符,也是可以的。首先将字符串通过方法ToCharArray()得到一个字符数组,然后修改字符数组特定位置的字符,最后重新生成new string ( 字符数组名 ); 就可以了。其实这也只是改变字符串的指向,原来的字符串仍然存在的。
-----------------注意符号“+”,当两边只要有一个是字符串的时候,另一个会自动转换成字符串。
-----------------字符串方法:ToLower()和ToUpper(),得到字符串的小写或大写形式,注意字符串的方法也不会改变字符串的值,只是通过方法重新生成一个值。
-----------------字符串方法:Equals(),比较两个字符串是否相同。Compare()是比较两个字符串大小,通过设定一定规则进行比较字符串。
-----------------字符串方法:Split(),字符串分割,根据要求对字符串分割,注意Split()的第三个重载方法,第二个参数string.SplitStringOptions.RempveEmptyEntries是将分割之后的数组中的空格删除掉。
-----------------字符串方法:IndexOf()——记事本查找功能;Replace()——记事本替换功能;SubString()——走马灯;Contains()、StartWith()和EndWith()......
-->C#面向对象的基础知识,尤其是字符串这块,需要多用,即多练才行。
备注:写于2013年6月5日