RSS 2.0 Feed
2004-05 Entries
摘要:今天试用VS2005 CTP May 2004的时候不小心将鼠标放到了一个按钮单击事件处理程序的“EventArgs e”参数上,竟然弹出了这样的提示: T : System.EventArgs, …… 这说明,包括按钮单击在内的事件处理过程,已经换用了新的EventHandler<T>: [VB]Delegate Sub EventHandler(Of T As EventArgs)( _    ByVal sender As Object, ByVal e As T)[C#]delegate void EventHandler<T>(object sender, T e)    where T : System.EventArgs; 还没有反编译其它的组件,不知道是否整个.NET Framework 2.0的内部已经用泛型组件重写了。...[阅读全文]

posted @ | Feedback (7) | Filed Under [ 技术随笔 ]

摘要:本来想出第二个Visual Basic Quiz,结果问题出来以后自己也不会做,真是faint了。 在C#中,ref型的参数总是需要加“ref”来传递,因此,函数的两个重载版本可以仅通过ref或没有ref的不同来区分。比如有如下两个函数的重载版本: public void Test(int x){    Console.WriteLine("By Value");}public void Test(ref int x){    Console.WriteLine("By Reference");} 在C#中调用可以通过Test(i)或Test(ref i)这样的语法来区分。但是在Visual Basic中,ByRef和ByVal是不用(也不允许)在传递参数的时候指定的,那么问题就是:如果C#写了这样的函数放在Dll里,在Visual Basic中应该如何调用正确的版本呢? 我进行了很多实验,比如用后期绑定啦、VBBinder搜索合适匹配重载项啦……都无济于事,在VB中无法调用这两个重载版本中的任意一个。于是Quiz就变成Problem了,怎么才能解决它呢?...[阅读全文]

posted @ | Feedback (5) | Filed Under [ 技术随笔 ]

摘要:Eric Gunnerson等人发布了一个新版本的C# 2.0 Language Specification,该文档对C#语言规范的最新变化进行了详细解释。这个版本除了对泛型、迭代器、匿名方法和不完全类型的内容进行了更新以外,还介绍了一个新的特征——可空类型(nullable type)。 我大概看了一下可空类型,是这样的语法: int? i = new int?(3);i = null; //以前这种值类型不能为空i = 2;    //可空类型与原有值类型可以相互转换 在VS2005 CTP版本中的C#已经支持这个特征,我还发现这种语法实际上就是自动生成Nullable<T>,比如上面那行声明语句就相当于: Nullable<int> i = new Nullable<int>(3); 其他的内容还没有仔细看。...[阅读全文]

posted @ | Feedback (9) | Filed Under [ 技术随笔 ]

摘要:几乎所有人编写的Windows Forms程序都是直接采用Visual Studio的窗体设计器继承一个窗体,再加以设计。虽然可视化很方便而且广为使用,但是在项目中添加一大堆窗体类真的有必要吗?有些窗体很简单而且只使用一次,也需要为此创建一个新的类型吗? 不知道有没有人像这样写窗体:不继承Form类,而是修饰Form类,直接在Form类的实例上添加控件,然后显示。如下面这个例子(稍微用了一下C#2.0的语法): Form f1 = new Form();f1.Size = new Size(400, 300);f1.Location = new Point(200, 200);f1.Text = "New Decorated Form"; Button b1 = new Button();b1.Text = "&Say Hello";b1.Size = new Size(100, 30);b1.Location = new Point(60, 50);b1.Click += delegate{    MessageBox.Show("Hello, World");}; f1.Controls.Add(b1);f1.Show(); 将这段代码放到Main里面就能生成一个完整的应用程序,不但按钮的事件可以通过这种方式响应,Form的事件,如Load或Paint也可以这样使用。 我觉得修饰From的方法在有些简单应用里比继承Form的方法更好,它不会产生新的类型,还可以在当前类型中处理新窗体的控件和事件,这给窗体间的数据交换带来了很大方便。...[阅读全文]

posted @ | Feedback (10) | Filed Under [ 灵感记录 ]

摘要:看下面的类: Public Class Class1    Public Sub Test(ByVal a As Object)        MsgBox("Object")    End Sub     Public Sub Test(ByVal b As Integer)        MsgBox("Integer")    End Sub     Public Sub Test(ByVal c As ValueType)        MsgBox("ValueType")    End SubEnd Class 现在Quiz来了,如果我书写下面的代码: Dim c As Object = New Class1Dim v As Object = 3I c.Test(v) 运行结果是什么?如果第二句等号右边分别写成3S、3L、True、Nothing和“a“结果是什么? 如果我将第一句改成 Dim c As New Class1() 那么上面的问题的结果分别又是什么?...[阅读全文]

posted @ | Feedback (8) | Filed Under [ 技术随笔 ]

摘要:最近升级一些我以前写的VB6小工程,发现最大的阻碍之一是VB6的图形方法,如PSet、Circle、Line、CurrentX等方法和属性。他们根本无法自动升级,而以前的处理方法换用VB.NET的GDI+方法非常费时(要不然就不会不给自动升级了)。我想所有用过升级向导的人都会头疼图形方法的升级,因为原来VB的图形方法实在是很方便,许多效果简简单单就能画出来了。所以,我从现在起将计划一个让VB.NET尽量兼容VB6图形方法的项目,让所有图形方法都能用最接近的语法表示,这样就能帮助那些多少使用了图形的人更容易的实施升级。 首先将实现基于窗体的图形方法,以后计划实现基于PictureBox和Printer的图形方法。...[阅读全文]

posted @ | Feedback (2) | Filed Under [ 闲话集锦 ]

摘要:BASIC是1964年5月1日诞生在这个世界上的,今天就是她40岁生日。让我们一起祝她生日快乐。看看这片纪念BASIC生日的文章。同时祝大家五一节快乐!...[阅读全文]

posted @ | Feedback (6) | Filed Under [ 闲话集锦 ]