zoukankan      html  css  js  c++  java
  • .Net常见的一些区别

    说明:这是面试过程中整理的,不全是我原创的,感谢原作者。

    如果错误,请指正,不胜感激。。

     

    一,Equals()和==的区别

    1,值类型,对象的值相等,则都返回True

    2,引用类型,==比较的是两个变量的值是否相等,或两个引用是不是指向同一个内存地址,对于string类型,比较的是值。

                 equals()方法比较的是两个对象指向的内存空间的内容是否相同,也就是比较两个引用类型是否是同一个对象的引用。

    object o1=s1;

    object o2=s2;

    o1==o2                  //True  另外默认情况下引用相等,==和Equals一样

    o1.Equals(o2)           //True     同一个对象存储空间的内容相等

     

    ClassA a=new ClassA("CC");

    ClassA b=new ClassA("CC");

    a==b                        //False    两个不同的对象,内存地址不同

    a.Equals(b)                //False    对不同对象的引用

     

    ClassA a=new ClassA("CC");

    ClassA b=a;

    a==b                        //True    b=a,赋值操作,所以内存指向同一个地址

    a.Equals(b)                //true    同一个对象的引用

     

    二,const和readonly的区别

    1,readonly和const都是用来标示常量的标示符

    2,const必须在声明的同时赋值

    public const int MaxValue=10   //正确

    public const int MaxValue      //错误

       readonly可以再初始化(声明或构造函数)的过程中赋值,其他地方不能进行赋值,否则会编译报错

    public class Class1

    {

    public readonly int a=10   //正确

    public const int b

    public Class1

    {

    b=10;                

    }

    protected void Load()

    {

    b=23     //正确

    }

    }

    3,const要求编译时计算出确定的值,不能用变量初始化,readonly可以用某些变量初始化,在运行时确定值

    4,const默认是静态的,readonly设置成静态的必须声明

    5,object Array(数组) strut(结构)不能被声明为const

     

    三,private,protected,public,internal的区别

    private,是私有的,只能在类内部调用,子类不能继承private的属性和方法

    protected,自己和自己的子类可以调用

    public,对任何类成员完全开放,无限制

    internal,同一个引用程序集内部,不是解决方案

     

    四,sealed,new,virtual,abstract,override

    sealed,不能继承,不能重写,当应用于方法和属性时,sealed必须和override一起使用

    new,现实隐藏基类的成员,在子类调用是new新定义出来的,不是基类的方法

    virtual,虚成员,可以由子类中的方法重写更改,不能将virtual和static,abstract,override一起使用

    abstract,抽象,可以继承,只能在抽象类中使用抽象方法,不能被实例化,不提供实际实现,没有方法体

    override,重写,重写基类方法必须是抽象的,虚拟的,重写的,

     

    五,Server.Transfer()和Response.Redirect区别

    1,前者是在服务器端跳转,浏览器地址不变,后者是在客户端跳转,地址栏变化,前者性能比后者好

    2,前者只能在同一服务器的同一站点运行,后者可以定向到不同的服务器

    3,在网站内部尽量使用Server.Transfer(),定向外面是用Response.Redirect

     

    六,get和post的区别

    1,get提交表单时值和表单一一对应,在URL显现出来,post不会显现出来。

    2,get使用Rquest.QuerString[],post使用Request.From[];

    3,get最大为2k,post理论上不受限制,get安全性比post低

     

    七,ref和out:

    ref与out是很特殊的两个关键字。使用它们,可以使参数按照引用来传递。

    ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。

    out 关键字会导致参数通过引用来传递。这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字。

    区别:

    out 参数在进入方法(函数)时后清空自己,使自己变成一个干净的参数,也因为这个原因必须在方法返回之前或再使用out参数前为 out 参数赋值(只有地址没有值的参数是不能被.net接受的);

    ref参数是不需要在被调用方法使用前先赋值的,甚至也可以被调用方法中不改变ref参数的 值,这都不会引起编译错误。

    ref参数在使用前必需初始化,而out不需要。

    out参数只进不出,ref参数有进有出。

    用法上概括一下就是:out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。

  • 相关阅读:
    基于Token的WEB后台认证机制
    导出和导入Docker容器
    进入Docker容器
    介绍Docker容器
    Docker镜像的实现原理
    Docker 移除镜像
    存出和载入Docker镜像
    Docker 创建镜像
    Docker 列出镜像
    Docker如何获取镜像
  • 原文地址:https://www.cnblogs.com/softmax/p/2823222.html
Copyright © 2011-2022 走看看