• C#基础总结


    .NetFramework简介
    .netframework运行于操作系统之上,提供良好的跨语言特性。
    .netframework包含两个内容:公共语言运行时(CLR)和类库集(FCL)
    MSIL微软中间语言。当编译.net支持的语言编写的代码的时候,输出的代码为MSIL
    CLR又包含:通用语言规范(CLS:保证语言互操作性的一组规则)和公共类型系统(CTS:包含了.net支持的

    各语言间兼容的数据类型和功能)

    --------------------------------------------------------------------------------

    C#中的变量和常量
    C#中的基本数据类型:
    值类型和引用类型
    值类型:简单类型、结构类型和枚举类型。
    简单类型:整数类型、浮点类型、小数类型(decimal)和布尔类型等
    sbyte是有符号的,相当java的byte型,范围-128~127
    C#中byte是无符号的,范围0~255

    --------------------------------------------------------------------------------

    变量命名方法:
    帕斯卡命名法和骆驼命名法
    帕斯卡命名法:如果有多个单词组成,每个单词首字母大写
    骆驼命名法:如果有多个单词组成,第一个单词全部小写,后面的单词大写

    --------------------------------------------------------------------------------

    C#中的常量:const与readonly两种
    const声明的常量:叫静态常量,必须声明时就初始化,且只能用常数值初始化
    readonly声明的常量:叫动态常量,可以在声明时不初始化,只能在构造函数中初始化,但必须每个构

    造函数中都要初始化;而且可以使用变量值初始化

    class Test
    {
            const  float PI = 3.1416f;       //常量命名:全部大写
            readonly float G;
            public Test()
            {
                    G = 9.80F;
            }
            public Test(float g) //每个构造函数中都要初始化;而且可以使用变量值初始化
            {
                    G = g;
            }
    }

    --------------------------------------------------------------------------------

    C#中的装箱和拆箱
    装箱:值类型转换成有引用类型
    拆箱:引用类型转换成值类型
    值类型:存在栈中
    引用类型:在堆中存放对象的地址(即引用),对象本身存放在栈中
    拆装箱允许值类型和引用类型相互处理

    --------------------------------------------------------------------------------

    C#语法

    Switch()括号中可以是int ,char和string ,switch语句中的case语句冒号后什么都不写,可以不写

    break,其他情况一定要写break,否则报错

    数组:五种声明方式
       int []array;
       array = new int[2];

       //第二种声明方式
       int []array1 = new int[2];

       //第三种声明方式
       int []array2 = {1,2,3};

       //第四种声明方式
       int []array3 = new int[]{1,2,3};

       //第五种声明方式
       int []array4 = new int[3]{1,2,3};

       //数组大小也可以是变量
       int count = 3;
       int []arr = new int[count];


    --------------------------------------------------------------------------------

    枚举:用有意义的字符去访问数据
    public enum Contry:long  //指定枚举类型,必须是整型,不写为int型
      {
       Pacific,         //第一个未付值,默认为零
       China=1860,
       Japan,
       US=1901,
       Canada
     
      }

    --------------------------------------------------------------------------------

    C#中的面向对象
    析构函数:函数名与构造函数名一样,~函数名(),不接受参数,由垃圾回收器自动调用

    (GC.Collect()调用垃圾回收器)
     

    virtual关键字:C#中,子类要重写父类的方法,必须把父类的方法标识为virtual(虚拟的),同时重写

    方法用override修饰
    new 关键字:new关键字:在子类中定义的一个和父类方法签名一样,但是个全新的方法。并非重写父类

    的方法。
    base关键字:用base关键字调用父类的方法

    访问修饰符:
    public 公有的,
    internal 在一个项目中的,
    protected有父子关系的类,
    private仅所属类的成员

    注意:如果有一个类既继承类又实现接口,类名要写在接口名前面。

    --------------------------------------------------------------------------------

    属性,索引器,委托,事件

    属性:访问修饰一般为public,首字母大写。属性内有get和set访问器,get内必须要有return,set内

    有value关键字,代表从外部接受的值。
    索引器:索引器的作用:像处理数组一样去处理类的对象。
        public class Student
          {
              private string []obj=new string[10];

              //this关键字在这里代表每一个类的对象,[]中整数是指通过下标访问
              public string this[int index]            //此是可以通过索引号去访问每一个类的成员

     
              {
                   get
                   {
                        return obj[index];
                   }
                   set
                   {
                        if(value!=null)
                        obj[index]=value;
                   }
              }
             static void Main(string []args)
             {
                      Student stucollection=new Student();
                       stucollection[0]="柯南";
                       stucollection[1]="小五郎";
                       stucollection[5]="怪盗基德";
             }
          }


    委托:相当于函数指针,可使程序在运行是再指定具体要运行的方法。
    (1) 定义委托:Public delegate int Call()
    (2) 实例化委托:objcall=new Call(方法名)
    (3) 调用委托:objcall();

    事件:事件实际上是一种特殊的委托,委托每次只能指向一个方法,而事件可以指向多个方法
    (1)定义一个委托public delegate void delegateMe();
    (2)定义一个事件 private event delegate eventMe;
    (3)订阅事件    eventMe+=new delegateMe(方法名1());
                           eventMe+=new delegateMe(方法名2());
    (4) 引发事件    if(condition)   then  eventMe();

    --------------------------------------------------------------------------------


    多线程

    创建线程实例:
    Thread obj=new Thread(new ThreadStart(方法名称))
    开始:Start();
    休眠:Sleep();
    终止:Abort();
    挂起:Suspend();
    恢复:Resume();
    当前线程:Thread.CurrentThread
    ThreadPriority枚举值用来指定调度线程的优先级(共5级)

    lock关键字
    C#中通过lock关键字提供同步
    线程同步:确保不同的线程对共享资源进行访问时,每次只有一个线程访问资源。
    Lock(this)
    {
         For(int i=0;i<10;i++)
         {
              //语句;
         }
    }

    --------------------------------------------------------------------------------

    数组集合对象

    Array: Array和数组很相似,还可以相互转化和拷贝,很多方法都是是通用, 可以用Array的静态方法对

    数组实现反转,排序,这是数组本身无法做到的

    using  system.Array;
    Array ar=Array.CreateInstance(typeof(int),5);   //创建一个Array的实例
    ar.SetValue(12,0);                          //赋值

     Array.Reverse(ar);    // 反转
     Array.Sort(ar);        // 排序

    ArrayList:最常用的集合之一.集合的好处是在不知道数据大小时,可以实现容量自动增长,而数组做不

    到.
    Add()添加元素
    Remove(位置)移除元素

    ArrayList al=new ArrayList();
    //如果要遍历集合元素,
       //方法一:
       //将集合中的数拷贝到数组中
       object []temp=al.ToArray();
       foreach(object t in temp)
       {
        Console.WriteLine(t);
       }

       //方法二,使用迭代器
       IEnumerator ie=al.GetEnumerator();
       while(ie.MoveNext())
       {
        Console.WriteLine(ie.Current);
       }

    HashTable:以键值对的形式保存值

    Hashtable hash=new Hashtable(4);
     hash.Add("中国",1860);         
     hash.Add("德国",1940);

     Console.WriteLine(hash["中国"].ToString());通过key获得value


    SortedList :是 Hashtable 和 Array 的混合
    能存放键值对,类似Hashtable
    能通过自身提供的方法通过索引直接遍历,类似于Array
    objsortlist.GetKey(i)   方法获得键
    objsortlist.GetByIndex(i)方法获得值

  • 相关阅读:
    导出报ora-31634、ora-31664
    A significant part of sql server process memory has been paged out
    解决ora-02429:无法用于删除强制唯一/主键的索引
    更改数据库表中有数据的字段类型NUMERIC(18,2)为NUMERIC(18,6)
    GHOST CLEANUP Process
    oracle查看执行计划explain plan FOR
    ORA-01502: 索引或这类索引的分区处于不可用状态
    mysql 游标循环,嵌套游标循环
    MSSQL FOR XML PATH ('')用法
    Mysql CHARINDEX用法
  • 原文地址:https://www.cnblogs.com/atun/p/2071300.html
Copyright © 2020-2023  润新知