Thursday, July 1, 2010

C#

http://msdn.microsoft.com/zh-cn/library/bb507200.aspx

1. C#用多种修饰符来表达类的不同性质。根据其保护级C#的类有五种不同的限制修饰符:

1). public可以被任意存取;
2). protected 只可以被本类和其继承子类存取;
3). internal只可以被本组合体(Assembly)内所有的类存取,组合体是C#语言中类被组合后的逻辑单位和物理单位,其编译后的文件扩展名往往是“.DLL”或“.EXE”。
4). protected internal唯一的一种组合限制修饰符,它只可以被本组合体内所有的类和这些类的继承子类所存取。
5). private只可以被本类所存取。

2. 域field(Member Variable)
1). readonly修饰符来表示只读域,const来表示不变常量。

只读域只能在初始化--声明初始化或构造器初始化--的过程中赋值,其他地方不能进行对只读域的赋值操作,否则编译器会报错。只读域可以是实例域也可以是静态域。只读域的类型可以是C#语言的任何类型。
但const修饰的常量必须在声明的同时赋值,而且要求编译器能够在编译时期计算出这个确定的值。 const修饰的常量为静态变量,不能够为对象所获取。const修饰的值的类型也有限制,它只能为下列类型之一(或能够转换为下列类型的):sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, decimal, bool, string, enum类型, 或引用类型。值得注意的是这里的引用类型,由于除去string类型外,所有的类型出去null值以外在编译时期都不能由编译器计算出他们的确切的值,所以我们能够声明为const的引用类型只能为string或值为null的其他引用类型。显然当我们声明一个null的常量时,我们已经失去了声明的意义 --这也可以说是C#设计的尴尬之处!

3. 正则表达式

1) *,描述“出现 0 或多次”。
2) +,描述“出现 1 或多次”。
3) ?,描述“出现 0 或 1 次”。
4) x{1,5} 出现x 一到五次,x{5}出现x 两次, x{,5}出现x零到五次
5) .它可匹配任何单字符
6) ^指定字符串(或行)的开始
7) $指定字符串(或行)的结束
8) \ 既可根据特殊含义“转义”字符,也可指定预定义集合元字符的实例. 例如:如果要匹配以“c:\”开始的字符串,可使用:^c:\\
9) |用于交替指定.例如:a|b 将匹配包含“a”或“b”的任何输入内容,这与字符类 [ab] 非常类似
10) () 给模式分组。它允许使用限定符让一个完整模式出现多次.例如:(abc){2,3} abcabc、abcabcabc

4. 什么时候使用委托
在以下情况下,请使用委托:
  • 当使用事件设计模式时。

  • 当封装静态方法可取时。

  • 当调用方不需要访问实现该方法的对象中的其他属性、方法或接口时。

  • 需要方便的组合。

  • 当类可能需要该方法的多个实现时。


在以下情况下,请使用接口:

  • 当存在一组可能被调用的相关方法时。

  • 当类只需要方法的单个实现时。

  • 当使用接口的类想要将该接口强制转换为其他接口或类类型时。

  • 当正在实现的方法链接到类的类型或标识时:例如比较方法。


http://www.cnblogs.com/michaelxu/archive/2008/04/02/1134217.html

5. Cookies 的操作
foreach (string strKey in Request.Cookies)
{
lblCookies.Text += strKey + "=" + Request.Cookies[ strKey ].Value;
}

(2)使用方法

1.在源页面的代码中创建你需要传递的名称和值构造Cookie对象:
HttpCookie objCookie = new HttpCookie("myCookie","Hello,Cookie!");
Response.Cookies.Add(cookie);
2.在目的页面的代码使用Cookie对象取出传递的值:Result = Request.Cookies[ "myCookie" ].Value;

(3)应用举例

1.源页面 *.aspx的代码:

private void Button1_Click(object sender, System.EventArgs e)
{
HttpCookie objCookie = new HttpCookie("myCookie","Hello,Cookie!");
Response.Cookies.Add(objCookie);
}

2.目的页面 *.aspx的代码:

private void Page_Load(object sender, System.EventArgs e)
{
string myName1Value;
myName1Value = Request.Cookies[ "myCookie" ].Value;
}

6. array
1) for (int i = 0; i < myArray.Length; i++)
{
Console.WriteLine(myArray[i]);
}

2) foreach (var val in myArray)
{
Console.WriteLine(val);
}

No comments: