乙個方法教你認識ref 簡單易懂

2022-03-18 02:26:49 字數 722 閱讀 7106

引數分為值型別和引用型別,當我們將乙個值型別的引數進行傳遞到另乙個方法的時候相當於,將這個變數進行複製到該方法進行操作,但是不會對該變數原始的值有影響。

但是有時候我們需要他有「影響」於是ref就出現了。在引數的前面新增ref關鍵字。如下例子可以進行理解。

static void main(string args)

private static void getval(int x)//這裡只是單純的複製x=0這個變數.傳說中的傳值

private static void getrefval(ref int x)//引數x是1個指向堆疊中值型別為int的指標

//傳說中的傳址

在c#中,你給乙個方法傳輸值型別引數時,實際上是使用的這個引數的乙個副本,就是將原來的變數複製乙份,然後傳給乙個方法,讓其進行操作。所以在方法內部對引數的修改等不會對原來的引數造成影響(這個其實就是值型別和引用型別的區別)。但是有些時候,又需要這種影響。ref的作用就是這個。它將變數本身而不是副本傳給方法,所以對引數的修改原來變數的值。

int a = 0;

console.writeline(a.tostring()); //輸出是0

public void modifyvaule(ref int a)

console.writeline(a.tostring()); // 輸出是1。

此外,out修飾符也起到這個作用,二者的區別就是ref需要初始化,而out修飾的引數不需要初始化。

乙個簡單的demo認識訊號

include include void signal handler fun int signum intmain int argc,char ar 一 函式宣告 include typedef void sighandler t int sighandler t signal int signu...

Jquery教你寫乙個簡單的輪播

這個我表示寫的不咋地 但是勝在簡單,可優化性不錯。實際上我本來想寫個複雜點的結構的,但是最近忙成狗了!所以大家就講究著看吧 html結構 div class banner clearfix ul li img src images slide 1.png li li img src images s...

Python練習 乙個簡單易懂的迭代器,了解一下

今天我們學習了迭代器,其實可以理解為是乙個元素容器被遍歷的方式,不難理解,看看下面的小例子 1 2 乙個簡單的迭代器 3 l 1,2,3,4,5,6,7 建立乙個列表l 4 ite l.iter iter 代表l是乙個可迭代的物件 5print ite.next 使用iterator.next 方法...