C#语言

  • 基本语法
  1. C#文件以cs结尾 Main()为入口点函数
  2. 从上到下一条条执行
  3. 大小写敏感
  4. 函数参数用()包围
  5. 两句之间用;分隔
  6. 注释 单行注释(//) 多行注释(/* */)
  7. 双引号
  • 变量
  1. 变量看做数据的容器
  2. 定义变量方式:类型 变量名
  3. 变量类型
  4. 不能放与类型名不兼容的数据
  5. 变量名不能重名
  • 变量的命名
  1. 命名规则: 首字符必须为字母或下划线 其后字符可以为任意个数字/字母/下划线 不能全部使用C#关键字(VS中蓝色)
  2. 也是类/函数名命名规则
  3. 中文变量名(类/函数名)
  4. C#中建议变量首字母小写
  5. 变量的声明(使用前需赋值)
  • 常用基本数据类型
  1. string int char bool decimal byte double long float
  2. bool: true/false
  3. string转义符: “\”ab\”” “a\nb” “a\\b” @“c:\temp\1.jpg” 转义只针对在代码中直接写 不包括从程序中读取的字符串(Console.ReadLine())
  4. 数据类型转换: Convert.ToString() Convert.ToInt32()
  • 其他数据类型
  1. 数组
  2. 枚举
  3. 结构
  4. 接口
  • 值类型 & 引用类型
  1. Visual Studio 2008编程时会用到两种形式的内存空间(堆栈 & 托管堆) 这两种数据结构支持程序的运行: 堆栈用于存放值类型 / 托管堆用于存放引用类型
  2. 值类型(基本数据类型 & 枚举 & 结构体)
  3. 引用类型(类 & 接口 & 委托 & …)
  4. 图(引用类型)
  • 装箱 & 拆箱
  1. 装箱: 值类型/堆栈 → 引用类型/托管堆
  2. 拆箱: (反之)
  3. 装箱与拆箱的实现(代码1): 对值类型装箱将把该值类型装箱到Object类型中或相应的接口类型中 实现了装箱(见图)
  4. 为何装箱拆箱: C#未支持泛型之前 为了使某些程序具有通用性 使用Object 所以必须装箱/对于已装箱对象 因无法调用其指定方法 所以必须拆箱
  • 运算符 表达式
  1. + - *(乘) /(除) %(取余)
  2. +可用作字符串连接
  3. ++(自增)—(自减)
  4. 运算符优先级: 括号是王道
  5. 变量可以和字面量混合运算
  • 赋值
  1. 赋值运算符= :让左边的变量值等于右边的计算结果 i=i+1/左边必须为变量 不能是表达式 不能是常量
  2. 赋值表达式可单独作为一个值来处理 值等于被赋值的变量的值: Console.WriteLine(“{0}”, i=1) //结果: 1
  3. += -= *= /=
  4. i2=i1++ i2=++i1
  5. 两个变量值的交换 i3=i1; i1=i2; i2=i3;
  • 布尔运算
  1. 相等判断: == 不要和=混淆
  2. 不等判断: !=
  3. 大小比较: > < >= <=
  4. 取反: !
  5. 组合运算: &&(并且) ||(或者)
  • if
  1. 单句时花括号可省略但不建议省略
  2. If语句的嵌套
  • switch case
  1. 离散值判断(被判定的值进入满足条件的分支执行/case中的值必须为常量 不能是变量 表达式)
  2. 不要忘了break;
  3. Case语句的合并处理 唯一一个case之后不用加break的情况
  • while循环
  1. While后表达式为true 则花括号代码执行
  2. do while 先做…之后while为true则再来一次
  3. return退出整个函数
  • for循环
  1. For(code1;code2;code3) code1: 循环初始化代码 只在循环开始前执行一次 code2: bool类型表达式 每次循环完成后判断是否为true 是则开始下一轮循环 code3: 每次循环后执行一次
  2. for的三段代码均可省略 但不可丢掉;
  3. break continue同样可应用于for
  • 循环的中断
  1. break: 立即终止整个循环
  2. continue: 立即终止当前循环步骤 进入下一次循环步骤
  3. Return: 退出当前函数
  • 类型的转换Cast Convert
  1. 存在交集的类型之间才能进行Cast(int i;string s=(string)I; //不可) 不寻在交集的情况需用Convert类提供的方法
  2. Cast只是视角不同 内存中数据无变化/Convert不再是内存级别的转换 而是考虑数据意义的转换 是一个加工 改造的过程
  3. Cast: 隐式转换&显式转换(开发人员负责):把源类型赋值给目标类型 两个类型不一致的时候会发生类型转换/目标类型一定能满足源类型时为隐式 不一定时为显式
  4. int.MaxValue/int.MinValue/byte.MaxValue/byte.MinValue
  5. 类型.ToString()
  • this关键字
  1. This关键字(简单的说: 代表当前类对象): ①用于索引 ②代表当前类对象(代码) ③其他场合(如构造函数中)
public partial class Form1 : Form
{
  private void Form1_Load(object sender, EventArgs e)
  {
    this.TextBox1.Text = “Hello”;
  }
}
  • base关键字
  1. Base关键字(简单的说: 代表直接父类): ①使用base可以访问父类中成员(代码1) ②代表父类构造函数(代码2)
public class Car : Vehicle  //代码1
{
  public Car()
  {
    base.GetName();
  }
}
public class Car : Vehicle  //代码2
{
  public Car(string name) : base(name, 200)
  {
    …
  }
}
  • 数组
  1. 保存多个值(长度固定/.Length可为0/几乎任意类型都可以声明数组)
  2. int[] nums = {5,3}; int[] nums = new int[2]; int[] nums = new[2]{5,3};
  3. 数组索引器: nums[0]; nums[1]; //索引器从0开始
  4. Foreach循环: foreach(string name in names)/与for循环区别:1.无法修改2.for可以倒着遍历&隔一个遍历
  • 枚举
  1. 枚举类型是”以自己的方式使用整型”(可以是byte sbyte short ushort int(默认) uint long ulong的子类)
  2. 确定数量&确定值的几个取值: 东西南北 男女 上中下
  3. enum QQStatus{online,offline,hiden};QQStatus s=QQStatus.hiden;
  4. public enum : long{Sun=1,Tue,Wen,Thu,Fri,Sat,Sun}
  • 结构
  1. 结构体(struct): 常用于封装小型相关变量组(如点的坐标x y)
public struct Point
{
  public int X;
  public int Y;
}
  • 函数
  1. 函数: 代码重用的一种机制/参数&返回值/无参()不可省&无返回值void
  2. 自己写函数/自己无法确定的数据通过参数传入
  3. 可变参数: int Sum(string name,params int[] names); //可变参数数组必须是最后一个/VFunc(“aaa”,”vvv”,”222”,…);
  4. 参数默认值: 函数重载实现
  • 函数的ref & out参数
  1. 函数参数默认是传递值的 也就是“复制一份”
  2. ref必须先初始化 因为是引用 所以必须先”有” 才能引用/ out则是内部为外部赋值 所以不需要初始化 并且初始化了也没用
  3. out一般用于函数有多个返回值的情况: int.TryParse(str,out i); //一个返回结果是成功失败bool型 另一个转换结果i
  • 函数重载
  1. 参数不同/与返回值无关

posted on 2011-09-19 10:45  les_vies  阅读(169)  评论(0编辑  收藏  举报

导航