首页 > 代码库 > 【翻译】C#和.NET核心快速参考

【翻译】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