【复习笔记】C#基础

目录

1.数据类型

2.运算符

3.条件语句

4.循环语句

5.数组 

6.排序

7.方法

8.OOP  面向对象编程    

(1)类 和 对象

(2)构造方法

(3)面向对象编程的三大特性

       封装性

      继承性

  多态性

9.枚举

10.关键字  out    ref    params

     out  输出参数   

     ref   引用参数

     params

11.结构

12.集合


1.数据类型

注意int类型的最大值是2147483647

C#中的小数默认形式下是double类型的,对于定义float类型的变量是 记得加上小写f或者大写F   进行类型转换

++(--)变量    先执行加一操作   再执行其他操作

变量++(--)    先执行其他操作  再执行其他操作

static void Main(string[] args)
{
int x=3;
Console.WriteLine(x++);
Console.WriteLine(x);
}

第一个打印的结果是3  // 先执行打印  再执行++操作
第二个打印的结果是4 

2.运算符

(1)算术运算符

   ++ --   +  -   *   /   % 

(2)比较运算符

   >   <    ==

(3)赋值运算符(包括复合运算符)

     =   +=  -=  

(4)逻辑运算符

     &&   ||   !  与或非

     比较表达式&&比较表达式    当第一个不成立时,后面的式子将不再执行

     比较表达式||比较表达式     执行到比较表达式为真之后将不再执行

(5)三元运算符(条件运算符)

     条件?结果1:结果2

     返回值的类型是根据第一处和第二处的类型决定的

(6)位运算符(二进制)

3.条件语句

if(条件表达式)
{
  代码段
}
else if()
{
  代码段
}
....
else
{
  代码段
}
switch()中可以包括所有的整数类型同时还可以有 string  字符串 枚举等  因此 case后面对应的值的类型也要相应的变化

开关语句

         switch (值0)   // 值对应case后面的值 
            {
                case 值0:    // 每一个case必须用 break结尾隔开
                    代码块;
                    break;
                case 1:
                    代码块;
                    break;
                default:      //当所有内容不满足之后,则会执行default中的代码内容
                    代码块;
                    break;
            }

*****    return  结束方法的执行

(1)中止循环  break和continue的区别

   break 中止本层循环     跳出switch循环体 或者 循环体

   continue中止本次循环   进行下一次循环

4.循环语句

(1)whille

(2)do...while

(3)for

5.数组 

数组长度一旦确定,则不能改变;

数据类型氛围两种:值类型和引用类型,而数组则属于引用类型;

(1)Array.cs  数组的操作工具 类

Sort()  对数组进行排序,默认是按照升序排列

Reverse()  将整个数组反转

Copy()  数组的复制    从一个数组复制到另一个数组上

Clear() 数组的清除

6.排序

(1)冒泡排序

相邻两个两两比较,每一轮排序出最大的一个数或者最小的一个数

(2)选择排序(顺序排序)

7.方法

方法又称为“函数”

(1)方法的定义

         在定义方法的代码块时,尽量不要在方法块中写入打印语句

(2)方法的调用

(3)参数列表

        形式参数和实际参数        

        变量:局部变量和全局变量

  (4) 方法的重载

       可以对传过来的实参进行自动向上匹配;

(5)方法重载的条件:

        多个方法的名字相同

        方法的参数个数或者参数类型上不相同

        能否构成重载跟返回值类型无关

8.OOP  面向对象编程    

  面向对象编程:属于一种高级编程思想

  面向过程编程:属于一种偏底层编程思想

(1)类 和 对象

        类中的字段和方法 

(2)构造方法

        构造方法的方法名和类名相同

        一个类中可以有多种构造方法,构造方法可以有参数也可以无参数

       构造方法没有返回值,void也不能添加  (例如: public Book())

        new创建对象 为其赋值

        定义方法时,最后不要出现打印语句

(3)面向对象编程的三大特性

       封装性

         广义封装:从整个项目的设计角度出发

         狭义封装:通过访问修饰符控制类中成员的访问权限(作用 范围不同)

        访问修饰符:public  private protected internal....       

        进行封装时,一般字段设置为私有的,方法设置为共有的。如果对私有字段访问时,可以提供间接访问的方法,get()set()方法

        用来保护数据

        属性语法: 

public string RoleName
{
  get{ retrun  roleName; }
  set{ roleName = value;}
}

 Equals:用来作比较,返回一个bool值,并且严格区分大小写

        属性分为标准属性和自动属性

        标准属性:

        自动属性:用于简单获取字段值或者设置字段值,不需要业务逻辑判断;会自动添加一个对应的私有字段;get和set必须成对属性,不能只读或者只写,set中不能添加业务逻辑判断的代码;

            快捷键:prop + Tab键

// 标准属性
private int no;

public int No
{
  get{return no;}
  set{no=value;}
}

//相当于  自动属性

public int No
{
  get;
  set;
}

      继承性

        继承:提高代码的复用性

        (1)子父类  单层继承

        (2)继承具有传递性

class A;

class B:A;

class C:B; 

C继承了B中的内容,同时也隐式的继承了A中的内容

         (3)子类会继承父类的所有内容,但是会有一些特殊情况:

                   父类的私有内容(表面上看是访问不到,但是已经继承了,可以通过反射等操作拿到数据)

                   父类的构造方法(构造方法不能继承,但是子类可以使用)

                   父类中定义了方法,而子类有定义了相同的方法,该如何进行调用?   关键字:virtual   override   new   base

         (4)特殊情况:构造方法

                   当创建一个子类对象时,先进入到子类的构造方法,在子类中的构造方法中,会默认省略了:base()   先会调用父类的无参数构造方法,再会调用子类的构造方法

                    不写:base()  调用父类的无参数

                    写:base()      调用父类的无参数

                    写:base(*****)   调用父类对应参数的构造方法

              构造方法参数内容时,在父类中调用,就在父类中进行赋值,在子类调用,在子类中进行赋值 

         (5) 关键字 virtual override new

父类
calss dulei
{
   // virtual 表示虚函数 可以通过子类添加的override关键字进行重写操作
   puliv virtual int demo()
   {
      retrun 0;
   }
}

calss zilei
{
   public override int demo()
   {
      retrun 1;
   } 
}

calss zilei 
{
    // 子类不想使用父类中的方法,并且不想继承父类的方法
    // new 关键字对父类中的定义的demo方法进行隐藏,使用时按照new出来的新方法进行执行
    new public void demo()
    {

    }
}

         (6) 小知识点: 所有类默认继承Object类 

  多态性

         (1)Question q =new SingelQuestion();

              父类变量创建子类对象

              父类变量指向子类对象

              父类引用指向子类对象

              父类引用引用子类对象

         (2)向上转型:使用“父类对象指向子类对象”创建对象的过程称为向上转型

             向上转型后,就有了两种类型,一种类型是父类型,另一种类型是子类型 

             代码阶段属于父类型

             运行期间会属于子类型

             如果子类重写了,就会执行子类方法,如果没有重写,就会执行父类的方法,如果父类没有的话,就会报错

         (3)多态数组   方法参数    方法返回值

9.枚举

     (1)值类型

        简单类型(13种)

        enum枚举类型 

    (2) 引用类型

    (3) 枚举类型中每一个枚举项都是一个常量

10.关键字  out    ref    params

     out  输出参数   

                 out 修饰的变量作为参数时,可以不用提前赋值,可以在之后的方法中进行赋值

 static void Main(string[] args)
        {
            int a;
            int b;
            int sum;
            int sub;
            int mul;
            int div;

            Game(out  a, out  b,out sum,out sub,out mul,out div);
            
        }

        public static void Game(out int a,out int b,out int sum,out int sub,out int mul,out int div)
        {
            a = 2;
            b = 3;
            sum = a + b;
            sub = a - b;
            mul = a * b;
            div = a / b;
        }

     ref   引用参数

                 ref修饰的变量作为参数传递时,一定要提前赋值,不赋值会报错

                 ref传递时,传递的是变量的地址

   // 当没有ref的时候 打印出a的值为1000 加上ref关键字后 打印a的结果为100 
        // ref 对a 所在的地址进行修改操作 所以传递过去的是a的地址
        static void Main(string[] args)
        {
            int a = 1000;
            Change( ref a);
            Console.WriteLine(a);
        }
        
        public static void Change(ref int a)
        {
            a = 100;
        }

     params

                作用于容器类型或者数组类型

static void Main(string[] args)
        {
            Result(10, 20, 30);
        }

        //通过params的修饰 可以进行自动创建于传递过来的参数长度相同的数组
        public static int Result(params int[] a)
        {
            int sum = 0;
            foreach (int item in a)
            {
                sum += item;
            }
            return sum;
        }

11.结构

      (1)结构   属于一种值类型的数据结构

          值类型:储存的是值,栈内存     传递的是值

                 简单值类型(13种)  枚举类型

          引用类型:存储的是地址,堆栈中      传递的是地址

                new关键字——引用类型,interface 接口 ,委托,string类型

   (2)结构的基本定义方法和要求

            struct  结构名  {    }   结构的定义和类的定义一样

            类中大部分的内容在结构中都能够定义     如字段,属性,普通的方法 ,构造方法(含有参数的);             

无参数的构造方法不能在结构中定义

   (3)类类型:属于引用类型,存放在堆栈当中    

            结构类型  :值类型存放于栈内存中

   (4) 类的使用:如果描述的对象是一种比较复杂的结构,或者字段较多时就要使用类

           结构的使用:如果要描述一种包含多个值,但是是一种轻量级的数据类型时,使用结构

12.集合

    (1)ArrayList   已经弃用了

    (2)List

             LIst<T> 泛型     对集合中的数据类型进行限制

    (3)Dictionary  字典

             基本语法 :Dictionary<TKey,TValue> dic = new Dictionary<TKey,TValue>();

            存储数据的方式:通过键值对的方式进行存储 key value  ;key的值不能重复  value的值可以重复;key值和value值都可以拿到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值