0%

59. C#程序设计

  • C#程序设计简介

  • 1.4 基本输入输出
    1. 窗体
      1. 通过控件(Control)来控制,如:
        1. 文本框(TextBox)、标签(label)
        2. 下拉框、图片等
        3. 例:
          1. 用文本框表示输入;
          2. 用按钮表示发出命令;
          3. 用标签表示结果;
    2. 控制台
      1. 使用Console类
        1. 输出
          1. Console.Write()
          2. Console.WriteLine()
        2. 输入
          1. Console.ReadLine()
    3. .NET开发工具
      1. .NET Framework SDK 基本的开发工具
      2. Microsoft Visual Studio.NET 集成开发工具
      3. Visual Studio Express, Visual Web Developer
      4. 学生版
      5. SharpDevelper
      6. SnippetCompiler(推荐)
        • 一个小巧的工具,见这里
      7. 其他辅助工具见这里
  • C#语言基础

  • 2.1 数据类型、变量与常量
  1. 程序中的变量与常量

    1. 程序的基本任务:对数据进行处理

    2. 数据分为变量(variable)与常量(literal)

    3. 变量是值可以改变,本质上是内存的空间,用来存储信息

    4. 常量的值是固定的,直接写出来的,称字面常量(literal)

    5. 变量的声明和赋值类似于C语言

      1. int x, y;
      2. double d;
      3. bool b;
      4. String s;
      5. Person p = new Person();
    6. 数据类型:本质上是数据的存储方式及其能参与的运算的抽象

    7. 数据类型分为两大类

      1. 值类型(Value Type),如:int, double, Point(简单的结构体), Size(宽或高), DataTime(时间)
      2. 引用类型(Reference Type), 如:Button, Lable, Book, Person
      3. 一种不是特别准确的说法:简单的是值类型,复杂的是引用类型
    8. 两种类型的区别:

      1. 见图
      2. 值类型的复制:把值拷贝到另一个内存
      3. 引用类型的复制:把引用(或者说叫做地址)拷贝到另一个内存
      4. 值类型存到 空间
      5. 引用类型 存储位置,存储真正的信息
      6. 复制:不管是值类型还是引用类型都是把栈中的值拷贝一份,只不过引用类型存储的是地址,所以指向的还是一个堆空间
      7. DataTime的存储方式
      8. 值类型和引用类型都是类型
      9. 任何变量都有类型
      10. double也是类型,它也有Parse()这样的方法
      11. 所有的对象都是 Object
        • 它们都能 .ToString(),如:Label1.Text = age.ToString();
        • 都能用于字符串的连接(+)
    9. 类型细分

      1. 值类型
        1. 简单类型(Simple Type)
        2. 结构类型(Struct Type)
        3. 枚举类型(Enum Type)
      2. 引用类型
        1. 类类型(Class Type)
        2. 接口类型(Interface Type)
        3. 委托类型(Delegate)
        4. 数组类型(Array Type)
      3. C++中 StructClass 是一样的,但是在C#中是完全不一样的类型
    10. 等价类型

    11. 简单类型

    12. 字符串前可使用@,则可以不进行转义,可以换行,双引号则用两个双引号表示一个双引号

    13. C#3.0后的特殊类型:

      1. var是推断类型,类似于C++的 auto
      2. Nullable类型,如
        1. int? a = 32;
        2. if (a.HasValue)…
    14. Dynamic(动态类型)由DLR支持,如:

      1. dynamic x = new Cell();
      2. 编译时不检查,运行时才确定,主要用于与COM组件或其他语言交互
  • 2.2 运算符与表达式
    1. 运算符
    2. 逻辑运算符
    3. 字符串 +:只要有一个是字符串,那么就默认为字符串+
    4. 运算符优先级与结合性
    5. 类型转换
      1. 字符串转换成数值:
        • double.Parse(s)
        • int.Parse(s)
      2. 数字转换成字符串
        • 10.ToString()
        • “” + 10
      3. 使用Convert
        • Convert.ToInt32(textbox1.Text)
        • Convert.ToDouble(“123.45”)
        • Convert.ToDateTime(“2009-10-01 14:00”)
  • 2.3 流程控制语句
  1. 3种基本流程

  2. 简单语句

  3. 分支语句

    1. if
    2. switch
  4. 小技巧

  • 2.4 数组
  1. 数组属于引用类型
  2. 数组的声明:
    1. int[] a1;
    2. double []b;
    3. Mydate []c;
  3. 声明数组是不能指明长度
  4. 动态初始化
    1. 数组定义与数组元素分配孔家并赋值的操作分开进行
    2. int []a = new int[3];
    3. MyDate []dates;
      dates = new MyDate[3];
      dates[0] = new MyDate(22, 7, 1964);
      dates[1] = new MyDate(1, 5, 1964);
      dates[2] = new MyDate(4, 7, 1944);
    4. 静态初始化:
      1. 在定义数组的同时就位数组元素分配空间并赋值
      2. int[] a = {3, 9, 8}; 或者 int[] a = new int[]{3, 9, 8};
    5. ```c#
      MyDate[] dates = {
      new MyDate(22, 7, 1964),
      new MyDate(12, 1, 2004),
      new MyDate(21, 2, 1984)
      }
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      6. 注:最后可以多一个逗号。如: `{3, 9, 8, }`
      7. 数组是引用类型,它的元素相当于类的 ***成员变量*** ,因此数组一经分配空间,其中的 ***每个元素*** 也被按住奥成员变量同样的方式被 ***隐式初始化***,例如:
      1. 数值类型是0
      2. 引用类型为null
      8. 数组元素的引用方式:
      1. 类似于C语言;
      2. index为数组元素下标,可以是整型常量或整型表达式,如a[3], b[i], c[6 * i]
      3. 每个数组都有一个属性Length指明它的长度,例如: `a.Length`指明数组a的长度(元素的个数)
      9. foreach可以方便的处理数组】集合中各元素, 如
      ```c#
      int[] ages = new int[10];
      foreach (int age in ages) {
      // ...
      }

      foreach 是只读式的遍历