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(,);
匿名委托
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 |
读写系统配置
属性-设置
用户:应用程序自身能修改设置信息
应用程序:设置信息对程序是只读的,只能用另外的文本编辑器来修改配置文件。
000-C#基础的更多相关文章
- 斯坦福数据挖掘Introduction
感谢敖山.薛霄老师把我引进了统计学和现代服务业的大门.......至少是长见识了. 查相似项检索时发现的. 中间一部分资料来自厦门大学数据库实验室,感谢大牛们的传道授业,爱你们. 查资料时发现很多计算 ...
- Python 学习笔记 编程基础汇总000
编程基础知识汇总000 1.计算机结构 2.编程语言分类 3.字符编码由来 计算机结构 计算机组成五大部件: 控制器.运算器.存储器.输入.输出 控制器(Controler):对程序规定的控制信息进行 ...
- 【已解决】Https请求——基础连接已经关闭 发送时发生错误
本人在做商用项目的推送消息功能时,借助第三方推送服务.这里避免有打广告的嫌疑,就不报名字了.由于是通过调用API接口,所以Post方法是自己写的,但是在开发环境是可以正常推送的,但是一上线就出各种问题 ...
- Web前端温故知新-CSS基础
一.CSS定义与编写CSS 1.1 CSS的定义 全名:Cascading Style Sheets -> 层叠样式表 定义:CSS成为层叠样式表,它主要用于设置HTML页面中的文本内容(字体. ...
- 2000条你应知的WPF小姿势 基础篇<69-73 WPF Freeze机制和Template>
在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000ThingsYou Should Know About C# 和 2,00 ...
- 2000条你应知的WPF小姿势 基础篇<22-27 WPF生命周期, 基础类等>
端午长假在家陪着女朋友, 幸福感满满,生活对于一只饱经忧患的程序猿来说也是非常重要的,也就暂时没有更新博客.休假结束,回归奋斗的日子了,开始继续更新WPF系列. 在正文开始之前需要介绍一个人:Sean ...
- 2000条你应知的WPF小姿势 基础篇<15-21>
在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师,对C#和WPF有着极深的热情.最为出色的是他维护了两个博客:2,000Things You Should Know ...
- 2000条你应知的WPF小姿势 基础篇<1-7>
在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师,对C#和WPF有着极深的热情.最为出色的是他维护了两个博客:2,000Things You Should Know ...
- Oracle数据库基础知识
oracle数据库plsql developer 目录(?)[-] 一 SQL基础知识 创建删除数据库 创建删除修改表 添加修改删除列 oracle cascade用法 添加删除约束主键外 ...
- CSS基础篇之了解CSS和它的基本属性
CSS是什么? CSS英文全名是Cascading Style Sheets翻译过来就是层叠样式表,它主是把网页表现与内容分离的一种样式设计语言.这种语言能优化我们编程,把东西简化和优化写法,而且不同 ...
随机推荐
- 写一个Windows上的守护进程(8)获取进程路径
写一个Windows上的守护进程(8)获取进程路径 要想守护某个进程,就先得知道这个进程在不在.我们假设要守护的进程只会存在一个实例(这也是绝大部分情形). 我是遍历系统上的所有进程,然后判断他们的路 ...
- busybox中tftp服务器使用命令
参数说明:-l 是local的缩写,后跟存在于Client的源文件名,或下载Client后重命名的文件名.-r 是remote的缩写,后跟Server即PC机tftp服务器根目录中的源文件名,或上传S ...
- java 读取并且显示 txt 文件
系统:mac os x 10.9 eclipse 在eclipse 中建立一个project, 命名为Cin_txt, Cin_txt的内容 test wang hello world 以下是输入的代 ...
- Mapper映射语句高阶应用——ResultMap
resultMap 元素是MyBatis 中最重要最强大的元素.它就是让你远离 90%的需要从结果 集中取出数据的 JDBC代码的那个东西, 而且在一些情形下允许你做一些 JDBC 不支持的事 情. ...
- JSON序列化选项
JSON.stringify()除了接受序列化js对象外,还可以接受另外的两个参数,这两个参数用于指定使用什么样的方式序列化js对象. 第一个参数是个过滤器,可以一个数组或者一个函数:第二个参数是一个 ...
- setInterval()-----------js 函数总结
setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式. setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭.由 s ...
- 【转】Memcached管理与监控工具----MemAdmin
原文连接:http://blog.csdn.net/ajun_studio/article/details/6746877 原文作者:halfMe 转载注明以上信息! 使用MemCached以后,肯定 ...
- 分西瓜(DFS)
描述今天是阴历七月初五,acm队员zb的生日.zb正在和C小加.never在武汉集训.他想给这两位兄弟买点什么庆祝生日,经过调查,zb发现C小加和never都很喜欢吃西瓜,而且一吃就是一堆的那种,zb ...
- Keil中Memory Model和Code Rom Size说明
C51中定义变量时如果省略存储器类型,Keil C51编译系统则会按编译模式SMALL.COMPACT和LARGE所规定的默认存储器类型去指定变量的存储区域,无论什么存储模式都可以声明变量在任何的80 ...
- Keil C51汉字显示的bug问题(0xFD问题)
一.缘起 这两天改进MCU的液晶显示方法,采用“即编即显”的思路,编写了一个可以直接显示字符串的程序.如程序调用disstr("我是你老爸");液晶屏上就会显示“我是你老爸”. 二 ...