架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11876|回复: 4

[资料] C#_OOP知识点笔记

[复制链接]
发表于 2014-11-18 19:24:58 | 显示全部楼层 |阅读模式
本帖最后由 Delver_Si 于 2014-11-18 19:43 编辑

第一章(C#OOP
1..NET Framework(相当于java中的jdk
2.包含2个部分:框架类库(工具包),CLRCTSCLS
第二章(C#OOP
1.C#语法:主要是对比与java的区别
1)数据类型
       字符串StringC#的“S”小写大写都可以,一般小写,java大写
       布尔booljava写法boolean
2)变量和常量
       创建隐型变量:var 代替数据类型(参考课本案例)
       定义常量:在定义变量前加const,表示该变量只能赋一次初始值,以后不能修改
3)运算符,表达式(与java相同)
4)控制语句
       if-else(同java
       switch1.()里可以用字符串来比较,java不行
                 2.每个case后必须要写break;  java可不写
       do-while,while,for:(同java
       foreach
C#语法:foreach (数据类型 元素名 in 数组或集合对象) {…}
Java语法:for (数据类型 元素名 : 数组或集合对象){…}
2.数组
1)一维数组同java,但[]不能写在变量后面
2)多维数组分2种,一种同java,另一种:int[,] = new int[3,3];2种写法含义不同
3.枚举:是一种自定义的数据类型,类似一种由多个常量组成的集合类型
1)语法:
定义:enum 枚举类型名{常量1,常量2,常量3,…}
声明:枚举类型名变量名;
初始化:变量名 = 枚举类型名.常量1;
2)定义的位置:在main方法外面写,或class的外面写
4.数据类型转换:Convert.ToXXXX(任意类型数据);-把任意类型的数据转换为指定类型数据
第三章(C#OOP
1.类:计算机模拟现实,描述一个现实事物的抽象,类是一个自定义的复合数据类型
把有关联的信息记录在一起,方便操作
1)类包含2个主要成员:属性,方法
2)定义的位置:一般新建一个class文件单独写,也可在其他class文件并列class
3)定义的语法:
public class 类名
                 {
                        //属性
                            publicstring id;
                            publicstring name;
                        //方法
                        public void study(){ Console.WriteLine(“我爱学习”);}
}
2.对象:类的具体实现,描述一个具体的事物,可以理解为自定义类的变量
1)实例化对象:(同变量的用法3步骤)
       类名 对象名 = new 类名();
       或:
       类名 对象名(变量名);//声明一个对象
       对象名 = new 类名();//初始化这个对象(变量)
2)使用对象:一般是使用对象里的成员(属性和方法)
使用属性:对象名.属性名
使用方法:对象名.方法名();
3.构造方法 实例化对象时要“new 类名()“类名()”就是构造方法,用来构造对象的。
(1)、构造方法会在定义类时,自动生成,是隐藏的。
(2)、可以对构造方法重写,举例说明实例化对象时调用了构造方法。
如果想给对象赋初始值,可以给构造方法加参数
4.如果初始值不确定,可以用重载实现。
(方法重载:方法名相同,参数列表不同1、个数;2、类型;3、顺序)
注:(1)构造方法名与类名相同,没有返回值(void不写)
(2)隐藏的不带参数的构造方法在手动书写后会被覆盖。
(3)一般定义类时,会用到2个构造方法:不带参和给所有属性赋值的带参。
5.如果构造方法参数名和属性名一样如何区分?
this:表示本类对象。(当前所在类的对象)
要指定属性时用:this.属性名
6.命名空间:相当于文件夹
       如果类放在不同的文件夹(命名空间)可以通过:命名空间名.类名访问
       也可以在类的最上面写using 路径,后面的类就不用带路径了
7.访问修饰符:
public:公开的,任何地方全部可用
internal:默认的,可以省略,同一命名空间内可以使用
protected:受保护的,父子类之间可以使用
private:私有的,只有自己可以使用
8.值类型和引用类型(参考以前学习的int和数组做参数调用时的区别)
值类型: int,double等八种基本数据类型,枚举,结构体(以后会学)
引用类型:数组,类
注:string特殊,是引用类型,但同时又是值传递
9.装箱和拆箱
       装箱:把值类型转换为引用类型
       拆箱:把引用类型转换为值类型
第四章
1.refout关键字
       作用:把值类型的变量当作引用类型传递参数
       写法:分别在形参和实参前面加refout
       注意:1.定义方法时,refout)写在形参数据类型前
                2.调用方法时,refout)后的实参不能写常量,只能写变量
                3.refout的区别:out后的实参可以是未初始化的变量,ref不行
2.static修饰符:静态的
       使用位置:static写在访问修饰符(public等)后
       使用对象:类,属性,方法
       注:1.static修饰类时,该类里的所有属性和方法都必须是static
              2.static修饰的属性和方法,直接通过:类名.属性(类名.方法)来调用
3.方法的重载:参考winform知识点
第五章
1.结构体:和类差不多的数据类型(类的前身)
       定义:与类相同,把class关键字改成struct就行
       例子:struct Student
{
    public string name;
     public void study()
{}
}
       与类的区别:1.结构体是值类型,类是引用类型(重点)
                            2.结构体可以不用new实例化,类必须用new
                            3.结构体不能被继承,类可以被继承
2.属性:用来封装类中成员变量(通过方法给成员加一些限制)
       语法:private string name;  //
                public string Name     //注意第一个字母大写
{
    get{ return name; }  //读属性
    set{ name = value; }  //写属性
}
       自动属性:3.0版及以上的功能,更简单的写法
       语法:public string Name { get; set; }
3.索引器:用来封装类中数组变量的成员,并优化数组中元素的查找方式
       一般要写2种索引器
语法1:下标索引器
public Student this[int index]
        {
            get{ return students[index]; }
           set { students[index] = value; }
        }
语法2:字符串索引器//一般情况只有读属性,没有写属性
public Student this[string name]
        {
            get
            {
                Studentstu = null;
                foreach(Student s inthis.students)
                {
                    if(s.Name == name)
                    {
                        stu = s;
                    }
                }
                returnstu;
            }
        }
    用法:对象名[index] 对象名[“字符串”]
第六章
1.委托:委托是一个数据类型,用这种数据类型声明的变量可以用来存储方法的签名
      作用:可以把方法名当做参数来进行传递
用法:1.定义委托
public delegate 返回值类型 委托类型名(参数类型参数1,…);
2.声明并实例化委托变量(给委托绑定方法:返回值类型和参数列表必须一致)
    委托类型名委托变量名 = new 委托类型名(方法签名);//方法签名不要()
3.调用委托
    委托变量名(参数1,…);
       特点:委托可以绑定多个方法”+=”,也可以撤销指定方法-=”
匿名方法:不定义方法(没有方法名),直接把方法内容绑定到委托里
2.事件:封装了的委托变量(相当于类中属性和成员变量的关系)
用法:前提:定义委托 //任意一个类的外面写
         1.定义事件(就是声明一个封装了的委托变量)//事件源中写
              publicevent 委托类型名 事件名;
         2.订阅事件(给事件绑定方法)
              事件名 += new 委托类型名(方法签名);// 事件响应者的方法
         3.引发事件(类似于调用委托)//事件源中写
              事件名(参数1,…);
注意:事件一般涉及2个对象:事件源 事件响应者
第七章
1.继承:子类(派生类)继承父类(基类),子类就拥有了父类的属性和方法
       语法:(定义类时) 子类:父类
       特点:1.单根性。一个子类只能继承一个父类
       特点:2.传递性。如果A继承BB继承C,那么A也继承C
2.protected:(受保护的)用它修饰的成员变量或方法,就只能给它自己或它的子类使用
3.继承中的构造方法:先调用父类构造方法,再调用子类构造方法
方式1:隐式调用:默认情况下(不做任何指定),子类会调用父类不带参数的构造方法
方式2:显式调用:指定调用父类的某一个构造方法。
public Son(string name,string sex,stringcolor)
            : base(name,sex)
        {
            headColor = color;
        }
4.sealed:如果你的类不想被继承,可以加该关键字
5.继承中方法的重写(override)(多态)
       语法:父类的方法用virtual(或override)修饰,子类可以用override对其进行重写
       作用:参考案例lesson7
注:子类继承父类,那么可以把子类对象放到父类引用里
6.重载(overload)和重写(override)的区别
区别:1。重载是一个类里,有多个相同名称的方法;重写是在两个类里(父子类),各自有相同名称的方法。
       2.重载方法名相同,参数列表不同;重写方法名相同,参数也相同,用virtual修饰父类方法,override修饰子类方法
第八章
抽象方法:用abstract修饰的方法
1.抽象类:用abstract修饰的类(public abstract class 类名)
       特点:1.抽象类不能实例化对象,只能被子类继承
                2.如果一个类里有抽象方法,那么这个类一定是抽象类;但定义一个抽象类,里面不一定非要有抽象方法。
                3.抽象类里可以有具体的方法(非抽象方法)
                4.子类继承抽象类时,必须实现抽象类里的所有抽象方法,除非子类也是抽象类
                5.抽象类可以有构造方法,但自己不能调用,是给子类调用的
2.接口:定义一个标准和规范,关键字是interface,接口是一个数据类型
       注意:1.接口里只能声明方法,属性,索引器,事件
                2.接口里的内容默认的都是public,所以不用加修饰符,如果写了会编译报错
                3.接口名以大写字母“I”开头
                4.如果一个类实现接口,那么必须实现接口里的所有内容,除非该类是抽象类
       特点:1.接口可以多继承(一个类只能继承一个父类,但是同时可以实现多个接口)
                2.继承的父类必须写在“:”后的第一个位置,后面的接口用“,”隔开
                3.如果一个类在实现多个接口时出现方法名相同的情况,要用显示实现接口
                4.接口可以绑定
5.接口作为参数,也可以实现多态
3.isas的用法
       is:判断某一对象是否是某一类型,如果是返回true,如果不是返回false
       例:if(c is IPrint)
     as:把某一对象转换为某一类型
     例: IPrint c1 = c as IPrint;
4.抽象类和接口的区别(参考课本P189

C#OOP知识点.rar

12.61 KB, 下载次数: 2, 下载积分: 威望 -1 点, 贡献 -1 点

售价: 1 粒MB  [记录]





上一篇:利用phpmyadmin或者命令行来修改了mysql的root密码,重启后发现mysql登录错误的解....
下一篇:百元哥神曲第三波爆笑网络 我要我的一百块
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2014-11-18 19:40:08 | 显示全部楼层
售价5金钱,太贵了吧     在这个论坛   1金钱=1RMB的
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2014-11-18 19:43:46 | 显示全部楼层
admin 发表于 2014-11-18 19:40
售价5金钱,太贵了吧     在这个论坛   1金钱=1RMB的

已改
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2014-11-18 22:12:20 | 显示全部楼层
我觉得1金钱应该等于一毛钱
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2014-11-18 23:13:08 | 显示全部楼层
唉  现在论坛还是没什么人气   其实运营了2个月,能做成这样,也算不错了

还是要坚持啊!
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-29 18:24

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表