zoukankan      html  css  js  c++  java
  • .NET理论知识 笔试准备 Day2

    随便看到什么就记录什么吧

    一、MVC的路由规则

    有URL如:http://www.cnblogs.com/leo/2014/5/20/how-mvc-ruotes.html,请写出路由规则。(对应的controller中的action定义如下)
    
    public ActionResult Details(string username, int year, int month, int date, string title)
    
    答案:
    
    name: "1111111111",
    routeTemplate: "{username}/{year}/{month}/{date}/{title}",
    defaults: new { controller = "controller",action="Details" }

    二、Action/Func

    Action主要是用于没有返回值的委托,Func用于有返回值的委托

    两者都有很多重载,用来传递数量不同的参数,如:Action<T1,T2,T3,T4>或Func<T1,T2,T3,T4,TResult>

    三、Const/Readonly

    每一个class至多只可以定义一个static构造函数,并且不允许增加访问级别关键字,参数列必须为空。为了不违背编码规则,通常把static数据成员声明为private,然后通过static property提供读写访问。
    const关键字用于修改字段或局部变量的声明。它指定字段或局部变量的值不能被修改。常数声明引入给定类型的一个或多个常数。
    const数据成员的声明式必须包含初值,且初值必须是一个常量表达式。因为它是在编译时就需要完全评估。
    const成员可以使用另一个const成员来初始化,前提是两者之间没有循环依赖。
    readonly在运行期评估赋值,使我们得以在确保"只读访问"的前提下,把object的初始化动作推迟到运行期进行。
    readonly关键字与const关键字不同:const字段只能在该字段的声明中初始化。readonly字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly字段可能具有不同的值。另外,const字段是编译时常数,而readonly字段可用于运行时常数。 
    readonly只能在声明时或者构造函数里面初始化,并且不能在static修饰的构造函数里面。

    最主要的区别就是const一开始就要赋值,readonly可以后来再赋值

    四、继承时的构造

    class A{
        public A(){ Display(); }
        public virtual void Display(){}
    }
    
    class B : A{
        int x = 1;
        int y;
        public B(){ y = 2; }
        public override void Display() {
            Console.Write(string.Format("x={0},y={1}", x, y));
        }
    }
    结果是 x=1,y=0;类在实例化时会先调用父类构造函数,也就是说,先调用最顶端的父类的构造函数,然后是依次调用子类构造函数;在这道题中是先执行A的构造函数。A的构造函数调用Display方法,因为此方法被子类重写,所以调用的重写后的。此时X=1,由于还没调用B的构造函数所以Y的值是分配栈空间时默认的0。所以最终的结果是x=1,y=0

    这题比较经典,考查了继承、构造、虚方法重写、栈默认值,是个好题。

     五、XML和HTML区别

    1. XML是区分大小写字母的,HTML不区分。
    2. 在HTML中,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以省略。在XML中,绝对不能省略掉结束标记。
    3. 在XML中,拥有单个标记而没有匹配的结束标记的元素必须用一个/字符作为结尾。这样分析器就知道不用 查找结束标记了。
    4. 在XML中,属性值必须分装在引号中。在HTML中,引号是可用可不用的。
    5. 在HTML中,可以拥有不带值的属性名。在XML中,所有的属性都必须带有相应的值。

    XML和HTML长的有点像,但HTML较宽松(用来表达页面),XML很严格(用来传递数据)

    一般WebService使用XML,其它时候数据传递比较爱用Json

    六、正则

    规则和js的正则应该是一样的,就是各有各的方法,项目中在js和C#正则中来回倒,有时会弄的很晕

    1、IsMatch()

    和js的test()差不多

    var regx=/userd+/g;
    var flag=regx.test("user12dd");
    console.log(flag);
    string regx = @"userd+";
    Console.Write(Regex.IsMatch("user12dd", regx));
    Console.ReadKey();

    语法上略有不同,js是 正则.test(字符串),C#是Regex.IsMatch(字符串,正则) ,所以在项目中容易弄混

    2、Replace

    JS:

    var regx=/user/g
    var str="user13userddduser345";
    var rs=str.replace(regx,"ABC"); //得到rs是"ABC13ABCdddABC345"

    C#:Regex

    string regx = @"userd+";
    Console.Write(Regex.Replace("user12dd", regx, ""));
    Console.ReadKey(); //得到"dd"

    字符串的Replace

    string regx = @"userd+";
    //Console.Write(Regex.Replace("user12dd", regx, ""));
    Console.Write("user12dd".Replace(regx, ""));
    Console.ReadKey();

    要注意的是,C#中string也有个Replace方法,非常非常容易和js弄混,js这样是生效的,C#是返回原字符串且不报错。。。。。。

    3、Split

    JS:

    //不管是否加/g,或直接是字符串,效果都是一样的。这点和replace有所不同
    var regx=/user/g;    //或 var regx="user"
    var str="user13userddduser345";
    var rs=str.split(regx); //得到的都是 ["", "13", "ddd", "345"]

    C#:Regex

    字符串的Split

    字符串的Split参数是不一样的,一般用于普通的','这样分隔,复杂一些的,就用到Regex

  • 相关阅读:
    ASP.NET -- repeater控件的使用
    在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: 命名管道提供程序, error: 40
    错误提示:在此上下文中不允许使用名称 "***"。有效表达式包括常量、 常量表达式和变量(在某些上下文中),不允许使用列名。
    mongodb 性能提高之利用索引, 待续
    工程化 经历的 4 个阶段
    把连续的字符 变成 一个
    sort 排序详解
    理解正则 的 ?! ?:
    [ 订单查询 ] 性能 高并发 : 分表 与 用户id%1024 存放表
    搭建LNMP基础框架
  • 原文地址:https://www.cnblogs.com/liuyouying/p/5068753.html
Copyright © 2011-2022 走看看