您的位置:首页 > 编程语言 > ASP

asp.net mvc基础准备

2011-12-05 10:51 309 查看
1.扩展方法,对别人的类加以方法扩展

当定义一个扩展方法时,第一个限制就是必须把方法定义在静态类中,因此每一个扩展方法也必须声明为静态的。第二个限制是扩展方法要用this关键字对第一个参数进行修饰,这个参数也就是我们希望进行扩展的类型。

2. 匿名方法与Lamda表达式

Func<int, string, string> MyFunc = (s, b) => { return b + s.ToString(); };

这个含义比较简单,前面2个参数代表输入参数(int,string),也就是s和b,后面{}代表方法体,一句话的就可以省掉{}

3. ?与??

?表示可空类型,例如 bool ? IsUse; 判断有值否就可用if(IsUse!=null)或IsUse.HasValue

??表示两个对象赋值时,或遇到一个null,则给予一个默认值

例: double ? balance = null;

double currentBalance;

currentBalance = balance ?? 0.0;

4.Linq表达式

(1)

书写LINQ查询时又两种语法可供选择:方法语法(Fluent Syntax)和查询表达式(Query Expression)。

编译器会在程序编译时把查询表达式转换为方法语法,即对扩展方法的调用。这意味着,我们用查询表达式写出来的LINQ查询都有等价的方法语法。

string[] names = { "Tom", "Dick", "Harry", "Mary", "Jay" };
IEnumerable<string> query =
from n in names
where n.Contains("a") // Filter elements
orderby n.Length // Sort elements,

select n.ToUpper(); // Translate each element

IEnumerable<string> query2 = names
.Where(n => n.Contains("a")) //n直接来自names array
.OrderBy(n => n.Length) //n来自filter之后的subsequent
.Select(n => n.ToUpper());

(2)

Func<TSource,TResult>匹配TSource => TResult的Lambda表达式,接受一个输入参数TSource,返回TResult。因为TSource和TResult是不同的类型,所以我们的Lambda表达式甚至可以改变输入element的数据类型。下面的示例就把string类型元素转换为int类型元素:

static void TestSelectOperator(){
string[] names = { "Tom", "Dick", "Harry", "Mary", "Jay" };
// 编译器将会从Lambda表达式 n => n.Length推断出TResult为int类型
IEnumerable<int> query = names.Select(n => n.Length);

foreach (int length in query)
Console.Write(length + "|"); // 3|4|5|4|3
}

5.Razor相关语法

(1)MvcHtmlString ---Razor中只能使用MvcHtmlString,create()方法创建 HTML 编码的字符串,实际是个解码HtmlDecode

(2)TagBuilder---用来创建HTML标签,MergeAttribute用来创建属性,InnerHtml,AddCssClass

(3)HtmlHelper用来在页面上显示html元素,注意,它是基类,@Html是子类,扩展方法是用在基类上(或者HtmlHelper用在代码上,Html用在Razor语法上)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: