C out和ref關鍵字

2022-01-12 23:09:04 字數 1483 閱讀 6612

out和ref關鍵字會導致引數通過引用來傳遞。不同之處在於ref 要求變數必須在傳遞之前進行初始化。若要使out和 ref 引數,方法定義和呼叫方法都必須顯式使out及ref關鍵字。例如:

**

class

example

static

void

refmethod(

refint

j)static

void

main()

}

out引數傳遞的變數不需要在傳遞之前進行初始化, ref傳遞的引數必須最先初始化。

refout關鍵字在執行時的處理方式不同,但在編譯時的處理方式相同。因此,如果乙個方法採ref引數,而另乙個方法採out引數,則無法過載這兩個方法。例如,從編譯的角度來看,以下**中的兩個方法是完全相同的,因此將不會編譯以下**:

**

class

cs0663_example

public

void

samplemethod(

refint

i) }

但是,如果乙個方法採refout引數,而另乙個方法不採用這兩類引數,則可以進行過載,如下所示:

class

refoutoverloadexample

public

void

samplemethod(

outint

i) }

備註屬性不是變數,因此不能作為out引數傳遞

示例當希望方法返回多個值時,聲out方法很有用。使out引數的方法仍然可以將變數用作返回型別,但它還可以將乙個或多個物件作為out引數返回給呼叫方法。此示例使用out在乙個方法呼叫中返回三個變數。請注意,第三個引數所賦的值為 null。這樣便允許方法有選擇地返回值 

**

class

outreturnexample

static

void

main()

}

按引用傳遞值型別(如上所示)是有用的,但ref對於傳遞引用型別也是很有用的。這允許被呼叫的方法修改該引用所引用的物件,因為引用本身是按引用來傳遞的。下面的示例顯示出當引用型別作為ref引數傳遞時,可以更改物件本身 。

**

class

refrefexample

static

void

main()

}

c out關鍵字 vb C out關鍵字

out 關鍵字會導致引數通過引用來傳遞。這與 ref 關鍵字類似,不同之處在於 ref 要求變數必須在傳遞之前進行初始化。若要使用 out 引數,方法定義和呼叫方法都必須顯式使用 out 關鍵字。例如 class outexample static void method out int i i 4...

ref 關鍵字out關鍵字

using system using system.collections.generic using system.linq using system.text using system.threading.tasks namespace outandref ref修飾方法的引數,在呼叫的時候必須...

ref關鍵字 out關鍵字 區別

ref 和 out 關鍵字比較怪,他們在方法的引數中使用,今天對他們做了認真的研究 msdn上的定義 ref關鍵字使引數按引用傳遞。其效果是,當控制權傳遞 用方法時,在方法中對引數所做的任何更改都將反映在該變數中。若要使用ref引數,則方法定義和呼叫方法都必須顯式使用ref關鍵字。out關鍵字會導致...