gpt4 book ai didi

c# - C# 的 static 是否与 VB.NET 中的 NotInheritable 相同?

转载 作者:行者123 更新时间:2023-11-30 13:12:50 31 4
gpt4 key购买 nike

到处都需要一个包含实用方法的类。所以,我想让它成为一个静态类。

为什么 static 被转换为 NotInheritable

public static class MyClass 
{
public static string MyProperty { get; set; }

public static void MyMethod()
{

}
}

Public NotInheritable Class Employee
Private Sub New()
End Sub
Public Shared Property MyProperty() As String
Get
Return m_MyProperty
End Get
Set
m_MyProperty = Value
End Set
End Property
Private Shared m_MyProperty As String

Public Shared Sub MyMethod()
End Sub
End Class

在我看来,这看起来更像是一个密封类,不是吗?

最佳答案

Why static is being converted to NotInheritable?

它不会直接转换。 static 类是 sealed 的事实使得 VB.NET 中的等效类 NonInheritable

In my opinion, this looks more like a sealed class, doesn't it?

是的,但这不是“错误”,因为静态类也是密封的。

VB.NET 没有“静态类”的概念。它最接近的是模块,它不是 static确切等价物,因为它不能,例如,在其中嵌套另一个模块,而您可以在其中定义静态类C# 中的另一个静态类。因此,转换器可能只是出于谨慎而犯了错误,未将 static 类转换为 Module

由于 C# 中的静态类是无法实例化的密封类,因此与 VB.NET 中的等效类最接近的是 NotInheritable 类,其中包含所有 Shared方法和属性,具有私有(private)默认实例构造函数,因此无法实例化该类。

因此生成的 VB 类具有源类的所有特征,但提供这些特征的机制有些不同。

关于c# - C# 的 static 是否与 VB.NET 中的 NotInheritable 相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35559600/

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