asp.net mvc基础准备

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语法上)

 

posted @ 2011-12-05 10:51  阿土仔  阅读(185)  评论(0编辑  收藏  举报