在性能至关重要的应用程序中, Scenario 1 (完全独立的构造函数)与 Scenario 2 (链调用构造函数)之间是否有明显的优势?
情景1
Class TwoInts
Private a, b As Integer
Public Sub New(ByVal a As Integer, ByVal b As Integer)
Me.a = a
Me.b = b
End Sub
Public Sub New(ByVal a As Integer)
Me.a = a
Me.b = 0
End Sub
Public Sub New()
Me.a = 0
Me.b = 0
End Sub
End Class
场景2
Class TwoInts
Private a, b As Integer
Public Sub New(ByVal a As Integer, ByVal b As Integer)
Me.a = a
Me.b = b
End Sub
Public Sub New(ByVal a As Integer)
Me.New(a, 0)
End Sub
Public Sub New()
Me.New(0)
End Sub
End Class
答案 0 :(得分:4)
不,不会有明显的差异。
您可以运行自己的基准测试并找出答案。
答案 1 :(得分:0)
速度不应该大不相同。从裸露的构造函数到深度构造函数只有2个调用...但是:
你应该问C#语言它对构造函数的看法是什么:P 在那里它不会很好,所以我认为你应该坚持使用不同的方法,如制作一个“初始化方法”,并从每个构造函数调用,并具有更可读的代码。在那里你需要使用“:this(0)”符号,它不是那么可读(例如,阅读它时的程序)。而且只需少一点就可以达到某种程度。
答案 2 :(得分:0)
这取决于你明显的意思。场景1确实引入了额外的调用,但它添加的时间将以毫秒为单位进行测量。场景2会更快。 (它还会增加生成代码的大小。)
答案 3 :(得分:0)
不要使用MarinoŠimić建议的常用Init()方法! 它是C ++风格,不适合C#。在C#初始化应该在构造函数中完成!
详见Bill Wagners的书“Effective C#”:
http://www.diranieh.com/NETCSharp/EffectiveCS.htm#14._Use_Constructor_Chaining