rss· 投稿· 设为首页· 加入收藏· 繁體版
当前位置: 火魔网 » 程序开发 » VB.NET

(一)NET


变量A、B如何不通过第三变量来交换(C#实现)? using System; class MainClass { static void Main(string[] args) { int A = 5, B = 7; Console.WriteLine(“交换前:A=” + A + ” B=” + B); A = A + B; B = A C B; A = A C B; Console.WriteLine(“交换后:A=” + A + ” B=” + B); Console.ReadLine(); } } 结果: 交换前:A=5 B=7 交换后:A=7 B=5 请编程遍历页面上所有TextBox控件并给它赋值为string.Empty? using System.Windows.Forms; //部分代码略 foreach (Control c in this.Controls) { if (c is TextBox) { TextBox tb = (TextBox)c; tb.Text = “aaa”; } } 公司要求开发一个继承System.Windows.Forms.ListView类的组件,要求达到以下的特殊功能:点击ListView各列列头时,能按照点击列的每行值进行重排视图中的所有行 (排序的方式如DataGrid相似)。根据您的知识,请简要谈一下您的思路 根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中。 给定以下XML文件,完成算法流程图。 请画出遍历所有文件名(FileName)的流程图(请使用递归算法)。下面只是个算法思路,不是代码 void FindFile( Directory d ) { FileOrFolders = d.GetFileOrFolders(); foreach( FileOrFolder fof in FileOrFolders ) { if( fof is File ) You Found a file; else if ( fof is Directory ) FindFile( fof ); } } 根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。 public void test(int i) { lock (this) { if (i > 10) { iC; test(i); } } } 不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。但如果把int换做一个object,那么死锁会发生) 根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写: namespace test { public delegate void OnDBOperate(); public class UserControlBase : System.Windows.Forms.UserControl { public event OnDBOperate OnNew; private void toolBar_ButtonClick(object sender, System.Windows.Forms. ToolBarButtonClickEventArgs e) { if (e.Button.Equals(BtnNew)) { //请在以下补齐代码用来调用OnDBOperate委托签名的OnNew事件。 } } } } 答:if( OnNew != null ) OnNew( this, e ); 分析以下代码,计算运行结果 string strTmp = “abcdefg某某某”; int i= System.Text.Encoding.Default.GetBytes(strTmp).Length; int j= strTmp.Length; 以上代码执行完后i=13,j=10 分析以下代码,计算运行结果 using System; 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); } } 当使用new B()创建B的实例时,产生什么输出? X=1,Y=0,new B()时,首先运行父类的构造方法,构造方法里运行PrintFields()方法,此方法被B类重新,按B类的方法来运行。 求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m using System; class MainClass { static void Main(string[] args) { Console.WriteLine(“请输入数字:”); int Num = int.Parse(Console.ReadLine().ToString()); int Sum = 0; for (int i = 0; i < Num + 1; i++) { if ((i % 2) == 1) { Sum += i; } else { Sum -= i; } } System.Console.WriteLine(Sum.ToString()); System.Console.ReadLine(); } } 结果: 请输入数字: 5 3 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。 using System; using System.Collections; class MainClass { static void Main(string[] args) { int[] intArr = new int[100]; ArrayList myList = new ArrayList(); Random rd = new Random(); int x = 0; while (myList.Count < 100) { x++; int num = rd.Next(1, 101); if (!myList.Contains(num)) { myList.Add(num); } } for (int i = 0; i < 100; i++) { intArr[i] = (int)myList[i]; Console.Write(intArr[i] + " "); } Console.WriteLine(); } } 13 11 2 52 74 7 56 42 69 20 58 84 15 19 87 78 53 36 5 16 34 54 82 22 55 76 61 79 23 8 98 71 44 45 41 26 100 83 86 65 10 1 60 30 81 46 50 43 17 48 62 91 64 35 72 21 6 75 14 9 92 12 96 49 80 33 37 39 93 18 88 63 38 70 28 27 40 95 3 24 97 25 8 5 29 66 68 73 31 59 90 4 57 99 94 89 51 67 77 47 32 请按任意键继续. . . 程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。 要求:1.要有联动性,老鼠和主人的行为是被动的。 2.考虑可扩展性,猫的叫声可能引起其他联动效应。 using System; public sealed class Cat { //猫叫时引发的事件 public event EventHandler Calling; public void Call() { Console.WriteLine("猫叫了..."); if (Calling != null) //检查是否有事件注册 Calling(this, EventArgs.Empty); //调用事件注册的方法. } } //老鼠,提供一个方法表示逃跑 public sealed class Mouse { public void Escape(object sender, EventArgs e) { Console.WriteLine("老鼠逃跑了..."); } } //主人,发生猫叫的时候惊醒 public sealed class Master { public void Wakened(object sender, EventArgs e) { Console.WriteLine("主人惊醒了..."); } } //用于测试的执行方法 //程序入口点 public class Program { public static void Main(string[] args) { //建立猫 Cat cat = new Cat(); //建立老鼠 Mouse mouse = new Mouse(); //建立主人 Master master = new Master(); //注册事件 cat.Calling += new EventHandler(mouse.Escape); cat.Calling += new EventHandler(master.Wakened); //猫开始叫 cat.Call(); } } 结果: 猫叫了... 老鼠逃跑了... 主人惊醒了... 请按任意键继续. . . 以下采用观察者模式 //要点:1. 联动效果,运行代码只要执行Cat.Cryed()方法.2. 对老鼠和主人进行抽象 //评分标准: <1>.构造出Cat、Mouse、Master三个类,并能使程序运行(2分) //<2>从Mouse和Master中提取抽象(5分) //<3>联动效应,只要执行Cat.Cryed()就可以使老鼠逃跑,主人惊醒.(3分) using System; using System.Collections; public interface Observer { //观察者的响应,如是老鼠见到猫的反映 void Response(); } public interface Subject { //针对哪些观察者,这里指猫的要扑捉的对象―老鼠 void AimAt(Observer obs); } public class Mouse : Observer { private string name; public Mouse(string name, Subject subj) { this.name = name; subj.AimAt(this); } public void Response() { Console.WriteLine(name + ” attempt to escape!”); } } public class Master : Observer { public Master(Subject subj) { subj.AimAt(this); } public void Response() { Console.WriteLine(“Host waken!”); } } public class Cat : Subject { private ArrayList observers; public Cat() { this.observers = new ArrayList(); } public void AimAt(Observer obs) { this.observers.Add(obs); } public void Cry() { Console.WriteLine(“Cat cryed!”); foreach (Observer obs in this.observers) { obs.Response(); } } } class MainClass { static void Main(string[] args) { Cat cat = new Cat(); Mouse mouse1 = new Mouse(“mouse1″, cat); Mouse mouse2 = new Mouse(“mouse2″, cat); Master master = new Master(cat); cat.Cry(); } } Cat cryed! mouse1 attempt to escape! mouse2 attempt to escape! Host waken! 请按任意键继续. . . 写出程序的输出结果 using System; class Program { private string str = “Class1.str”; private int i = 0; static void StringConvert(string str) { str = “A string being converted.”; } static void StringConvert(Program c) { c.str = “B string being converted.”; } static void Add(int i) { i++; } static void AddWithRef(ref int i) { i++; } static void Main() { int i1 = 10; int i2 = 20; string str = “str”; Program c = new Program(); Add(i1); AddWithRef(ref i2); Add(c.i); StringConvert(str); //string无法被改变 StringConvert(c); //传递对象string可以被改变 Console.WriteLine(i1); Console.WriteLine(i2); Console.WriteLine(c.i); Console.WriteLine(str); Console.WriteLine(c.str); } } 运行结果: 10 21 0 str B string being converted. 请按任意键继续. . . 写出程序的输出结果 using System; 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(); } } 运行结果: A B A.Fun() 请按任意键继续. . . 有继承关系,在构造子类的时候会先构造父类;Fun函数在子类是被new了一下,只是显示隐藏,并没有重写,所以输出还是A.Fun()。如果子类是被override,则最后输出B.Fun 写出程序的输出结果 using System; public class A { public virtual void Fun1(int i) { Console.WriteLine(i); } public void Fun2(A a) { a.Fun1(1); //以传递进来的对象选择哪个Fun1 Fun1(5); //以调用此方法的对象选择哪个Fun1 } } 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); } } 输出结果: 2 5 1 6 请按任意键继续. . . 冒泡排序 using System; public class MainClass { public static void ArraySort() { int[] Arr = { 9, 8, 7, 6, 5, 4, 3, 2, 1 }; int t = 0; //从小到大排序 for (int i = 0; i < Arr.Length - 1; i++) //总共需要N-1趟 { for (int j = 0; j < Arr.Length - 1 - i; j++) //每趟总共需要(N-1-趟数)次比较 { if (Arr[j] > Arr[j + 1]) { t = Arr[j]; Arr[j] = Arr[j + 1]; Arr[j + 1] = t; } } } foreach (int i in Arr) { Console.Write(i + “,”); } } public static void Main() { ArraySort(); } } 输出:1,2,3,4,5,6,7,8,9,请按任意键继续. . . 写出程序的输出结果 using System; class A { public static int X; static A() { X = B.Y + 1; } } class B { public static int Y = A.X + 1; static B() { } static void Main() { Console.WriteLine(“X={0},Y={1}”, A.X, B.Y); } } 输出结果: X=1,Y=2 请按任意键继续. . . 在.net(C# or vb.net)中如何用户自定义消息,并在窗体中处理这些消息。 在form中重载DefWndProc函数来处理消息: protected override void DefWndProc(ref System.WinForms.Message m) { switch (m.msg) { case WM_Lbutton: ///string与MFC中的CString的Format函数的使用方法有所不同 string message = string.Format(“收到消息!参数为:{0},{1}”, m.wParam, m.lParam); MessageBox.Show(message);///显示一个消息框 break; case USER: //处理的代码 default: base.DefWndProc(ref m);///调用基类函数处理非自定义消息。 break; } } 请说明如下代码的结果 using System; class Father { public virtual void show() { Console.WriteLine(“Father”); } static void Main(string[] args) { Father obj = new Child(); obj.show(); } } class Child : Father { public override void show() { Console.WriteLine(“Child”); } } 输出: Child 请按任意键继续. . . 如果把virtual和override去掉,输出结果为Father
顶一下
(0)
踩一下
(0)