000-C#基础

时间:2021-03-28 00:40:34

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(,);

匿名委托

add12 aaa=delegate(int a,int b)
{
return a+b;
};
int result=aaa(,);
aaa=delegate(int a,int b)
{
return a*b;
};
result=aaa(,);

泛型

开发中常用的泛型类型为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);

  }

}

索引器

 public class PeopleClass
{
public string Name;
public string Id;
public PeopleClass(string id,string name)
{
Id = id;
Name = name;
}
}
/// <summary>
/// 索引器范例
/// </summary>
public class PeopleList
{
public PeopleList()
{ }
private ArrayList _Values = new ArrayList();
/// <summary>
/// 添加对象
/// </summary>
/// <param name="people"></param>
public void AddPeople(PeopleClass people)
{
_Values.Add(people);
}
/// <summary>
/// 参数为序号的索引器
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
public PeopleClass this[int index]
{
get
{
return (PeopleClass)_Values[index];
}
set
{
_Values[index] = value;
}
}
/// <summary>
/// 参数为人员姓名的索引器
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public PeopleClass this[string name]
{
get
{
foreach(PeopleClass people in _Values)
{
if(people.Name==name)
{
return people;
}
}
return null;
}
}
}
public class test
{
void testt()
{
PeopleList list = new PeopleList();
list.AddPeople(new PeopleClass("", "大浦安娜"));
list.AddPeople(new PeopleClass("", "泽井芽衣"));
list.AddPeople(new PeopleClass("", "卯月麻衣"));
list.AddPeople(new PeopleClass("", "樱井莉亚"));
list.AddPeople(new PeopleClass("", "雾岛奈津美")); PeopleClass people = list[];
people = list["泽井芽衣"];
}
}

unsafe:(编译选项需要允许不安全的代码)

不安全代码只会在使用 /unsafe 编译的情况下出现 D:\项目\程序\01 无纸记录仪\程序\上位机\ADDriverControl\Data\Para.cs 208 13 ADDriverControl

 /// <summary>
/// 转换Int数据到数组
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public static byte[] ToByte(int data)
{
unsafe
{
byte* pdata = (byte*)&data;
byte[] byteArray = new byte[sizeof(int)];
for (int i = ; i < sizeof(int); ++i)
{
byteArray[i] = *pdata++;
}
return byteArray;
}
}

常用控件类型和前缀的对应关系

控件类型 中文名 前缀
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

读写系统配置

属性-设置

用户:应用程序自身能修改设置信息

应用程序:设置信息对程序是只读的,只能用另外的文本编辑器来修改配置文件。