C#程序设计简介
- 1.4 基本输入输出
- 窗体
- 通过控件(Control)来控制,如:
- 文本框(TextBox)、标签(label)
- 下拉框、图片等
- 例:
- 用文本框表示输入;
- 用按钮表示发出命令;
- 用标签表示结果;
- 通过控件(Control)来控制,如:
- 控制台
- 使用Console类
- 输出
- Console.Write()
- Console.WriteLine()
- 输入
- Console.ReadLine()
- 输出
- 使用Console类
.NET
开发工具
- 窗体
C#语言基础
- 2.1 数据类型、变量与常量
程序中的变量与常量
程序的基本任务:对数据进行处理
数据分为变量(variable)与常量(literal)
变量是值可以改变,本质上是
内存的空间,用来存储信息
常量的值是固定的,直接写出来的,称字面常量(literal)
变量的声明和赋值类似于
C语言
int x, y;
double d;
bool b;
String s;
Person p = new Person();
数据类型:本质上是数据的存储方式及其能参与的运算的抽象
数据类型分为两大类
- 值类型(Value Type),如:int, double, Point(简单的结构体), Size(宽或高), DataTime(时间)
- 引用类型(Reference Type), 如:Button, Lable, Book, Person
- 一种不是特别准确的说法:简单的是值类型,复杂的是引用类型
两种类型的区别:
- 见图
- 值类型的复制:把值拷贝到另一个内存
- 引用类型的复制:把引用(或者说叫做地址)拷贝到另一个内存
- 值类型存到
栈
空间 - 引用类型
栈
存储位置,堆
存储真正的信息 - 复制:不管是值类型还是引用类型都是把栈中的值拷贝一份,只不过引用类型存储的是地址,所以指向的还是一个堆空间
- DataTime的存储方式
- 值类型和引用类型都是类型
- 任何变量都有类型
- double也是类型,它也有Parse()这样的方法
- 所有的对象都是
Object
- 它们都能
.ToString()
,如:Label1.Text = age.ToString();
- 都能用于字符串的连接(+)
- 它们都能
- 见图
类型细分
- 值类型
- 简单类型(Simple Type)
- 结构类型(Struct Type)
- 枚举类型(Enum Type)
- 引用类型
- 类类型(Class Type)
- 接口类型(Interface Type)
- 委托类型(Delegate)
- 数组类型(Array Type)
- C++中
Struct
和Class
是一样的,但是在C#中是完全不一样的类型
- 值类型
等价类型
简单类型
字符串前可使用
@
,则可以不进行转义,可以换行,双引号则用两个双引号表示一个双引号C#3.0后的特殊类型:
-
var
是推断类型,类似于C++的auto
Nullable
类型,如- int? a = 32;
- if (a.HasValue)…
-
Dynamic(动态类型)由DLR支持,如:
- dynamic x = new Cell();
- 编译时不检查,运行时才确定,主要用于与COM组件或其他语言交互
- 2.2 运算符与表达式
- 运算符
- 逻辑运算符
- 字符串
+
:只要有一个是字符串,那么就默认为字符串+ - 运算符优先级与结合性
- 类型转换
- 字符串转换成数值:
- double.Parse(s)
- int.Parse(s)
- 数字转换成字符串
- 10.ToString()
- “” + 10
- 使用Convert
- Convert.ToInt32(textbox1.Text)
- Convert.ToDouble(“123.45”)
- Convert.ToDateTime(“2009-10-01 14:00”)
- 字符串转换成数值:
- 运算符
- 2.3 流程控制语句
3种基本流程
简单语句
分支语句
- if
- switch
- if
小技巧
- 2.4 数组
- 数组属于引用类型
- 数组的声明:
- int[] a1;
- double []b;
- Mydate []c;
- 声明数组是不能指明长度
- 动态初始化
- 数组定义与数组元素分配孔家并赋值的操作分开进行
int []a = new int[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);
- 静态初始化:
- 在定义数组的同时就位数组元素分配空间并赋值
int[] a = {3, 9, 8};
或者int[] a = new int[]{3, 9, 8};
- ```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
146. 注:最后可以多一个逗号。如: `{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 是只读式的遍历