![](/img/trans.png)
[英]Why does getting a member expression member name differ between C# and VB.NET?
[英]Why does the behavior differ between VB.net and C#?
據我所知,以下兩個示例在功能方面是相同的。
C#
namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
{
var x = new Example(12);
var y = new Example(34);
var z = Example.Examples.One;
}
}
class Example
{
public static class Examples
{
public static readonly Example Zero = new Example(0);
public static readonly Example One = new Example(1);
}
public readonly Double Value;
public Example(Double Value)
{
this.Value = Value;
}
public static Example Add(Example x, Example y)
{
return new Example(x.Value + y.Value);
}
}
}
VB.net
Option Strict On
Module Module1
Sub Main()
Dim x=New Example(12)
Dim y = New Example(34)
Dim z= Example.Examples.One
End Sub
End Module
Public Class Example
Public Class Examples
Public Shared ReadOnly Zero As Example
Public Shared ReadOnly One As Example
Public Shared ReadOnly Two As Example
Public Shared ReadOnly MinusOne As Example
Shared Sub new()
Zero=New Example(0)
One= New Example(1)
Two = New Example(2)
MinusOne = New Example(-1)
End Sub
End Class
Public ReadOnly Value As Double
Public Sub New(Value As Double)
Me.Value=Value
End Sub
Public Shared Function Add(x As Example,y As Example) As Example
Return New Example(x.Value+y.Value)
End Function
End Class
那么,為什么我在點后僅獲得C#中的實例方法(請參見下文)
z = Example.Examples.One.
和在VB.net
Dim z = Example.Examples.One.
我也得到了Examples
到底是怎么回事? 為什么會有所不同?
出於兼容性原因,VB.Net允許您通過實例限定符訪問Shared
( static
)方法。
不要做 令人困惑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.