c語言網(wǎng)課 為什么Java只有值傳遞,但C# 既有值傳遞,又有引用傳遞,這種語言設計有哪些好處?
為什么Java只有值傳遞,但C# 既有值傳遞,又有引用傳遞,這種語言設計有哪些好處?它有效地避免了變量復制的開銷。例如,如果參數(shù)是一個復雜的結構,那么使用引用傳遞比直接傳遞要好,并且性能會有優(yōu)勢。至于
為什么Java只有值傳遞,但C# 既有值傳遞,又有引用傳遞,這種語言設計有哪些好處?
它有效地避免了變量復制的開銷。例如,如果參數(shù)是一個復雜的結構,那么使用引用傳遞比直接傳遞要好,并且性能會有優(yōu)勢。
至于為什么Java不提供這樣一種引用傳遞機制,這可能是Java語言設計者的一個思想問題,可能是保持它的簡單和統(tǒng)一。例如,Java中沒有多重繼承的概念,但多重繼承可以在C中實現(xiàn),Java中沒有定義自定義值類型的方法。由于Java中的所有自定義類型都是引用類型,因此這種語法非常有限,不支持它是正常的。
和C#提供了這樣一種機制,這也是語言設計者的想法。它可以根據(jù)如何方便用戶的初衷進行設計。C#最初是為了取代C來開發(fā)Win32。在許多MFC被用于WinForm之前。C語言的出現(xiàn)使WinForm的開發(fā)變得簡單快捷。我個人認為C語言設計非常先進和優(yōu)秀。