C#-函數的傳值與傳址


      傳值就是將實參的值傳到所調用的函數里面,實參的值並沒有發生變化,默認傳值的有int型,浮點型,bool型,char字符型,結構體等等。

      傳址就是將地址傳到所調用的函數里面操作,實參的值也會跟着變化,傳址的有數組和字符串string。

      上面說的就牽扯到數據的分類,分為值類型和引用類型,值類型的就是傳值的那種,引用類型包括字符串類型,數組和對象,字符串類型特殊,主要是因為字符串實際上是一個字符char[]數組,它在修改的時候並不是直接修改,而是新開辟了一個存儲空間也就是建立了一個新的字符串,所以它在調用、賦值的using System;

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
namespace _1019傳值傳址
{
    class Program
    {
        //一、傳值-將變量的值傳入函數中
        public void Qiuhe(int a)
        {
            int b = a + 10;
            Console.WriteLine(b);
        }
//
//寫個函數,傳值進去,傳姓名、性別、年齡進去
//將年齡+10歲, //return反饋回來 split分割 public string Fanhui(string name, string sex, int age) { age += 10; return name + "-" + sex + "-" + age; } //三、out傳址-僅僅將變量名帶入函數,不考慮參數值,out自動默認return public void Fanhui1(int a,out int b) { b = a + 10; } static void Main(string[] args) { //調用函數之前需要先初始化、實例化該Class類 Program Hanshu = new Program(); //一、傳值-將變量的值傳入函數中 int a = 5; int b = 10; Hanshu.Qiuhe(a); Console.WriteLine(b);
//最后輸出b結果為10,為什么不是5+10=15? //因為外部定義的int b 與內部定義的int b 不是同一個b ,僅僅是用了同一個字母來表示而已

//二、一個函數只能返回一個值,將函數返回的值用split進行分割后放入一維數據獲取多個值 string ss = Hanshu.Fanhui("張三", "", 33); string[] xx = ss.Split('-'); for (int i = 0; i < 3; i++) { Console.WriteLine(xx[i]); }
//三、out傳址
            int aa = 5; int bb = 10; Hanshu.Fanhui1(aa, out bb); Console.WriteLine(bb); //傳址:將這個變量名直接傳輸過去,若在另一邊有賦值情況,這個變量名將變化
 Console.ReadLine(); } } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM