云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 刚毕业1年2年3年工作经验都可用的C#面试题及答案(设计模式在后面)

刚毕业1年2年3年工作经验都可用的C#面试题及答案(设计模式在后面)

  • 62 次阅读
  • 3 次下载
  • 2025/6/16 21:28:14

C#面试题(设计模式在后面)

2. const和readonly有什么区别?

答:const可以用于类的成员常量和局部常量,必须在声明时赋值,之后不可以对常量进行赋值。而readonly只能用于类的成员变量不能用于局部变量,在声明时可以不赋值,除了在构造函数中可以再次赋值外,其它的地方和const一样也不能赋值。 5. 接口和抽象类有什么区别?你选择使用接口和抽象类的依据是什么?答 答:区别如下

(1) 抽象类可以有抽象成员(无具体实现),也可以有非抽象成员(有具体实现);接口只有抽象成员。

(2) 一个类不能同时继承多个抽象类,一个类可以同时实现多个接口。

如果多个子类中有很多代码是重复的,这时采用抽象类,因为可以将这些代码放到抽象类的非抽象方法中,这样可以达到代码复用。当实现多个接口时因为抽象类不支持,只能使用接口。

6. struct和class有什么区别

答:两者都可以有成员变量、属性、索引器、事件、函数、构造函数,主要区别如下: 区别点 结构 类 类型 值类型 引用类型

成员变量 在声明时不能赋值 可以赋值也可以不赋值

构造函数 可以不写,系统提供默认构造函数,默认构造函数中会将所有成员值设为0,如果写了构造函数则构造函数必须有参数,且在构造函数中必须为每一个成员赋值。 可以不写,系统提供默认构造函数,写了也没有结构中的限制。 析构函数 不能有析构函数 可以有析构函数

继承性 自定义的结构不能从类继承,但可以实现接口,结构都是密封(sealed),不能从结构继承 类没有限制

7. try后面一个finally,try中有一个return,那么finally中的代码会不会运行?如果运行,是在return后还是return前。 答:会运行,并且在return 后运行。

8. 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。 答:该题解题思路有很多,主要是看运行效率如何,下面提供一种方法。 int[] array = new int[100]; int temp[] = new int[100]; for (int i = 0; i < 100; i++) {

temp[i]=i+1; }

页脚

Random rand = new Random(); for (int i = 0; i < 100; i++) {

int index = rand.Next(100-i-1); array[i] = temp[index]; temp[index]=temp[100-i-1]; }

9. C#中要使一个类支持foreach遍历,实现过程怎样? 答:必须实现IEnumerable,IEnumerator这两个接口,如下: public class MyList : IEnumerable,IEnumerator {

private int position = -1; string[] array = new string[4]; public MyList() {

array[0] = \array[1] = \array[2] = \array[3] = \}

#region IEnumerable 成员

//每次使用foreach时都会调用它得到一个枚举器 public IEnumerator GetEnumerator() { Reset();

return (this as IEnumerator); }

#endregion

#region IEnumerator 成员 //遍历时通过这个属性得到值 public object Current {

get { return array[position]; } }

//访问下一个元素时使用MoveNext移动位置

页脚

public bool MoveNext() {

if (position < array.Length-1) {

position++; return true; } else

return false; }

//遍历前要使位置归位 public void Reset() {

position = -1; }

#endregion }

以下不用foreach遍历集合 MyList list=new MyList(); While(list.MoveNext()) {

Object o=list.Current; }

10. 以下程序有什么错? public class TestClass {

private int count; private static int y;

public static void setvalue () { count=1; y=1; } }

答:在静态函数中只能访问静态成员变量;以上代码访问了实例成员。

页脚

11. net中什么类不能被继承?

答:如果在类前加上sealed关键字,则表示该类为密封类,密封类不能被继承。 sealed 除了可以应用于类外,还可以应用于实例方法和属性。密封方法会重写基类中的方法,但其本身不能在任何派生类中进一步重写。当应用于方法或属性时,sealed 修饰符必须始终与override一起使用。如:

//下面这个sealed使用正确,表示该类不能继承 public sealed class Test {

private int myVar;

//下面这个sealed错误,编译不会通过,因为sealed必须和override一起使用 public sealed int MyProperty {

get { return myVar; } set { myVar = value; } }

//下面这个sealed使用正确,表示如果该类不是密封类, //那么在派生类中也不可以重写该方法 public sealed override string ToString() {

return base.ToString(); } }

12. is 和as 有什么区别?

答:is用来判断一个实例是否属于某个类。如: Dog d=new Dog(); If(d is Dog) {

Console.WriteLine(“d是一只狗”); }

以上语句Console.WriteLine(“d是一只狗”);会运行,因为d is Dog返回true,如果Dog从Animal类继承并实现了IPet接口,则d is Animal和d is IPet都会返回true; as用于在兼容的引用类型之间执行转换,如果转换失败则返回null,它等价于如下语句: expression is type ? (type)expression : (type)null 13. net中函数传递参数有那些方式?有什么区别?

页脚

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

C#面试题(设计模式在后面) 2. const和readonly有什么区别? 答:const可以用于类的成员常量和局部常量,必须在声明时赋值,之后不可以对常量进行赋值。而readonly只能用于类的成员变量不能用于局部变量,在声明时可以不赋值,除了在构造函数中可以再次赋值外,其它的地方和const一样也不能赋值。 5. 接口和抽象类有什么区别?你选择使用接口和抽象类的依据是什么?答 答:区别如下 (1) 抽象类可以有抽象成员(无具体实现),也可以有非抽象成员(有具体实现);接口只有抽象成员。 (2) 一个类不能同时继承多个抽象类,一个类可以同时实现多个接口。 如果多个子类中有很多代码是重复的,这时采用

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com