Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我们可以在VB中调用没有共享关键字的sub函数_C#_Vb.net - Fatal编程技术网

C# 为什么我们可以在VB中调用没有共享关键字的sub函数

C# 为什么我们可以在VB中调用没有共享关键字的sub函数,c#,vb.net,C#,Vb.net,我有两张表格 表格1: Public Class Form1 Public Sub MySub() End Sub End Class 表格2: Public Class Form2 Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load Form1.MySub()//why?? End Sub End Class 为什么我可以用VB编写Form1.MyS

我有两张表格

表格1:

 Public Class Form1
     Public Sub MySub()
     End Sub
 End Class
表格2:

Public Class Form2
 Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Form1.MySub()//why??
End Sub
End Class

为什么我可以用VB编写Form1.MySub(),但C不

VB.Net编译器为某些事情提供了一个解决方案。C#没有


在VB.Net中这样做至少部分是为了与旧的VB6时代代码兼容,而至少部分不是在C中这样做,因为C不允许类型和变量之间的命名冲突。

在C中不允许是什么意思?你能举个例子吗?只要它是公共函数,就可以在类外部调用。Form1是类型名,而不是对象引用。VB的默认实例功能是为了帮助程序员迁移到.NET。对于程序员来说,这是一个相当严重的问题,用这种方式学习面向对象编程非常困难。也会导致许多线程问题。OOP是您需要学习的,在C#中没有捷径。@PratikGaikwad:您需要一个实例来调用实例方法-正如Hans提到的,VB创建了一个名为与表单相同的默认表单实例。这是VB最糟糕的“功能”之一——它确实会鼓励人们缺乏理解。@DaveDoknjas,是的,明白了。