绿茶软件园
资讯首页 > 软件教程 > 编程开发 > C#编程之基础总结

C#编程之基础总结

作者:佚名 来源:绿茶软件园 2011-07-04 14:44:47 0

  .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)方法获得值

 

绿茶软件园小编推荐阅读:

swift语言是什么?swift编程语言介绍

Java编程时节省内存技巧:提高工作效率

关键词: C#编程 C# 编程
返回顶部