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

  • 相关阅读:
    ActiveMQ 即时通讯服务 浅析
    Asp.net Mvc (Filter及其执行顺序)
    ActiveMQ基本介绍
    ActiveMQ持久化消息的三种方式
    Windows Azure Virtual Machine (27) 使用psping工具,测试Azure VM网络连通性
    Azure China (10) 使用Azure China SAS Token
    Windows Azure Affinity Groups (3) 修改虚拟网络地缘组(Affinity Group)的配置
    Windows Azure Storage (22) Azure Storage如何支持多级目录
    Windows Azure Virtual Machine (26) 使用高级存储(SSD)和DS系列VM
    Azure Redis Cache (2) 创建和使用Azure Redis Cache
  • 原文地址:https://www.cnblogs.com/liuyouying/p/5068753.html
Copyright © 2011-2022 走看看