博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#_函数参数的值传递和引用传递笔记
阅读量:4963 次
发布时间:2019-06-12

本文共 2146 字,大约阅读时间需要 7 分钟。

函数参数的值传递和引用传递笔记

      首先C# 是完全面对对象的高级语言 。 主要有2种基础数据类型且都继承于Object,都在C++的基础上做了封装,都有着类似C++类对象

的感觉。这2种基础数据类型的互相转换会造成装箱和拆箱操作这里就不做过多说明了)。

    值类型包含:数值类型int  float  等),bool , 枚举, 结构体 ,可空类型等;

    引用类型包含:数组 (Array),Class ,接口 ,object ,字符串等;

   一:值传递做参数传递进入函数

      会在函数体类创造一个新的拷贝来进行操作,不影响原有数据类型中的值。

 

1 using System.Collections; 2 using System.Collections.Generic; 3 using UnityEngine; 4  5 public class Test_Script : MonoBehaviour  6 { 7     public int num = 10; 8  9     public void Start () 10     {11         Add(num);12         num--;13         Debug.Log("num :" +num);14     }15 16     public void Add(int _num)17     {18         _num++;19         Debug.Log("_num :" +_num);20     }21 22 }

 运行效果。

  二:引用传递做参数传递进入函数

      只是复制这个对象本身,即复制其地址值,而不是它指代的对象。

      (注意修改指向地址的值原本的值也会改变,所以引用传递其实是引用类型的地址不同,指向的地址相同【跟C++中的指针概念很像】)。

 

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6  7 namespace CSharp_Script 8 { 9     class Program10     {11         static void Main(string[] args)12         {13            int[] intArray = new int[] { 123, 123, 123, 123, 123 };14            string str =  "hello,world" ;15 16 17            Set(intArray, str);18 19             //输出原来的值20            for (int i = 0; i < intArray.Length; ++i)21            {22                Console.WriteLine("intArray[" + i.ToString() + "] :" + intArray[i].ToString());23            }24 25            Console.WriteLine("str" + str);26 27            Console.ReadKey();28         }29 30         //设置改变原来的值31         public static void Set(int[] _intArray, string _str)32         {33             for (int i = 0; i < _intArray.Length; ++i)34             {35                 _intArray[i]++;36                 Console.WriteLine("_intArray[" + i.ToString() + "] :" + _intArray[i].ToString());37             }38 39             _str = "world,hello";40 41             Console.WriteLine("_str" + _str);42         }43     }44 }

 

  输出:

 

 

 

 

二者的区别:

    值传递时,系统首先为被调用方法的形参分配内存空间,并将实参的值按位置一一对应地复制给形参,此后,被调用方法中形参值得任何改变都不会影响到相应的实 参;

    引用传递时,系统不是将实参本身的值复制后传递给形参,而是将其引用值(即地址值)传递给形参,因此,形参所引用的该地址上的变量与传递的实参相同,方 法体内相应形参值得任何改变都将影响到作为引用传递的实参。

 

转载于:https://www.cnblogs.com/Roz-001/p/11050424.html

你可能感兴趣的文章
二叉树系列二:二叉树的C++表示
查看>>
HDU 1159 Common Subsequence(裸LCS)
查看>>
1550: Simple String (做得少的思维题,两个字符串能否组成另外一个字符串问题)...
查看>>
享元(FlyWeight)模式
查看>>
php curl 传输是url中带有空格的处理方法
查看>>
之前写回调地址做的笔记
查看>>
vb.net自学完整版
查看>>
Samba 1.0服务部署
查看>>
unity3D 知识点随手记
查看>>
C++学习之运算符重载的总结
查看>>
Hadoop学习之Hadoop集群搭建
查看>>
session cookie
查看>>
java Collection中的排序问题
查看>>
点击input文字会自动消失
查看>>
SOA交互
查看>>
安卓微信6.0.2更新 自定义表情可同步字体大小能修改
查看>>
hdu1083二分图匹配模板题
查看>>
我的未来路
查看>>
java—泛型
查看>>
luogu解题报告:P2178[NOI2015]品酒大会
查看>>