EventArgs e ) { if( e.Button.Equals( BtnNew ) ) { //请在以下补齐代码用来调用OnDBOperate委托签名的OnNew事件。 } } } } 答案: if( OnNew != null ) OnNew(); 注意:此处注意审题,public delegate void OnDBOperate();是没有参数的,所以要写OnNew()。网上有的答案是:OnNew( this, e );。这个是错误的,一定要注意OnDBOperate()是否带参数。 [.NET(C#)] 根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁 并简要说明理由。 public void test( int i ) { lock( this ) { if( i > 10 ) { i–; test( i ); } } } 答案:不会死锁。 [.NET(C#)] 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对 答:不对,有相同的hash code。 [.NET(C#)] 给定以下XML文件,完成算法流程图 请画出遍历所有文件名(FileName)的流程图(请使用递归算法)。 public void DomDepthFirst( XmlNode currentNode ) { XmlNode node = currentNode.FirstChild; while( node != null ) { if( node.Name == “File” ) { Console.Write( ( ( XmlElement )node ). GetAttribute( “FileName” ) + “/r/n” ); } DomDepthFirst( node ); node = node.NextSibling; } } [.NET(C#)] swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上 答案:可以作用在byte和long上,也可以作用在string上。 [.NET(C#)] 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法 答案:不能,一个对象的一个synchronized方法只能由一个线程访问。 [.NET(C#)] short s1 = 1; s1 = s1 + 1;有什么错?short s1 = 1; s1 += 1;有什么错? 答: 1. short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能隐式转化为short型。可修改为s1 =(short)(s1 + 1) 。 2. short s1 = 1; s1 += 1正确。 [.NET(C#)] 问题1:产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。 答案: int[] intArr = new int[100]; ArrayList myList = new ArrayList(); Random rnd = new Random(); while( myList.Count < 100 ) { int num = rnd.Next( 1, 101 ); if( !myList.Contains( num ) ) { myList.Add( num ); } } for( int i = 0; i < 100; i++ ) { intArr[i] = ( int )myList[i]; } 问题2:对上面生成的数组排序,需要支持升序、降序两种顺序。 答案:ArrayList.Sort()方法可以实现排序。 [.NET(C#)] 需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话,仅保留一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一个。 答案: string inputStr = ” xx xx “; inputStr = Regex.Replace( inputStr.Trim(), @”/s+”, ” ” ); [.NET(C#)] 下面这段代码输出什么?为什么? int i = 5; int j = 5; if( Object.ReferenceEquals( i, j ) ) Console.WriteLine( “Equal” ); else Console.WriteLine( “Not Equal” ); 答案:Not Equal。因为比较的是对象 [.NET(C#)] public static const int A=1;这段代码有错误么?是什么? 答:const不能用static修饰。 [.NET(C#)] float f = -123.567F; int i = ( int )f; i 的值现在是_____ 答:-123。 [.NET(C#)] 下面的代码中有什么错误吗? class A { public virtual void F() { Console.WriteLine( “A.F” ); } } abstract class B : A { public abstract override void F();//abstract与override关键字可以同时使用 } 答案:没有错误!可以通过编译器。 注意:网上有资料说abstract与override关键字不可以同时使用,这种说法是错误的! [.NET(C#)] 下面这段代码有错误么? switch( i ) { case (): //答:case()条件不能为空。 CaseZero(); break; case 1: CaseOne(); break; case 2: dufault; //答:格式不正确。正确写法 default: CaseTwo(); break; } [.NET(C#)] 在.net(C# or vb.net)中如何取消一个窗体的关闭。 答案:在VS2005下 private void Form1_FormClosing( object sender, FormClosingEventArgs e ) { e.Cancel = false; } 注意:有的写答案写“private void Form1_Closing”事件,如果在VS2005下,这个答案是错误的,VS2005没有这个事件。 [.NET(C#)] 在.net(C# or vb.net)中如何用户自定义消息,并在窗体中处理这些消息。 答案: private const int WM_Lbutton = 0x001C; protected override void WndProc( ref Message m ) { switch( m.Msg ) { case WM_Lbutton: string message = string.Format( “收到消息!参数为:{0},{1}”, m.WParam, m.LParam ); MessageBox.Show( message ); break; } base.WndProc( ref m ); } [.NET(C#)] 在C#中有一个double型的变量,比如10321.5,比如122235401.21644,作为货币的值如何按各个不同国家的习惯来输出。比如美国用$10,321.50和$122,235,401.22而在英国则为£10 321.50和£122 235 401.22 答案: System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo( “en-US” );//美国 System.Globalization.CultureInfo MyCulture = new System.Globalization.CultureInfo( “en-GB” ); //英国 decimal y = 999999999999999999999 |