VB.NET:创建一个 window application,然后添加语句
Public Class Form1
Public Sub SayHello()
End Sub
End Class
Public Class Test
Public Sub TestSayHello()
Form1.SayHello()
End Sub
End Class
C#:创建一个windows application,然后添加语句
namespace WindowsFormsApplicationCS {
public partial class Form1 : System.Windows.Forms.Form {
public Form1( ) {
InitializeComponent( );
}
public void SayHello( ) {
}
}
public class Test {
public void TestSayHello( ) {
Form1.SayHello( );
}
}
}
分别编译VB和C#的工程,发现VB可以通过,而C#报错。
根据我对面向对象的理解:C#报错是对的,而为什么VB没有报错?百思不得其解?
我的理解,Form1类的SayHello方法是一个公有方法,但不是一个静态的方法。也就是说只有Form1类的实例化对象才能够调用这个方法,为什么VB中的Test类的TestSayHello方法可以用Form1类来调用SayHello方法呢?应为我对VB不是很了解,所以一直没有弄明白是什么原因?
同样的VB和C#代码,什么会有两种编译结果呢?
这个要说到VB6.0了, vb6是给予对象的,vb6中创建一个窗体类Form1,
vb6默认实例化对象,也就是Form1中的公开方法可以直接调用而不需要创建新对象,
VB.NET 可以讲是vb6的升级板,为了兼容,或者说是满足老vb6程序员保留了这个特性
C#是完全面向对象的,可以说是微软的新语言,结合vb和C++的优点,也抛弃一些不好的东西
。。。
VB基于对象,比如form就是类,而form1就是对象
但vb并不完全面向对象,不能称为完全的oo,比较重要的就是不支持继承性,而在vb。net中已经可以称为完全的oo了
VB.net也是报错的.
对非共享成员的引用必须对象引用.