首页 > Linux操作系统 > Linux操作系统 > C#经典面试题及答案
//事件类
public class EventClass
{
public void display(object sender, System.EventArgs e)
{
Console.WriteLine("This is the Event Class");
Console.ReadLine();
}
}
//调用类
class InvokeClass
{
//声明代理对象,注意参数
public delegate void delegateobj(object sender, System.EventArgs e);
//声明事件对象
private event delegateobj obj;
//声明要调用的事件类对象
private EventClass ec;
public InvokeClass()
{
ec = new EventClass();
//添加事件对象到事件队列中,参数为要调用的事件
this.obj += new delegateobj(ec.display);
}
//调用delegate对象触发事件
protected void OnObj(System.EventArgs e)
{
if (this.obj != null)
{
obj(this, e);
}
}
public void RaiseEvent()
{
EventArgs e = new EventArgs();
OnObj(e);
}
static void Main(string[] args)
{
InvokeClass ic = new InvokeClass();
Console.WriteLine("Please input a string");
string input = Console.ReadLine();
if (input.Equals(""))
{
Console.WriteLine("Sorry,you don't input anything");
}
else
{
//触发事件
ic.RaiseEvent();
}
}
}
for (int j = 0; j < this.Controls.Count; j++)
{
foreach (object o in Page.Controls[j].Controls)
{
if (o is TextBox)
{
TextBox txt = (System.Web.UI.WebControls.TextBox)o;
txt.Text = "A";
}
}
}
/**////
/// /冒泡排序
///
private void BubbleSort()
{
//冒泡排序
int[] list = new int[5]
{ 111, 12, 223, 854, -5655 };//初始化数组
int i, j, temp;
for (j = 1; j < list.Length; j++)
{
for (i = 0; i < list.Length - j; i++)
{
if (list[i] > list[i + 1])
{
temp = list[i];
list[i] = list[i + 1];
list[i + 1] = temp;
}
}
}

}
/**////
/// 选择排序
///
private void SelectSort()
{
//选择排序
int[] a = new int[5]
{ 111, 12, 223, 854, -5655 };//初始化数组
int min, min_k;//定义最小数,和最小数的下标
for (int i = 0; i < 5; i++)
{
min = a[i];//将当前循环的数设置成最小数
min_k = i;
for (int j = i + 1; j < 5; j++)
{
if (a[j] < min)
{
min = a[j];
min_k = j;
int tem = a[min_k];
a[min_k] = a[i];
a[i] = tem;

}

}

}
} 对于结构和类,初看上去都一样。都可以有自己的字段,属性,方法,还能有构造函数。但是这两者其实有很大的不同,而且各自有各自的应用范围。下面还是谈谈两者的分别吧。
<1> 结构的特点和性能优势
结构是值类型,继承自System.ValueType。结构相对于类来说有两个性能上的优势,结构通常分配在栈(Stack)上面,类的实际内容通常分配在堆(Heap)上面,访问栈的速度会比访问堆的速度更快。但是这并不是一个明显的优势。最主要的是栈上面的内容释放是非常快的,通常在函数调用结束以后,栈就自动释放了;但是对于堆来说,必须等待垃圾收集器(Garbage Collector)来收集,往往垃圾收集器的工作都有滞后特性,所以我们不一定当时就能注意到性能的变化,但是这种影响终究会体现出来。
<2> 结构的弱点
(1)作为参数传递的时候效率低
(2)装箱(Boxing)和解箱(Unboxing)效率低
<3> 何时使用结构,何时使用类?
在下面的情况下使用类
1 内容很多的时候,因为结构总是暗地里拷贝了一个临时变量。
2 需要非常多内存的时候,因为栈的容量有限,而堆通常是足够使用的。
3 需要在声明字段的时候进行初始化。
4 需要从基类继承。
5 需要多态性。接口也可以用来实现多态性,但是因为结构是值类型,尽管它可以从接口继承,但是在多态过程中会进行装箱和解箱的操作。
xml version="1.0" encoding="utf-8"?>
<MovieBlacklist>
<Blacklist id="17050" part="32" name="江湖俏佳人" age="20" />
<Blacklist id="17310" part="1" name="阴谋" />
<Blacklist id="17316" part="1" name="WWE摔角080314" />
<Blacklist id="17190" part="1" name="2012世界末日" />
MovieBlacklist>
/**////
/// 给已知结点增加一个属性
///
///
///
public void XMLAddAttributes(string XmlPathNode,string sName, string sContent)
{
// 创建节点
XmlNode attrCount = objXmlDoc.CreateNode(XmlNodeType.Attribute, sName , null);
attrCount.Value = sContent ;
// 添加节点属性
objXmlDoc.SelectSingleNode(XmlPathNode).Attributes.SetNamedItem(attrCount);
}
class Program
{
static void Main(string[] args)
{
B _b = new B();
Console.ReadKey();
}
}
class A
{
public A()
{
PrintFields();
}
public virtual void PrintFields()
{ }
}
class B : A
{
int x = 1;
int y;
public B()
{
y = -1;
}
public override void PrintFields()
{
Console.WriteLine("x={0},y={1}", x, y);
}
}
public abstract class A
{
public A()
{
Console.WriteLine('A');
}
public virtual void Fun() 
{
Console.WriteLine("A.Fun()");
}
}
public class B : A
{
public B()
{
Console.WriteLine('B');
}
public new void Fun() 
{
Console.WriteLine("B.Fun()");
}
public static void Main()
{
A a = new B();
a.Fun();
Console.ReadKey();
}
}
public class A
{
public virtual void Fun1(int i)
{
Console.WriteLine(i);
}
public void Fun2(A a)
{
a.Fun1(1);
Fun1(5);
}
}

public class B : A
{
public override void Fun1(int i)
{
base.Fun1(i + 1);
}
public static void Main()
{
B b = new B();
A a = new A();
a.Fun2(b);
b.Fun2(a);
Console.ReadKey();
}
} 6
12:写一个HTML页面,实现以下功能,左键点击页面时显示“您好”,右键点击时显示“禁止右键”。并在2分钟后自动关闭页面。
答: