程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 關於.net中反射的一個小問題

關於.net中反射的一個小問題

編輯:.NET實例教程

若果一個函數有個參數是傳引用的,比如ref 或者out,該如何得到被修改的結果呢?請看如下的代碼



Int32[] input = new Int32...{1,2};
txtOut.AppendText(input.Length.ToString() + Environment.NewLine);

// txtOut is a multiline enabled textbox in my test form
MethodInfo info = typeof(Array).GetMethod("Resize").MakeGenericMethod(typeof(Int32));

Object[] paras = new Object[] ...{ input, 4 }; //如果是out型的,直接傳個null就行。
info.Invoke(null, BindingFlags.InvokeMethod, null, paras, null);
input = paras[0] as Int32[]; // get the written argument

CLR似乎會修改掉參數數組對象(paras)的引用,使其指向新的數組。 然後在其中存放輸出結果。所以你就可以在修改後的數組中得到你想要的結果。順便可以看一下對於泛型方法的實例化調用(MakeGenericMethod).

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved