C#既有值传递,又有引用传递的好处是有效避免了变量复制的开销,比如参数是一个比较复杂的结构体,那么使用引用传递就比直接传递来得好,性能会有优势。C#提供了这样一种机制,这也是语言设计者的想法。它可以根据如何方便用户的初衷进行设计。
为什么Java只有值传递,但C# 既有值传递,又有引用传递,这种语言设计有哪些好处?
它有效地避免了变量复制的开销。例如,如果参数是一个复杂的结构,那么使用引用传递比直接传递要好,并且性能会有优势。
引用传递的优点:
有效避免了变量复制的开销,比如参数是一个比较复杂的结构体,那么使用引用传递就比直接传递来得好,性能会有优势。
引用传递的缺点:
引用传参,在函数中对该变量所做的修改,在函数返回后依然存在,这有时候其实并不是开发者希望的结局。
至于Java为什么不提供引用传递这样的机制,可能是Java语言设计者的一个思想问题,可能是为了保持简单、统一性。比如JAVA里也没有多继承的概念,而在C++中是可以实现多继承的。Java中没有自定义值类型的方式,既然Java中所有自定义类型都是引用类型,那么这个语法作用就很有限,不支持就是正常的。
而C#提供这样的机制,也是语言设计者的思路问题,可能是本着用户怎么方便怎么来的初衷而设计,C# 原本设计是用来代替 C++ 做 win32 开发的,之前很多用MFC做winform的,C#的出现使得winform开发变得快速、简单,我个人认为C#语言设计的很先进、优异。
延伸阅读:
什么是C#?
C#是微软公司发布的一种由C和C++衍生出来的面向对象的编程语言、运行于.NET Framework和.NET Core(完全开源,跨平台)之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司 .NET windows网络框架的主角。
C#是由C和C++衍生出来的一种安全的、稳定的、简单的、优雅的面向对象编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的优选语言。
文章标题:C#既有值传递,又有引用传递,有哪些好处,发布者:小编,转载请注明出处:https://worktile.com/kb/p/37329