【发布时间】:2012-10-22 08:55:28
【问题描述】:
据我所知,以下两个示例在功能上是相同的。
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
发生了什么事?为什么会有差异?
【问题讨论】:
-
这是关于运行时行为还是 Visual Studio Intellisense 的问题?
-
我认为 Slaks 猜对了,但问题没有说明问题。它也太长了。
-
@Kal_Torak 也可能是,因为我不知道为什么。这就是我问的原因。
-
@Henk Holterman 太长了?我提供了两个不同语言的代码示例,因此用户可以复制我拥有的代码并查看我遇到的“问题”。 Stack Overflow 不能兼得。问题太短,问题太长,没有提供代码。 (以及为什么cmets不保留换行符,你可以在cmets上进入可写的版本,但是保存的时候就去掉了。)
-
@HenkHolterman 据我所知,Adam 或多或少遵循 SO 的 MVCE guidelines。