C# 面试题:基础 三

21.什么是强类型,什么是弱类型?哪种更好些?为什么?

强类型是在编译的时候就确定类型的数据,在执行时类型不能更改,
弱类型在执行的时候才会确定类型。
没有好不好,二者各有好处,强类型安全,因为它事先已经确定好了,而且效率高。

22.using关键字的作用

1.引用命名空间,也可using 别名-

2.释放资源,实现了IDisposiable的类在using中创建,using结束后会自定调用该对象的Dispose方法,释放资源。

23.ref和out有什么区别

1.都是按引用类型进行传递

2.属性不是变量不能作为out、ref参数传递

3.ref参数必须初始化。out不需要初始化

4.作用,当方法有多个返回值时,out非常有用

  • 传递方式:refout 都是使用传址的方式来传递参数的,即将变量的内存地址直接传递给函数。但是,它们之间在传递参数时的限制不同。
    在使用 ref 修饰参数时,必须在调用函数之前对参数进行赋值,否则编译器会报错。
    而在使用 out 修饰参数时,不需要在调用函数之前对参数进行赋值。

24.a.Equals(b)和a==b一样吗?

不一样,a==b仅仅表示a和b值相等,a.Equals(b)表示a与b一致

25.下面这段代码求值

class Class1
    {
        internal static int count = 0;
        static Class1()
        {
            count++;
        }
        public Class1()
        {
            count++;
        }
    }
Class1 o1 = new Class1();
Class1 o2 = new Class1();

静态构造函数是一种特殊的函数,它不能被显式调用,而是在第一次使用类的静态成员或创建类的实例时自动调用。
上面代码,静态构造函数被调用一次,然后构造函数被调用两次,所以答案是3

26.Math.Round(11.5)等於多少? Math.Round(-11.5)等於多少?

Math.Round(11.5)=12

Math.Round(-11.5)=-12

27.&和&&的区别

1.逻辑运算:&和&&都可作逻辑与的运算
&&具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式
&会计算二个表达式
2.位运算
&可以用作位运算,返回结果是int类型

28.i++和++i的区别

i++++i 都是自增运算符,它们都可以将变量的值加 1
++i是先给i加1之后将i+1的结果返回
i++是将i的结果返回后,再给i加1

29.as和is的区别

as在转换的同时判断兼容性,如果无法进行转换,返回位null(没有产生新的对象),as转换是否成功判断的依据是是否位null
is只是做类型兼容性判断,并不执行真正的类型转换,返回true或false,对象为null也会返回false。

此条目发表在C#基础分类目录。将固定链接加入收藏夹。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注