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

  • 相关阅读:
    MAC LAMP环境 php执行使用问题
    centos 服务器 安全设置
    Linux系统发现占用CPU达100%的进程并处理
    git 使用国内镜像 ,查看镜像更改情况
    mac安装composer
    MySql反向模糊查询
    Linux启动或重启网卡
    MAMP环境 nginx配置忽略index.php入口文件
    php 验证码生成 不保存的情况下 缩小图片质量
    KMP字符串模式匹配详解
  • 原文地址:https://www.cnblogs.com/bearhb/p/2276510.html
Copyright © 2020-2023  润新知