• 日记25问c#


    1.静态成员和非静态成员的区别?
    静态字段为类型所有实例所共享,而实例字段则为每个对象实例所专有。
    静态方法不能访问实例成员,而且无需对象实例即可调用。
    静态构造方法仅在AppDomain初始化类型时执行一次,而且具有AppDomain级别的线程安全性。而实例构造函数则在对象初始化时执行。

    2.const 和 static readonly 区别?
    const的字段在编译时会将其字面值直接写到引用它的地方,而且必须用字面常量在编译时初始化。
    static readonly可以在运行时初始化。

    3.extern 是什么意思?
    extern表示函数体在其他地方定义。因此这样的函数只有声明没有定义。

    4.abstract 是什么意思?
    abstract用于类表示该类不能实例化,用于成员表示它是子类必须重写的过程。

    5.internal 修饰符起什么作用?
    表示该类型或成员仅在同一程序集中可被其他类型所访问。

    6.sealed 修饰符是干什么的?
    表示该类型不能被继承,或该(虚拟)成员不能再被子类所重写。

    7.override 和 overload 的区别?
    我其实不太愿意讨论两个范畴的东西有什么区别,因为硬要说区别就等于把两者的定义分别写一遍。

    8.什么是索引指示器?
    是一种带参数的属性,通过obj[params]的语法进行调用。

    9.new 修饰符是起什么作用?
    它指示该过程在MethodTable中开启一个新的“slot”,从而断开基类同名虚成员对其的调用关系。

    10.this 关键字的含义?
    在引用类型中,它表示所调用的对象实例的引用。在值类型中,它是一个符号,将this上的各种操作转嫁给所调用的值类型对象实例。

    11.可以使用抽象函数重写基类中的虚函数吗?
    当且仅当基类中相应的函数也为抽象函数。

    12.密封类可以有虚函数吗?
    可以,甚至有些封闭类带有新声明的虚函数(所有委托类型)。

    13.什么是属性访问器?
    使用访问变量的语法访问属性时,实际被调用的过程。

    14.abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?
    可以和override一起使用,当且仅当重写一个父类的虚成员时。

    15.接口可以包含哪些成员?
    接口仅可以包含过程,即方法、属性、事件。而且只能定义过程的签名,不能定义他们的方法体、访问级别等。

    16.类和结构的区别?
    类为引用类型
    结构为值类型
    结构没有终结器
    结构不能继承
    结构必须有一个默认构造方法,且不能自定义无参数构造方法
    结构的成员不能在声明时赋值
    结构默认有专门实现的不同==和GetHashCode方法

    17.接口的多继承会带来哪些问题?
    任何特性均在正确使用时发挥正确的效果。因此我们应该看到多继承的优势。

    18.抽象类和接口的区别?
    抽象类可以有构造方法
    抽象类可以有终结器
    抽象类可以有字段
    抽象类可以有静态成员
    抽象类可以没有抽象方法
    抽象类可以有实例方法
    一个类只能继承一个抽象类,而可以实现多个接口
    抽象类的成员可以带有访问性级别
    抽象类之间不能多继承,接口则可以
    抽象类可以有静态构造方法

    19.别名指示符是什么?
    命名空间别名限定符::专名用来限定所用的名字要从指定别名所表示的范围开始搜索。别名为extern或using关键字定义的命名空间或根别名。

    20.如何手工释放资源?
    没有手工释放托管资源的功能,尽管有些看其来是在释放其实不是。只能手工释放非托管资源。

    21.P/Invoke是什么?
    通过Runtime进行封送(Marshal),调用公开方式的非托管代码,包括DLL和COM等。

    22.StringBuilder 和 String 的区别?
    基本上是写出两者定义的那种“区别”

    23.explicit 和 implicit 的含义?
    这是两个类型转换运算符,explicit运算符需要明确指出目标类型名,而implicit会根据上下文自动调用。

    24.params 有什么用?
    一种提供参数数目可变的参数传递方法。任意数目的参数可转化为一个数组。

    25.什么是反射?
    通过程序基内的元数据和Runtime的支持在运行时读取程序集、模块、类型和成员的信息,以及在运行时通过这种途径访问对象的成员或执行对象的方法。甚至动态改变类型和方法的组成。
  • 相关阅读:
    CentOS最常用命令
    cssreset
    mysql cmd连接 乱码
    帮朋友转发招聘信息 南京知名互联网公司招聘java、测试、前端,具体私聊
    InputStream写文件出现大量NUL
    iOS app开发资料整理
    完美的视图旋转算法
    Windows上使用clang编译
    nodejs
    Rpath handling on Linux
  • 原文地址:https://www.cnblogs.com/etata/p/1178561.html
Copyright © 2020-2023  润新知