gpt4 book ai didi

c# - 为什么 VB.net 和 C# 之间的行为不同?

转载 作者:行者123 更新时间:2023-12-03 21:50:08 24 4
gpt4 key购买 nike

据我所知,以下两个示例在功能方面是相同的。

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) 方法。
不要这样做;这令人困惑。

关于c# - 为什么 VB.net 和 C# 之间的行为不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13003401/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com