首页 > 代码库 > 【翻译】C#和.NET核心快速参考
【翻译】C#和.NET核心快速参考
PS:在网上看到的一篇C#总结,英文的,总结的还可以,都是基础知识,翻译给大家学习。文章结尾有英文原版。发布地址:http://www.cnblogs.com/zxlovenet/p/3745903.html
1.数据类型
类型名 | 大小 | 示例 |
String | 2字节/字符 | S=”reference”; |
Bool |
| b=true; |
char | 2字节 | ch=’a’; |
byte | 1字节 | b=0x78; |
short | 2字节 | lval=54; |
int | 4字节 | lval=540; |
long | 8字节 | lval=5400; |
float | 4字节 | val=54.0F; |
double | 8字节 | val=54.0D; |
decimal | 16字节 | val=54.0M; |
2.数组
描述
1 2 3 4 | int [] numArray = {1903, 1907, 1910}; int [] numArray = new int [3]; // 3行2列 int [ , ] nums = {{1907, 1990}, {1904, 1986}, {1910, 1980}}; |
发布地址:http://www.cnblogs.com/zxlovenet/p/3745903.html
数组操作
1 2 3 4 5 6 7 8 9 10 11 | Array.Sort(numArray); // 升序排列 // 排序开始在4位置,排序10个元素 Array.Sort(numArray, 4, 10); // 使用一个数组作为键排序两个数组 string [] values = {“Cary”, “Gary”, “Barbara”}; string [] keys = {“Grant”, “Cooper”, “Stanwyck”}; Array.Sort(keys, values); // 清除数组中的元素(数组元素, 第一个元素, 元素长度) Array.Clear(numArray, 0, numArray.Length); // 拷贝数组元素到另一个数组 Array.Copy(src, target, numelements); |
3.字符串操作
方法 | 描述 |
Compare | String.Compare(stra,strb,case,ci) case(布尔类型)true为不区分大小写 ci – new CultureInfo(“en-US”) 返回结果: <0 if a<b, 0 if a=b, 1 if a>b |
IndexOf | Str.IndexOf(val,start,num) Val – 要搜索的字符串 Start – 搜索字符串开始的位置 Num – 搜索的长度 |
LastIndexOf | 从字符串的结尾开始搜索 |
Split | Char[] delim = {‘’,’,’}; string w = “Kim, Joanna Leslie”; //创建有三个名字的字符串数组 String[] names = w.Split(delim); |
Substring | Mystring.Substring(ndx,len) String alpha = “abcdef”; //返回”cdef” String s = alpha.Substring(2); //返回”de” S = alpha.Substring(3,2); |
ToCharArray | 被选中的字符作为字符串转换成字符数组 String vowel = “aeiou”; //创建5个元素的数组 Char[] c = vowel.ToCharArray(); //创建’i’和’o’的数组 Char[] c= vowel.ToCharArray(2,2); |
RePlace | Newstr = oldstr.Replace(“old”,”new”); |
发布地址:http://www.cnblogs.com/zxlovenet/p/3745903.html
4.System.Text.StringBuilder
创建
1 2 3 | StringBuilder sb= new StringBuilder(); StringBuilder sb= new StringBuilder(mystring); StringBuilder sb= new StringBuilder(mystring,capacity); |
Mystring - 对象的初始值
Capacity – 缓冲区初始大小(字节)
1 2 3 4 5 6 7 8 9 10 11 12 13 | Using StringBuilderMembers decimal bmi = 22.2M; int wt=168; StringBuilder sb = new StringBuilder(“My weight is ”); sb = sb.Append(wt); // 可以追加数量 sb= sb.Append(“ and my bmi is ”).Append(bmi); // 我的重量是 168 ,我的bmi(身体质量指数)指数是 22.2 sb= sb.Replace(“22.2”,”22.4”); string s = sb.ToString(); // 清除并设置新值 sb.Length=0; sb.Append(“Xanadu”); |
5. DateTime 和 TimeSpan
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | DateTime Constructor DateTime(yr, mo, day) DateTime(yr, mo, day, hr, min, sec) DateTime bday = new DateTime(1964,12,20,11,2,0); DateTime newyr = DateTime.Parse(“1/1/2005”); DateTime currdt = DateTime.Now; // also AddHours, AddMonths, AddYears DateTime tomorrow = currdt.AddDays(1); TimeSpan diff = currdt.Subtract(bday); //从12/20/64 到 6/24/05 14795 天 Console.WriteLine(“{0}”, diff.Days); // TimeSpan(hrs, min, sec) TimeSpan ts = new TimeSpan(6, 30, 10); // also FromMinutes, FromHours, FromDays TimeSpan ts = TimeSpan.FromSeconds(120); TimeSpan ts = ts2 – ts1; // +,-,>,<,==, != |
发布地址:http://www.cnblogs.com/zxlovenet/p/3745903.html
6.格式化数字和日期值
格式项语法: {index[,alignment] [:format string]}
index – 格式化作用于列表中选定的元素。
alignment – 用最小的宽度(字符)来表示值。
format string – 包含指定要显示格式的代码
例子:String.Format(“价格是: {0:C2}”, 49.95); //输出:价格是: $ 49.95
a.数字格式
格式说明符 | 模式 | 值 | 描述 |
C 或 c | {0:C2}, 1388.55 | $ 13888.55 | 货币 |
D 或 d | {0:D5}, 45 | 00045 | 必须是整数值 |
E 或 e | {0,9:E2},1388.55 | 139+E003 | 必须是浮点数 |
F 或 f | {0,9:F2},1388.55 | 1388.55 | 定点表示 |
N 或 n | {0,9:N1},1388.55 | 1,388.6 |
|
P 或 p | {0,9:P3},.7865 | 78.650% |
|
R 或 r | {0,9:R},3.14159 | 3.14159 |
|
X 或 x | {0,9:X4},31 | 001f |
|
示例:
1 2 | CultureInfo ci = new CultureInfo( "de-DE" ); // 德国文化 string curdt = String.Format(ci, "{0:M}" ,DateTime.Now); // 29 Juni |
b. 时间格式:(2005年1月19日16:05:20)的美国格式值
格式 | 显示值 | 格式 | 显示值 |
d | 1/19/2005 | Y or y | January,25 |
D | Wednesday,January 19,2005 | t | 4:05 PM |
f | Wednesday,January 19,2005 4:05:20 PM | T | 4:05:20 PM |
F | Wednesday,January 19,2005 4:05 PM | s | 2005-01-19T16:05:20 |
g | 1/19/2005 4:05 PM | u | 2005-01-19 16:05:20Z |
G | 1/19/2005 4:05:20 PM | U | Wednesday, January 19, 2005 21:05:20PM |
M or m | January 19 |
|
|
发布地址:http://www.cnblogs.com/zxlovenet/p/3745903.html
7. 使用 System.Text.RegularExpressions.Regex 类
1 2 3 4 5 6 | string zipexp = @"\d{5}((-|\s)?\d{4})?$" ; string addr= "W.44th St, New York, NY 10017-0233" ; Match m = Regex.Match(addr,zipexp); //静态方法 Regex zipRegex= new Regex(zipexp); m= zipRegex.Match(addr); // 使用正则表达式对象 Console.WriteLine(m.Value); // 10017-0233 |
模式 | 描述 | 范例 |
+ | 匹配一个或多个 | ab+c 匹配 abc,abbc |
* | 匹配零个或多个 | ab*c 匹配 ac,abbc |
? | 匹配零个或一个 | ab?c 匹配 ac,abc |
\d \D | 匹配十进制数字或非数字(\D) | \d\d 匹配 01,55 |
\w \D | 匹配任何单字符或非字符 | \w 等价于 [a-zA-Z0-9_] |
\s \S | 匹配空白或非空白 | \d*\s\d+ 匹配 246 98 |
[ ] | 匹配任何设置的字符 | [aeiou]n 匹配 in,on |
[^ ] | 匹配没有设置的字符 | [^aeiou] 匹配 r 或 2 |
a | b | a或者b | jpg|jpeg|gif 匹配 .jpg |
\n \r \t | 换行,回车,制表 |
|
8.在命令行中使用C#编译器
C:\> csc /t:library /out:reslib.dll mysource.cs
csc /t:winexe /r:ctls1.dll /r:ctls2.dll winapp.cs
csc /keyfile:strongkey.snk secure.cs
设置 | 描述 |
/ addmodule | 从一个执行文件中导入元数据,不包含manifest。 |
/ debug | 告诉编译器生成调试信息。 |
/ doc | 指定一个XML文档文件,在编译过程中创建。 |
/ keyfile | 指定用于包含文件密钥,创建一个强命名程序集。 |
/ lib | 指定目录中搜索,外部引用的程序集。 |
/ out | 编译输出文件的名称。 |
/reference (/r) | 引用外部程序集。 |
/resource | 资源文件在输出中嵌入。 |
/target (/t) | /t:exe /t:library /t:module /t:winexe |
发布地址:http://www.cnblogs.com/zxlovenet/p/3745903.html
9.C#语言基础
控制流语句 | |
switch (表达式) { case 表达式: // 语句 break / goto / return() case ... default: // 语句 break / goto / return() } 表达式可以是 整形、字符串或枚举类型。 | switch (类型) { case “vhs”: price= 10.00M; break; case “dvd”: price=16.00M; break; default: price=12.00M: break; } |
if (条件) { // 语句 } else { // 语句 } | if (genre==”vhs”) price=10.00M; else if (genre==”dvd”) price=16.00M; else price=12.00M; |
循环结构 | |
while (条件) { body } do { body } while (条件); | while ( ct < 8) { tot += ct; ct++; } do { tot += ct; ct++;} while (ct < 8); |
循环结构(续) | |
for (初始值;终止条件;迭代;) { // 语句 } foreach (类型 变量名 in 集合) { // 语句 } | for (int i=0;i<8;i++) { tot += i; } int[] ages = {27, 33, 44}; foreach(int age in ages) { tot += age; } |
10.C#类定义
类 |
[public | protected | internal | private] [abstract | sealed | static] class 类名 [:继承类/接口] |
构造函数 |
[修饰符权限] 类名 (参数) [:initializer] initializer –在基类中调用基构造函数。 这就要求在类的构造函数。 public class Shirt: Apparel { public Shirt(decimal p, string v) : base(p,v) { constructor body } |
方法 |
[修饰符权限] [static | virtual | override | new | sealed | abstract ] 方法名 ( 参数列表) { 主体 } virtual –方法可以在子类中被覆盖。 override –在重写基类的虚方法。 new –在基类中隐藏了非虚拟方法。 sealed –防止派生类继承。 abstract –必须由子类实现。 传递参数: a. 默认情况下,参数是按值传递。 b. ref和out修饰符:通过引用传递 string id= “gm”; // 调用者初始化ref int weight; // 被调用方法初始化 GetFactor(ref id, out weight); // ... 其它代码 static void GetFactor(ref string id, out int wt) { if (id==”gm”) wt = 454; else wt=1; return; } Prope |
属性 |
[修饰符] <数据类型> 属性名称{ public string VendorName { get { return vendorName; } set { vendorName = value; } } |
11. 委托和事件
委托
[修饰符] delegate 返回值类型 委托名称 ([参数列表]);
1 2 3 4 5 6 7 8 9 10 | // (1) 定义一个委托调用方法(S)具有单个字符串参数 public delegate void StringPrinter( string s); // (2) 注册方法通过委托调用 StringPrinter prt = new StringPrinter(PrintLower); prt += new StringPrinter(PrintUpper); prt(“Copyright was obtained in 2005”); / /执行PrintLower和PrintUpper 使用匿名方法与委托,而不是调用一个方法,委托封装的代码被执行: prt = delegate ( string s) { Console.WriteLine(s.ToLower()); }; prt += delegate ( string s) { Console.WriteLine(s.ToUpper()); }; prt(“Print this in lower and upper case .”); |
事件
1 2 3 4 5 | // class.event += new delegate(event handler method); Button Total = new Button(); Total.Click += new EventHandler(GetTotal); //事件处理程序方法必须已经指定由委托签名 private void GetTotal( object sender, EventArgs e) {} |
常用的控件事件
事件 | 委托 |
Click, MouseEnter DoubleClick, MouseLeave | EventHandler( object sender, EventArgs e) |
MouseDown, Mouseup, MouseMove | MouseEventHandler(object sender,MouseEventArgs e) e.X, e.Y – x和y坐标 e.Button – MouseButton.Left, Middle, Right |
KeyUp, KeyDown | KeyEventHandler(object sndr, KeyEventArgs e) e.Handled –表示事件是否被处理。 e.KeyCode –Keys枚举,例如,Keys.V e.Modifiers –表示如果Alt键,Ctrl或Shift键。 |
KeyPress | KeyPressEventHandler(object sender,KeyPressEventArgs e) |
12. 结构体
[属性][修饰符] 结构体名称 [:接口] { 结构体主体}
与类的区别:
1.是值类型?不能从一个类继承或继承
2.字段不能有初始值设定?显式构造函数必须有一个参数
13. 枚举 (被枚举的类型)
枚举 | 枚举操作 |
e num Fabric: int { cotton = 1, silk = 2, wool = 4, rayon = 8 } | int cotNum = (int) Fabric.cotton; // 1 string cotName = Fabric.cotton.ToString(); // cotton string s = Enum.GetName(typeof(Fabric),2); // silk //创建wool枚举实例,如果它是有效的 if(Enum.IsDefined(typeof(Fabric), “wool”) Fabric woolFab = (Fabric)Enum.Parse(typeof(Fabric),”wool”); |
源文件:http://files.cnblogs.com/zxlovenet/ccnaqr.pdf