zoukankan      html  css  js  c++  java
  • .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

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

  • 相关阅读:
    闭包
    函数进阶2
    文档翻译 Python 2.7.x和Python 3.x之间的主要区别(包括示例)
    Deep Learn 关于单维度模型的多维输出
    Deep Learning 名词解释
    Deep Learning 激活函数
    Deep Learning 归一化、标准化
    Deep Learning 梯度下降
    Deep Learning 循环神经网络
    Deep Learning BP反向传播
  • 原文地址:https://www.cnblogs.com/zhangxiaolei521/p/5258876.html
Copyright © 2011-2022 走看看