首页 新闻 搜索 专区 学院

一个百思不得其解的问题?VB中的面向对象问题?

0
悬赏园豆:50 [已解决问题] 解决于 2008-10-02 07:17

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#代码,什么会有两种编译结果呢?

问题补充: 都过了5个小时了,怎么还没有人解答我的问题,是不是我没有把问题说清楚呢?还是悬赏分少了,那我就再加到20分。如果是没有说清楚,也回个信息啊,那个地方没说清楚的,我再补充以下啊!
沈啣结的主页 沈啣结 | 初学一级 | 园豆:0
提问于:2008-09-22 11:33
< >
分享
最佳答案
0

这个要说到VB6.0了, vb6是给予对象的,vb6中创建一个窗体类Form1,

vb6默认实例化对象,也就是Form1中的公开方法可以直接调用而不需要创建新对象,

VB.NET 可以讲是vb6的升级板,为了兼容,或者说是满足老vb6程序员保留了这个特性

C#是完全面向对象的,可以说是微软的新语言,结合vb和C++的优点,也抛弃一些不好的东西

。。。

法天贵真 | 小虾三级 |园豆:645 | 2008-09-23 15:28
其他回答(2)
0

VB基于对象,比如form就是类,而form1就是对象  
  但vb并不完全面向对象,不能称为完全的oo,比较重要的就是不支持继承性,而在vb。net中已经可以称为完全的oo了

吴畏 | 园豆:426 (菜鸟二级) | 2008-09-23 11:49
0

VB.net也是报错的.

对非共享成员的引用必须对象引用.

blue th | 园豆:110 (初学一级) | 2008-09-23 15:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册