使用ildasm和C#程序,例如
static void Main(string[] args)
{
}
Run Code Online (Sandbox Code Playgroud)
得到:
.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
// Code size 2 (0x2)
.maxstack 8
IL_0000: nop
IL_0001: ret
} // end of method Program::Main
Run Code Online (Sandbox Code Playgroud)
hidebysig构造有什么作用?
两个关键字Shadows和Overrides有什么意义?他们做了什么以及哪个环境是一个或另一个更好?
简单的问题来自一个简单的问题:ShadowsVB.NET中的New关键字和C#中的关键字有什么区别?(关于方法签名当然).
很抱歉这个问题很长,但我对C#不熟悉(我曾经使用过VB.Net)
我完全理解VB.Net和C#中的重写和重载之间的区别.所以覆盖没有问题.
现在,在VB.Net中,Shadowing(使用关键字Shadows)和Overloading(使用带有相同参数的关键字Overloads' )之间存在差异,如下所示:
考虑以下代码:
Class A
Sub MyMethod()
Console.WriteLine("A.MyMethod")
End Sub
Sub MyMethod(ByVal x As Integer)
Console.WriteLine("A.MyMethod (x)")
End Sub
Sub MyMethod2()
Console.WriteLine("A.MyMethod2")
End Sub
Sub MyMethod2(ByVal x As Integer)
Console.WriteLine("A.MyMethod2 (x)")
End Sub
End Class
Class B
Inherits A
Overloads Sub MyMethod()
Console.WriteLine("B.MyMethod")
End Sub
Shadows Sub MyMethod2()
Console.WriteLine("B.MyMethod2")
End Sub
End Class …Run Code Online (Sandbox Code Playgroud) 正如标题所说.从我在网上看到的Overloads关键字是可选的,但是有必要吗?在模块中使用它甚至似乎是一个错误.
vb.net ×4
.net ×2
c# ×2
oop ×2
overloading ×2
shadows ×2
cil ×1
new-operator ×1
overriding ×1
shadowing ×1