91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

.NET/C#怎么利用反射調用含ref或out參數

發布時間:2021-06-17 14:55:01 來源:億速云 閱讀:394 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“.NET/C#怎么利用反射調用含ref或out參數”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“.NET/C#怎么利用反射調用含ref或out參數”這篇文章吧。

反射的用途:

(1)使用Assembly定義和加載程序集,加載在程序集清單中列出模塊,以及從此程序集中查找類型并創建該類型的實例。

(2)使用Module了解包含模塊的程序集以及模塊中的類等,還可以獲取在模塊上定義的所有全局方法或其他特定的非全局方法。

(3)使用ConstructorInfo了解構造函數的名稱、參數、訪問修飾符(如pulic 或private)和實現詳細信息(如abstract或virtual)等。

(4)使用MethodInfo了解方法的名稱、返回類型、參數、訪問修飾符(如pulic 或private)和實現詳細信息(如abstract或virtual)等。

(5)使用FiedInfo了解字段的名稱、訪問修飾符(如public或private)和實現詳細信息(如static)等,并獲取或設置字段值。

(6)使用EventInfo了解事件的名稱、事件處理程序數據類型、自定義屬性、聲明類型和反射類型等,添加或移除事件處理程序。

(7)使用PropertyInfo了解屬性的名稱、數據類型、聲明類型、反射類型和只讀或可寫狀態等,獲取或設置屬性值。

(8)使用ParameterInfo了解參數的名稱、數據類型、是輸入參數還是輸出參數,以及參數在方法簽名中的位置等。

然而,如果方法的參數中包含 ref 或 out 關鍵字的時候,又該怎么調用呢?

本文將介紹如何反射調用含 ref 或 out 關鍵字的方法。

比如我們有這樣的類型:

public class Walterlv
{
 public string Get(string key)
 {
 }
}

那么反射的時候可以使用:

var walterlv = new Walterlv();
var value = (string) typeof(Walterlv).GetMethod("Get").Invoke(walterlv, new object[] { "key" });

然而現在我們的函數是這樣的,帶一個 out 關鍵字的參數:

public class Walterlv
{
 public bool TryGet(string key, out string value)
 {
 }
}

事實上,無論是什么樣的方法,在反射式調用的都是同一個方法,即 Invoke。

對于 out 和 ref 關鍵字的方法來說,會更新傳入的數組,也就是 Invoke 最后傳入的那個參數。所以其實我們只需要保存那個數組的實例,在調用完畢之后便能重新取出被修改的參數了。

var walterlv = new Walterlv();
var args = new object[] { "key", null };
var value = (string) typeof(Walterlv).GetMethod("Get").Invoke(walterlv, args);
// 在這里可以從 args 里面取出被 ref 或者 out 修改的參數。

以上是“.NET/C#怎么利用反射調用含ref或out參數”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

ref
AI

丹东市| 威宁| 富川| 汨罗市| 皋兰县| 新巴尔虎右旗| 商南县| 读书| 吉首市| 肥城市| 栾城县| 长武县| 益阳市| 叶城县| 威宁| 松溪县| 乐陵市| 肥西县| 吉林市| 开阳县| 游戏| 赞皇县| 六安市| 周至县| 晋城| 黑龙江省| 满城县| 文成县| 铅山县| 霍山县| 阳信县| 庆安县| 博客| 奎屯市| 施秉县| 宁强县| 宾阳县| 郴州市| 广州市| 云梦县| 高碑店市|