ref和out區別
方法引數上的 ref 方法引數關鍵字使方法引用傳遞到方法的同一個變數。當控制傳遞迴呼叫方法時,在方法中對引數所做的任何更改都將反映在該變數中。 若要使用 ref 引數,必須將引數作為 ref 引數顯式傳遞到方法。ref 引數的值被傳遞到 ref 引數。 傳遞到 ref 引數的引數必須最先初始化。將此方法與 out 引數相比,後者的引數在傳遞到 out 引數之前不必顯式初始化。 屬性不是變數,不能作為 ref 引數傳遞。 如果兩種方法的宣告僅在它們對 ref 的使用方面不同,則將出現過載。但是,無法定義僅在 ref 和 out 方面不同的過載。例如,以下過載宣告是有效的: class MyClass { public void MyMethod(int i) {i = 10;} public void MyMethod(ref int i) {i = 10;} } 但以下過載宣告是無效的: class MyClass { public void MyMethod(out int i) {i = 10;} public void MyMethod(ref int i) {i = 10;} } 方法引數上的 out 方法引數關鍵字使方法引用傳遞到方法的同一個變數。當控制傳遞迴呼叫方法時,在方法中對引數所做的任何更改都將反映在該變數中。 當希望方法返回多個值時,宣告 out 方法非常有用。使用 out 引數的方法仍然可以返回一個值。一個方法可以有一個以上的 out 引數。 若要使用 out 引數,必須將引數作為 out 引數顯式傳遞到方法。out 引數的值不會傳遞到 out 引數。 不必初始化作為 out 引數傳遞的變數。然而,必須在方法返回之前為 out 引數賦值。 屬性不是變數,不能作為 out 引數傳遞。 如果兩個方法的宣告僅在 out 的使用方面不同,則會發生過載。不過,無法定義僅在 ref 和 out 方面不同的過載。例如,以下過載宣告是有效的: class MyClass { public void MyMethod(int i) {i = 10;} public void MyMethod(out int i) {i = 10;} } 而以下過載宣告是無效的: class MyClass { public void MyMethod(out int i) {i = 10;} public void MyMethod(ref int i) {i = 10;} }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-617183/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- out關鍵字和ref關鍵字的區別
- Rust 中 *、&、mut、&mut、ref、ref mut 的用法和區別Rust
- Spring中ref local=""與ref bean=""的區別SpringBean
- out,ref,params引數傳遞
- c#基礎系列3—深入理解ref 和outC#
- Vue 中ref()與 reactive() 的區別VueReact
- Lua中呼叫ref和out修飾引數的函式/過載函式函式
- 簡單介紹Tomcat中catalina.out 和 catalina.log的區別和用途Tomcat
- 認真總結Vue3中ref與reactive區別和isRef與isReactive 型別判斷VueReact型別
- ref和reactiveReact
- vue3 第二天vue響應式原理以及ref和reactive區別VueReact
- Tomcat 中 catalina.out、catalina.log、localhost.log 和 access_log 的區別Tomcatlocalhost
- 單步除錯 step into/step out/step over 區別詳解除錯
- 和區別
- ../和./和/的區別
- Vue 學習 Ref shallowRef triggerRef customRef (Ref 和 Reactive的對比)VueReact
- LinkedList和ArrayList的區別、Vector和ArrayList的區別
- http和https的區別/get和post的區別HTTP
- vue中的 ref 和 $refsVue
- ||和??的區別
- /*和/**的區別
- c# 方法引數(傳值,傳引用,ref,out,params,可選引數,命名引數)C#
- Synchronize和ReentrantLock區別ReentrantLock
- SSL和TLS 區別TLS
- jquery $(this) 和this的區別jQuery
- ClassNotFoundException和NoClassDefFoundError區別ExceptionError
- substr()和substring()區別
- JQuery this和$(this)的區別jQuery
- insert和insertSelective區別
- SCSS 和 SASS 區別CSS
- T和?的區別
- localStorage和sessionStorage區別Session
- BeanFactory和FactoryBean區別Bean
- Swift和Kotlin區別SwiftKotlin
- makefile =和:=的區別
- undefined 和 null 區別?UndefinedNull
- ibtis # 和 ¥ 區別
- Python之“==”和“is”區別Python
- null和undefined區別NullUndefined