反射帶有out引數的方法

2021-09-30 07:28:23 字數 607 閱讀 5156

public int getflag(out int result);

使用下面的方法來反射:

system.type mytype = typeof(testreflection);

//反射生成改型別的物件例項

object obj = mytype.invokemember(null,bindingflags.createinstance,null,null,null);

system.int32 i=new system.int32();

object myargs =new object ;

//反射呼叫改帶有out引數的getflag方法

mytype.invokemember("getflag",bindingflags.invokemethod,null,obj,myargs);

messagebox.show(((int)myargs[0]).tostring());

其實最重要的還是在引數處理那部分,myargs[0]為反射方法返回的引數物件,把它轉換為int型就為你想要得到的資料了。不能直接讀取前面的i變數;這是由於這裡存在乙個值型別和引用型別的裝箱操作的原因,反射返回的值應該是儲存在傳入的在託管堆上的object物件裡。

帶有可變引數的方法

可變引數 在看其他人寫的 時看到了這個 這是個帶可變引數的方法。有時我們實現乙個方法時不能確定呼叫它時要傳進來幾個引數,多了少了都會產生錯誤,這時可變引數就能體現出他的優點,用三個點代替不確定的引數,呼叫時就可以傳任意個數引數值。我們先來說一下引數的儲存,函式 方法 引數是以資料結構 棧的形式訪問,...

C 方法的out引數和ref引數詳解

當乙個方法有多個返回值且是不同型別時,我們可以利用方法的引數 out引數和ref引數。我們先來看看最簡單的引數傳遞 static void main string args public static intadd int a,int b 一看就知道返回結果是10,20,30 那麼再來看看方法的re...

c 方法引數ref和out區別

c 方法引數ref和out區別 params 關鍵字可以指定採用數目可變的引數的 方法引數。可以傳送引數宣告中所指定型別的逗號分隔的引數列表或指定型別的引數陣列。還可以不傳送引數。在方法宣告中的 params 關鍵字之後不允許任何其他引數,並且在方法宣告中只允許乙個 params 關鍵字。class...