小知识(一)
var:
- 初始化必须有赋值,var i;(错的)。
- var类型的对象运行过程中不允许再更改类型。(如:var i=1; i="hello!" 会出错)
- var只声明局部变量。
dynamic:
- 初始化时可以不赋值。
- dynamic类型的对象运行过程中可以给该类型。(如:dynamic i=1; i="hello!" 不出错)
- 可声明为全局变量。
VAR和DYNAMIC:一般当不确定变量类型时使用。
decimal:
高精度小数,范围:1.0*10^-28到7.9*10^28,精度28位。一般用于表示money。float/double精度7/15位,用这float/double两个类型表示货币时它会帮你"抹零"。
decimal默认值:0.0M
float默认值:0.0F
double默认值:0.0D
char:
char字符型赋值有3中
- char c='d';
- char c='\x0068'; 十六进制
- char c='\u0068'; Unicode表示
char c=(char)68; 整形转换char。
默认值:'\x0000'
八进制和十六进制:
C#中整形只用10进制表示,用8进制格式说明符"o"或"O"和16进制格式说明符是"x"或"X"编译会出错,(如:int i = o73;出错)。
当需要输出8进制或者16进制时用i.ToString("x")即可。
显示2进制WriteLine(Convert.ToString(231,2));
显示8进制WriteLine(Convert.ToString(231,8)) ;
显示16进制WriteLine(Convert.ToString(231,16));
显示16进制WriteLine(i.ToString("x"));显示小写。
显示16进制WriteLine(i.ToString("X"));显示大写。
PadLeft和PadRight
输出字符串的左边或者右边填充空格实现右对齐或者左对齐。
ToString().PadLeft(8); 输出字符串长度为8,左边补空格。
Parse:
parse解析,将数字的字符串表示形式等效转换为数字。
如:int.parse(string); double.parse(string); decimal.parse(string)等等。
var和dycimal没有parse方法。
注意:当16进制数字的字符串转换为int时用Parse(string,System.Globalization.NumberStyle)方法,第二个枚举参数选HexNumber即可。
那2进制字符串和8进制字符串怎么解析成int呢?目前还不知道呢……哪位大师说一下???
Encoding:
字符串和字节数组之间的转换。System.Text.Encoding类
byte[] ← GetBytes(string)方法,将字符串转换为字节数组。
string ← GetString(byte[])方法,将字节数组转换为字符串。
Encoding属性:
Encoding.Default 获取系统的当前ANSI代码页的编码
Encoding.UTF7获取UTF7编码格式
Encoding.UTF8获取UTF8编码格式
Encoding.ASCII获取7位ASCII字符集的编码
Encoding.Unicode获取特定顺序的Unicode格式的编码
byte[] b=System.Text.Encoding.Unicode.GetBytes(s);
enum枚举:
用户自定义数据类型。enum枚举的值从1开始,除了自定义。用逗号","隔开,可赋值整形值。
字符串转换特定枚举:
object ← Enum.parse(type enumType,string value);
如:color col=(color)Enum.parse(typeof(color),"white");
注意:如果字符串跟枚举不对应,会出错。
enum e
{
}
struct结构:
用户自定义数据类型,结构类型。结构可包含构造函数、常量、字段、方法、属性、索引器、运算符。
结构是值类型,在堆栈(stack)上分配地址
结构和类都可以继承接口。
结构不能被集成,类可以。
结构没有析构函数,类有。
struct s
{
}
参考C#编程实战宝典。清华大学出版社,付强 丁宁 等编著。第三章。