• .NET面试题1


    1. const和readonly有什么区别?

    const关键字用来声明编译时常量,readonly用来声明运行时常量。都可以标识一个常量,主要有以下区别: 
    1、初始化位置不同。const必须在声明的同时赋值;readonly即可以在声明处赋值,也可以在构造方法里赋值。 
    2、修饰对象不同。const即可以修饰类的字段,也可以修饰局部变量;readonly只能修饰类的字段 。 
    3、const是编译时常量,在编译时确定该值,且值在编译时被内联到代码中;readonly是运行时常量,在运行时确定该值。 
    4、const默认是静态的;而readonly如果设置成静态需要显示声明 。 
    5、支持的类型时不同,const只能修饰基元类型或值为null的其他引用类型;readonly可以是任何类型。

    2. 哪些类型可以定义为常量?常量const有什么风险?

    基元类型或值为null的其他引用类型,常量的风险就是不支持跨程序集版本更新,常量值更新后,所有使用该常量的代码都必须重新编译。

    3. 字段与属性有什么异同?

    • 属性提供了更为强大的,灵活的功能来操作字段
    • 出于面向对象的封装性,字段一般不设计为Public
    • 属性允许在set和get中编写代码
    • 属性允许控制set和get的可访问性,从而提供只读或者可读写的功能 (逻辑上只写是没有意义的)
    • 属性可以使用override 和 new

    4. 静态成员和非静态成员的区别?

    • 静态变量使用 static 修饰符进行声明,静态成员在加类的时候就被加载(上一篇中提到过,静态字段是随类型对象存放在Load Heap上的),通过类进行访问。
    • 不带有static 修饰符声明的变量称做非静态变量,在对象被实例化时创建,通过对象进行访问 。
    • 一个类的所有实例的同一静态变量都是同一个值,同一个类的不同实例的同一非静态变量可以是不同的值 。
    • 静态函数的实现里不能使用非静态成员,如非静态变量、非静态函数等。

    5. 自动属性有什么风险?

    因为自动属性的私有字段是由编译器命名的,后期不宜随意修改,比如在序列化中会导致字段值丢失。

    6. 特性是什么?如何使用?

    特性与属性是完全不相同的两个概念,只是在名称上比较相近。Attribute特性就是关联了一个目标对象的一段配置信息,本质上是一个类,其为目标元素提供关联附加信息,这段附加信息存储在dll内的元数据,它本身没什么意义。运行期以反射的方式来获取附加信息。使用方法可以参考:http://www.cnblogs.com/anding/p/5129178.html

    7. 下面的代码输出什么结果?为什么?

    List<Action> acs = new List<Action>(5);
    for (int i = 0; i < 5; i++)
    {
        acs.Add(() => { Console.WriteLine(i); });
    }
    acs.ForEach(ac => ac());

    输出了 5 5 5 5 5,全是5!因为闭包中的共享变量i会被提升为委托对象的公共字段,生命周期延长了

    8. C#中的委托是什么?事件是不是一种委托?

    什么是委托?简单来说,委托类似于 C或 C++中的函数指针,允许将方法作为参数进行传递。

    • C#中的委托都继承自System.Delegate类型;
    • 委托类型的声明与方法签名类似,有返回值和参数;
    • 委托是一种可以封装命名(或匿名)方法的引用类型,把方法当做指针传递,但委托是面向对象、类型安全的;

    事件可以理解为一种特殊的委托,事件内部是基于委托来实现的。

    版权所有,文章来源:http://www.cnblogs.com/anding

    个人能力有限,本文内容仅供学习、探讨,欢迎指正、交流。

  • 相关阅读:
    JavaScript 深入之从原型到原型链
    js重写内置的call、apply、bind
    js中flat方法的实现原理
    【我的物联网成长记6】由浅入深了解NB-IoT【华为云技术分享】
    GO富集分析示例【华为云技术分享】
    华为“方舟编译器”到底是啥?一文看懂TA如何让手机性能再突破【华为云技术分享】
    无码系列-7-代码的语文修养_上篇【华为云技术分享】
    机器学习笔记(一)----基本概念【华为云技术分享】
    性能达到原生 MySQL 七倍,华为云 Taurus 技术解读【华为云技术分享】
    【立即报名】人脸情绪识别案例分享【华为云技术分享】
  • 原文地址:https://www.cnblogs.com/zhangxiaolei521/p/5258876.html
Copyright © 2020-2023  润新知