C#-函数参数的传递

    xiaoxiao2021-03-25  77

    我们都知道,C#函数中的参数传递方式有按值传递和按引用传递,那么他们两种方式有什么区别

    在C#中的参数类型有值类型(例如int)和引用类型(例如string)之分

    同样的参数传递也有按值传递和按引用传递

    我们可以利用两两组合的方式得到4种传递方式:

    (1)按值传递值类型

    (2)按值传递引用类型

    (3)按引用传递值类型

    (4)按引用传递引用类型

    一般来说,除非使用特定的关键字(ref和out)否则参数是按值传递。

    【按值传递的优缺点】

    按值传递会传递一个副本。传递副本的一个优点是,可以避免误操作而影响了原始值。原因是在被调用的函数体内,操作的是副本的值,而不是原始值。当然,传递副本也是有缺点的,最为突出的应该是由于复制而产生的性能损耗,这点在大型的值类型身上尤为突出。

    那么C#的编译器的默认行为为什么不是使用按引用传递参数呢?就是怕函数误操作了原始值。这点应该和C#的编译器要求显示使用关键字(ref和out)差不多,都是为了清楚地表达使用的意图,以避免误操作。使用ref等关键字,暗示函数调用者知道,在函数体内,也许存在修改原始值的语句,会改变参数的值(或者叫状态)。 

    转载请注明原文地址: https://ju.6miu.com/read-36788.html

    最新回复(0)