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