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.数组
描述
class="brush:csharp;gutter:true;">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
数组操作
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
创建
StringBuilder sb=new StringBuilder(); StringBuilder sb=new StringBuilder(mystring); StringBuilder sb=new StringBuilder(mystring,capacity);
Mystring - 对象的初始值
Capacity – 缓冲区初始大小(字节)
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
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
示例:
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 类
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) 定义一个委托调用方法(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.”);
事件
// 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