000-C#基础
C#中数据类型的继承关系如下
System.Object
|-------------System.ValueType
| |-------System.Boolean
| |-------System.Byte
| |-------System.SByte
| |-------System.Char
| |-------System.Int16
| |-------System.UInt16
| |-------System.Int32
| |-------System.UInt32
| |-------System.Int64
| |-------System.UInt64
| |-------System.Single
| |-------System.Double
| |-------System.Decimal
| |-------System.DateTime
| |-------System.Enum----------枚举类型
| |----------------------------------结构体类型
|----------------------System.String
|----------------------System.Delegate---------委托类型
|----------------------System.Array-------------数组
|---------------------------------------------------类类型
以"System"开头的都属于基础数据类型,其他的是自定义类型。
1、System.Object类型是C#数据类型中最为基础类型,用关键字“Object”表示。
Object类型提供的成员方法
成员方法 | 说 明 |
Equals | 带一个参数,用于对两个对象数据进行比较,若相等则返回True,否则返回False |
Finalize | 在自动回收对象之前执行清理操作,该方法一般由.NET框架自动调用 |
GetHashCode | 生成一个与对象的值相对应的数字以支持哈希表的使用 |
ToString | 生成描述对象数据的字符串 |
2、基础数据类型
类型 |
对应的 C#关键字 |
说明 |
System.Boolean | bool | 布尔类型,值只能为true或false,占用1字节 |
System.Byte | byte | 无符号整数,占用1字节 |
System.SByte | sbyte | 有符号整数,占用1字节 |
System.Char | char | 字符数据,占用2字节。可以强制转换为整数。采用Unicode编码格式 |
System.Int16 | short | 有符号整数,占用2字节 |
System.UInt16 | ushort | 无符号整数,占用2字节 |
System.Int32 | int | 有符号整数,占用4字节 |
System.UInt32 | uint | 无符号整数,占用4字节 |
System.Int64 | long | 有符号整数,占用8字节 |
System.UInt64 | ulong | 无符号整数,占用8字节 |
System.Single | float | 7位有效数字,占用4字节 |
System.Double | double | 15位有效数字 ,占用8字节 |
System.Decimal | decimal | 为了维护运算精度,计算时不进行舍入操作 ,适用于财务运算。 |
System.DateTime | 无 | 表示一个从公元0001年1月1日午夜12:00:00到公元9999年12月31日晚上11:59:59的时间数据,精确到10纳秒。 |
System.String | string | 表示一段文本,采用UTF-16编码,可以包含字符"\0" |
System.Enum | enum | 所有枚举类型的基础类型 |
System.Delegate | delegate | 多有委托类型的基础类型 |
System.Array | 无 | 所有数组类型的基础类型 |
例如
public enum Colors { Red,Blue,White,Yelow,Pink,Green }
枚举类型 | 说 明 |
GetName |
获取指定数据的枚举项目的名称。为静态方法。 例如:"Enum.GetName(typeof(Colors),0)"返回Red |
GetNames |
获得由枚举类型的所有枚举项目名称组成的字符串数组。为静态方法。 例如:“Enum.GetNames(typeof(Color))”返回一个字符串数组,数组元素为 “Red”、“Blue”、“White” “Yelow”、“Pink”、“Green”。 |
GetValues |
获得有枚举类型的所有枚举项目组成的数组。为静态方法。 例如:"Enum.GetValues(typeof(Colors))"返回一个数组,数组元素是 “Colors.Red”、“Colors.Blue”、“Colors.White” “Colors.Yelow”、“Colors.Pink”、“Colors.Green”。 |
Parse | 解析字符串,并转换成枚举类型。失败抛出异常 |
TryParse | 解析字符串,并转换成枚举类型,返回是否成功标志 |
ToString | 返回表示枚举值的字符串。 |
委托就是一个指向成员方法的对象,可以看作面向对象的指针。
例如:
public delegate int add12(int op1,int op2); int add(int a,int b); add12 a=null; a=new add12(add); int b=a(1,3);
匿名委托
add12 aaa=delegate(int a,int b) { return a+b; }; int result=aaa(3,5); aaa=delegate(int a,int b) { return a*b; }; result=aaa(3,5);
泛型
开发中常用的泛型类型为System.Collections.Generic.List<>与System.Collections.Generic.Dictionary<>。
System.Collections.Genric.ArrayList可以放置任意类型数据,但是使用时必须进行强制类型转换。
as类型转换不会报错,,若转换失败则设置变量值为空类型。
is判断对象是否是指定的类型或派生类型,也可以判断是否实现了指定的接口。
internal定义类型或类型成员只能在程序集内部可见。
sealed class 密封类不能被继承。
参数传递:out:输出参数,ref:引用传递。
事件
public event EventHandler NameChanged=null;
event:事件关键字
EventHandler:事件采用的委托类型
NameChanged:事件的名称
例如:触发事件的函数
private void RaiseNamechangedEvent()
{
if(NameChanged != null)
{
NameChanged(this,null);
}
}
索引器
1 public class PeopleClass 2 { 3 public string Name; 4 public string Id; 5 public PeopleClass(string id,string name) 6 { 7 Id = id; 8 Name = name; 9 } 10 } 11 /// <summary> 12 /// 索引器范例 13 /// </summary> 14 public class PeopleList 15 { 16 public PeopleList() 17 { } 18 private ArrayList _Values = new ArrayList(); 19 /// <summary> 20 /// 添加对象 21 /// </summary> 22 /// <param name="people"></param> 23 public void AddPeople(PeopleClass people) 24 { 25 _Values.Add(people); 26 } 27 /// <summary> 28 /// 参数为序号的索引器 29 /// </summary> 30 /// <param name="index"></param> 31 /// <returns></returns> 32 public PeopleClass this[int index] 33 { 34 get 35 { 36 return (PeopleClass)_Values[index]; 37 } 38 set 39 { 40 _Values[index] = value; 41 } 42 } 43 /// <summary> 44 /// 参数为人员姓名的索引器 45 /// </summary> 46 /// <param name="name"></param> 47 /// <returns></returns> 48 public PeopleClass this[string name] 49 { 50 get 51 { 52 foreach(PeopleClass people in _Values) 53 { 54 if(people.Name==name) 55 { 56 return people; 57 } 58 } 59 return null; 60 } 61 } 62 } 63 public class test 64 { 65 void testt() 66 { 67 PeopleList list = new PeopleList(); 68 list.AddPeople(new PeopleClass("1", "大浦安娜")); 69 list.AddPeople(new PeopleClass("2", "泽井芽衣")); 70 list.AddPeople(new PeopleClass("3", "卯月麻衣")); 71 list.AddPeople(new PeopleClass("4", "樱井莉亚")); 72 list.AddPeople(new PeopleClass("5", "雾岛奈津美")); 73 74 PeopleClass people = list[0]; 75 people = list["泽井芽衣"]; 76 } 77 }
unsafe:(编译选项需要允许不安全的代码)
不安全代码只会在使用 /unsafe 编译的情况下出现 D:\项目\程序\01 无纸记录仪\程序\上位机\ADDriverControl\Data\Para.cs 208 13 ADDriverControl
1 /// <summary> 2 /// 转换Int数据到数组 3 /// </summary> 4 /// <param name="data"></param> 5 /// <returns></returns> 6 public static byte[] ToByte(int data) 7 { 8 unsafe 9 { 10 byte* pdata = (byte*)&data; 11 byte[] byteArray = new byte[sizeof(int)]; 12 for (int i = 0; i < sizeof(int); ++i) 13 { 14 byteArray[i] = *pdata++; 15 } 16 return byteArray; 17 } 18 }
常用控件类型和前缀的对应关系
控件类型 | 中文名 | 前缀 |
Button | 按钮 | btn |
CheckBox | 复选框 | chk |
ColumnHeader | 视图列表头 | col |
ComboBox | 组合框 | cbo |
ContextMenu | 快捷菜单 | ctm |
DataGrid | 数据网格控件 | dg |
DataGridView | 数据网格视图控件 | dgv |
DateTimePicker | 时间输入框 | dtp |
DomainUpDown | 数值框 | dud |
Form | 窗体 | frm |
GroupBox | 组合框 | grp |
HscrollBar | 水平滚动条 | hsb |
ImageList | 图标列表 | img |
Label | 文本标签 | lbl |
LinkLabel | 带链接的文本标签 | lbl |
ListBox | 列表框 | lst |
ListView | 视图列表 | lvw |
Menu | 菜单 | menu |
MenuItem | 菜单项 | menu |
NumericUpDown | 数值框 | nud |
Panel | 面板 | pnl |
PictureBox | 图片框 | pic |
ProgressBar | 进度条 | prg |
RadioButton | 单选框按钮 | rdo |
Spliter | 拆分条 | spl |
StatusBar | 状态栏 | stu |
StatusBarPanel | 状态栏区域 | pnl |
StatusStrip | 状态栏 | stu |
TabControl | 分页控件 | tab |
TabPage | 选择卡 | page |
TextBox | 文本框 | txt |
Timer | 定时器 | tmr |
ToolBar | 工具条 | tbr |
ToolStrip | 工具栏 | tsp |
ToolStripButton | 工具栏按钮 | btn |
ToolStripComboBox | 工具栏下拉组合框 | cbo |
ToolStripDropDownButton | 工具栏下拉按钮 | btn |
ToolStripDropDownMenu | 工具栏菜单项目 | menu |
ToolStripLabel | 工具栏静态文本 | lbl |
ToolStripProgressBar | 工具栏进度条 | prg |
ToolStripTextBox | 工具栏文本框 | txt |
TreeView | 树状视图列表 | tvw |
VScrollBar | 垂直滚动条 | vsb |
WebBrowser | 浏览器控件 | wb |
读写系统配置
属性-设置
用户:应用程序自身能修改设置信息
应用程序:设置信息对程序是只读的,只能用另外的文本编辑器来修改配置文件。