C# 零碎小知识
1 @控制符:前缀可以使引号里的内容原样输出,而不理会里面的转义字符。
2 转义字符“\”:为了灵活控制文本格式,C#中定义了大量转义字符,这些字符都以反斜杠“\“开头。
3 +运算符:可以将两个字符串连接起来。
4 枚举类型(Enumeration type) : 它能把字符串映射到数字上,既能增强可读性,又可以参与运算。
5 结构体(Structure):在C#中我们可以吧紧密联系变量定义成结构体。
6 隐式、显式转换。从小的向大的转一般可以隐式转换。显式转换,也称强制类型转换。
(type)(表达式)
使用System.Convert类 将一个基本数据类型转换为另一个基本数据类型。
使用Parse方法 大部份预定义值类型都有这个静态方法,用来将相应的文本转化为相应的值类型。
装箱和取消装箱 装箱和取消装箱使值类型能够与 object 类型相互转换。
装箱转换允许将“值类型”隐式转换为“引用类型”。将“值类型”的值装箱的操作包括:分配一个对象实例并将“值类型”的值复制到该实例中。
7 值传递、引用传递。值传递:传的是对象的值拷贝。引用传递:传的是栈中对象的地址。
8 ref(引用型参数)、out(输出型参数)。ref(引用型参数)对方法的数据传递时通过实际值的内存地址来传递的,所以说对其的改变将影响到它实际的内存地址。out(输出型参数),同ref一样也不开辟新的内存地址,但是输出型参数的一个特点是在调用方法时不用先初始化,在返回前必须初始化。
9 递归(recursion):程序调用自身的编程技巧称为递归。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法。
10 析构函数、虚函数。析构函数:使用“~”符合(逻辑非运算符),析构函数也是特殊的类成员函数,它没有返回类型,没有参数,不能随意调用,也没有重载,只有在类对象的生命期结束的时候,由系统自动调用。 虚函数:如果父类的函数(方法)根本没有必要或者无法实现,完全要依赖子类去实现的话,可以把此函数(方法)设为virturl。
11 const/readonly/static readonly。
- const和readonly的值一旦初始化则都不再可以改写;
- const只能在声明时初始化;readonly既可以在声明时初始化也可以在构造器中初始化;
- const隐含static,不可以再写static const;readonly则不默认static,如需要可以写static readonly;
-
const是编译期静态解析的常量(因此其表达式必须在编译时就可以求值);readonly则是运行期动态解析的常量;
- const既可用来修饰类中的成员,也可修饰函数体内的局部变量;readonly只可以用于修饰类中的成员。
12 base: base关键字用于用于从派生类中访问基类的成员。
13 is,as运算符:检查对象类型的兼容性。
is转换规则:
1. 检查对象类型的兼容性,并返回结果true(false);
2.不会抛出异常;
3.如果对象为null,刚返回false。
as转换规则:
1.检查对象类型的兼容性,并返回转换结果,如果不兼容则返回null;
2.不会抛出异常;
3.如果结果判断为空,则强制执行类型转换将抛出NullReferenceException异常。
14 sizeof运算符:可以确定堆栈中值类型需要的长度(单位是字节)。
15 typeof运算符:运算符用于获得指定类型在system名字空间中定义的类型名字。
16 GetType()函数:获取当前实例的类型.因此只有建立一个实例之后才能够被调用(初始化以后)。
17 可空类型:可空类型表示可被赋值为null值的值类型变量。 语法T?是System.Nullable<T>的简写,此处的T为值类型。
例子
/// <summary>
/// 操作日期
/// </summary>
public Nullable<DateTime> ope_date
{
set;
get;
}
18 委托:委托使用的目标:把函数作为参数传递。
19 命名空间:.Net Framework使用命名空间来组织它的众多类,是同类功能的类的集合。
20 泛型:泛型的作用可以将类和方法将一个或多个类型的指定推迟到客户端代码声明并实例化的时候。可以最大限度地重用代码、包含类型的安
全以及提高性能。 where(泛型类型约束)可以对泛型进行约束,
例:
public static T XmlDeserialize<T>(XmlDocument doc) where T : class
where T:class
这句话的意思是 是 是 就是 限定 T 必须是引用类型
21 数据库连接字符串: rSqlConnection = new SqlConnection("Data Source=IP地址;User ID=登录用户;Password=登录密码;Database=数据库名称");
rSqlConnection = new SqlConnection("Data Source=.;User ID=sa;Password=123456;Database=DB_OA");
22 对象不能从 DBNull 转换为其他类型。 解决办法:数据库里面拿到的值是空值但是转换成另一种类型的时候要求不能是空值,这时候你需要在拿到值的时候try/catch一下,或者直接设置该列不能为空,给他一个默认值就行了。
23 MaxLength 是 TextBox 控件所允许输入的 “最大字符数”, 无视 汉字还是英文。
24 一般一个汉字占用两个字节,根据数据看的字符集编码有一定的变化,也有一个汉字占用三个字节(Linux)的情况。通常汉字一个字占两个字节,英文一个字母占一个字节。GBK\GB2312编码是2个字节,但是unicode\utf-8编码是3个字节。
25 字节是计算机处理的最小数据单位,字符是指我们能够看到的各种文字。一个半角的数字或英文字母占用一个字节,一个汉字或全角的数字或英文字母占用2个字节。
26字节是计算机里文件大小的单位,一个字节8个字位,字符是对字母,汉字和其他符号的统称。通常一个字母是一个字节大小,一个汉字是两个字节大小。它们是不同的概念,之间没有换算关系。字节与字符没有必然联系。字符是文字或符号的统称。
27 清空Table数据 clear()方法
28 日期转换格式。string.Format("{0:yyyy-MM-dd hh:MM:ss}", userLoginLogModel.Login_Date) ,比如:2013-03-14 11:58:02 。注:userLoginLogModel.Login_Date 是 DateTime类型的
30 SendKeys.Send():将一个或多个按键消息发送到活动窗口,就如同在键盘上进行输入一样。
31 回调方法是一种在操作或活动完成时由委托自动调用的方法。