现在的位置: 首页 > 综合 > 正文

Overloading ,vb.net vs C#

2012年12月12日 ⁄ 综合 ⁄ 共 1849字 ⁄ 字号 评论关闭
vb.net 的实现和C# 的实现有很多方面都不一样,今天就拿 Overload 来做个对比。

大家可能都对 C# 比较熟悉,我列出一下一段代码:

namespace OverloaddingCS

{

    
public class Test

    
{

        
public static void  Main()

        
{

            Derived d
=new Derived();

                d.WriteLine(
10);

                d.WriteLine(
"11");

                d.WriteLine(
10.5);

        }


    }



    
class Base

    
{

        
public void WriteLine(String AnyString)

        
{

            Console.WriteLine(AnyString 
+ " called Base:String") ;

        }



        
public void WriteLine(int AnyInteger)

        
{

            Console.WriteLine(AnyInteger.ToString() 
+ " called Base:Integer");

        }


    }



    
class Derived :  Base

    
{

        
public void WriteLine(double AnyDouble)

        
{

            Console.WriteLine(AnyDouble.ToString() 
+ " called Derived:double");

        }


    }


}

答案很简单,如果你对c++ 比较熟悉的话

10 called Derived:double

11 called Base:String

10.5 called Derived:double

如果我把类似的代码翻译成 vb.net ,注意是原本的翻译

Class Test

    
Public Shared Sub Main()

        
Dim objMyTest As New Derived

        
With objMyTest

            .
WriteLine(10)

            .
WriteLine("11")

            .
WriteLine(10.5)

        
End With

        Console.ReadLine()

    
End Sub


End Class


Class Base

    
Public Sub WriteLine(ByVal AnyString As String)

        Console.
WriteLine(AnyString + " called Base:String")

    
End Sub



    
Public Sub WriteLine(ByVal AnyInteger As Integer)

        Console.
WriteLine(AnyInteger.ToString + " called Base:Integer")

    
End Sub


End Class



Class Derived : Inherits Base

    
Public Overloads Sub WriteLine(ByVal AnyDouble As Double)

        Console.
WriteLine(AnyDouble.ToString + " called Derived:Double")

    
End Sub


End Class

代码起始是一样的。我直接公布结果,起始跟 C# 的结果不一样

10 called Base:Integer

11 called Base:String

10.5 called Derived:Double

结果出乎意料,起始也是情理之中的事情。

我就不做解释了,关键是提醒各位有 C++ 专项 VB.NET 的时候,不要想当然的以为 VB.NET 的处理方式跟 C# 一样。

抱歉!评论已关闭.