zoukankan      html  css  js  c++  java
  • C#小知识

    1、

    启动一个线程是用run()还是start()?

    答:启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状

    态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()

    方法可以产生必须退出的标志来停止一个线程。

    2、

    接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可

    继承实体类(concrete class)?

    答:接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承

    实体类,但前提是实体类必须有明确的构造函数。

    3、

    构造器Constructor是否可被override?

    答:构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载

    Overloading。

    4、

    是否可以继承String类?

    答:String类是final类故不可以继承。

    5、

    .try{}里有一个return语句,那么紧跟在这个try后的finally {}里的code会

    不会被执行,什么时候被执行,在return前还是后?

    答:会执行,在return前执行。

    6、

    swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?

    答:switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和

    case语句的参数应该是 int、 short、 char 或者 byte。long,string 都不

    能作用于swtich。

    7、

    abstract的method是否可同时是static,是否可同时是native,是否可同时是

    synchronized?

    答:都不能。

    8、

    List,Set, Map是否继承自Collection接口?

    答:List,Set是Map不是

    9、

    Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是

    equals()?它们有何区别?

    答:Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。

    C#提供值类型和引用类型,值类型存储在栈上,故用==判断是直接判断其值是否相等,因为值类型不存在堆中的数据,因此值类型的Equals也是判断数据。即,对于值类型而言,==与Equals相同,均是判断其值是否相等。

    对于引用类型而言,其栈中存储的是对象的地址,那么==就是比较两个地址是否相等,即是否指向同一个对象;Equals函数则是比较两个对象在堆中的数据是否一样,即两个引用类型是否是对同一个对象的引用。

    String是引用类型,但是按照值类型操作

    10、

    in out和ref

    in,函数中只能读取不能修改

    out,函数中不能读取只能修改

    ref,函数中可读取,可修改

    11、

    协变与逆变

    协变是变的更具体

    逆变是变的更抽象

    12、sleep和wait的区别

    本文较为详细的分析了C#中sleep和wait的区别。分享给大家供大家参考。具体分析如下:

    sleep和wait都是使线程暂时停止执行的方法,但它们有很大的不同。

    ①. sleep是线程类Thread 的方法,它是使当前线程暂时睡眠,可以放在任何位置。

    而wait是Object类的方法,它是使当前线程暂时放弃对象的使用权进行等待,必须放在同步方法或同步块里。

    ②. Sleep使用的时候,线程并不会放弃对象的使用权,即不会释放对象锁,所以在同步方法或同步块中使用sleep,一个线程访问时,其他的线程也是无法访问的。

    而wait是会释放对象锁的,就是当前线程放弃对象的使用权,让其他的线程可以访问。

    ③. 线程执行wait方法时,需要另一个线程调用notify进行唤醒。

    而sleep只是暂时休眠一定时间,时间到了之后,自动恢复运行,不需另外的线程唤醒。

    13、

    shorts1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

    答:short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式

    转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正

    确。

    14、

    shorts1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

    答:short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式

    转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正

    确。

    15、

    进程和线程的区别?

    答:进程是系统进行资源分配和调度的单位;线程是CPU调度和分派的单位,一个

    进程可以有多个线程,这些线程共享这个进程的资源。

    16、

    堆和栈的区别?

    答: 栈:由编译器自动分配、释放。在函数体中定义的变量通常在栈上。   值类型

    堆:一般由程序员分配释放。用new、malloc等分配内存函数分配得到的就是在堆

    上。   引用类型

    17、

    成员变量和成员函数前加static的作用?

    答:它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。分

    别用来反映类的状态。比如类成员变量可以用来统计类实例的数量,类成员函数

    负责这种统计的动作。不用new 

  • 相关阅读:
    使用一系列命令生成字母数字符号组合
    linux分析apache日志获取最多访问的前10个IP
    shell脚本输出九九乘法表
    shell脚本输出空心等腰三角形
    awk与sed命令面试题整理
    linux分析apache日志获取最多访问的前10个IP
    iOS开发-由浅至深学习block
    PM常用软件&工作平台
    iOS开发之—— 各种加密的使用(MD5,base64,DES,AES,RSA,DSA)
    MVVM With ReactiveCocoa
  • 原文地址:https://www.cnblogs.com/xietianjiao/p/13390159.html
Copyright © 2011-2022 走看看