1. 程式人生 > >C#引用型別引數加ref或out與不加ref或out的區別

C#引用型別引數加ref或out與不加ref或out的區別

通過下面的例子說明引用型別引數加ref和不加ref的區別
  class   a  
  {  
        int   val;  
  }  
  class   test  
  {  
        public   static   void   Main()   
        {   
              a   a1=new   a();   
              changeIt(a1);                                                           
              Console.WriteLine(a1.val.toString());   
        }  
        private   static   void   changeIt(a   objects)                   
        {   
              objects.val=100;   
        }  
  }   
執行結果肯定都是:100(因為引用變數和引數指向同一個物件)
 
   
  class   a  
  {  
        int   val;  
  }  
  class   test  
  {  
        public   static   void   Main()   
        {   
              a   a1=new   a();   
              changeIt(ref   a);   
              Console.WriteLine(a1.val.toString());   
        }  
        private   static   void   changeIt(ref   a   objects)   
        {   
              a   obj   =   new   a();   
              obj.val   =   200;   
              objects   =   obj;   
        }  
  }   
    
執行結果肯定都是:200 (changeIt方法使原來的引用變數指向了另一個物件即在用ref時可以改變原引用變數的指向,使用時要小心,需要時使用.) 

相關推薦

C#引用型別引數refoutrefout區別

通過下面的例子說明引用型別引數加ref和不加ref的區別   class   a     {           int   val;     }     class   test     {           public   static   void   Main()           

C++--引用型別,含有可變引數的函式

引用型別 引用是識別符號的別名 定義一個引用的時候,必須同時對他初始化,使它指向一個已經存在的物件  例如:其實在定義引用變數ri的時候,ri相當於變數j的別名 int i,j; int &ri = i;//定義int引用ri,並初始化為變數i的引用

C#中值型別引用型別引數傳遞

原則:儘可能控制對資料的修改,如果可以預測某個資料不會或不應該被改變,就要對其控制,而不要期望使用這個資料的呼叫者不會改變其值。 如果引數在使用過程中被意外修改,將會帶來不可預知的結果,而且這種錯誤很難被檢查到,所以我們在設計方法引數的時候,要充分考慮傳遞引用型別引數或者引用方式傳遞引用型別

java——引用型別引數傳遞

// 引用型別引數 public class test1 { int num = 1; public static void main(String[] args) { int[] arr = new int[]{19, 30}; System.out.print("change_p

c++ 引用型別【&】需注意之第一次有效性

c++中的引用型別大家都有所瞭解,但是它的“第一次有效性”常常被忽略。 什麼是第一次有效性呢?就是引用型別只有在第一次附值時被當作引用,其它時候的附值被認為是對它所引用的內容進行的附值。 舉個小例子: #include <iostream> using namespace

c#引用型別變數在程式中的變化

這是我的第一篇部落格。 想到寫部落格,是因為記錄在紙上的東西,總怕哪天一丟,那些出過的錯誤又回來纏繞自己。 好了,那就步入正題吧! c#引用型別,具體請看別人寫的部落格吧 這裡有一個有趣的現象: class Program     {         static void

C# 引用型別陣列

先自定義一個類card,  class card     {          public  int par1;     }     card[] ca = new card[3];             for (int i = 0; i < 3; i++)

C++ 引用型別const形參的用法

今天在看《C++沉思錄》後,對const引用形參的用法又有了進一步的認識。在此,想把我個人對const引用形參的了 解分享給大家。如果有不到之處,還往各位同仁指出。 第一種情況: class Tes

C++ 引用型別

引用型別:可以獲得指標型別的效果,但是又可以避免指標可讀性和可維護性差等問題。 1. 定義     <型別> &<引用變數>;     定義時要初始化     <型別>可以是除了void以外的任意C++型別。     如: int

C語言 函式指標呼叫時星號星號?

函式指標在賦值以後,例如通過庫動態載入方式,然後在使用時,程式呼叫遇到了既加星號,也有不加星號的方式,因此有點疑惑。 先上例項,再作分析 #include <stdio.h> void myfun(void); int main(void) { void (*pf)(void); p

C++字元型別轉換(BSTR、_bstr_tCString、char *轉換)

1、CString轉BSTR BSTR bstr; CString strSql;  bstr = strSql.AllocSysString(); …  SysFreeString(bstrText

單例模式鎖例項C++

1 教科書裡的單例模式   我們都很清楚一個簡單的單例模式該怎樣去實現:建構函式宣告為private或protect防止被外部函式例項化,內部儲存一個private static的類指標儲存唯一的例項,例項的動作由一個public的類方法代勞,該方法也返回單例類唯一的例項。

js調用函數時括號括號的區別

調用函數 執行 查看 return 區別 代碼 調用 dem 部分 函數名其實就是指向函數體的指針 不加括號, 可以認為是查看該函數的完整信息, 不加括號傳參,相當於傳入函數整體 加括號 表示立即調用(執行)這個函數裏面的代碼(花括號部分的代碼) 例2: functio

nginx配置proxy_pass URL末尾/(斜線)的區別

gin clas 末尾 jpg 127.0.0.1 proxy 技術 div str nginx在配置proxy_pass的時候 URL結尾加斜線(/)與不加的區別和註意事項 假設訪問路徑的 /pss/bill.html 加/斜線的情況 location /pss

python中類的方法裏面變量前selfself的區別

UI PYTHON SELF 1.最近在執行一個UI自動化腳本登錄網站時遇到一個很奇葩的問題:運行腳本後chromedriver會驅動瀏覽器打開網站執行腳本裏面的一系列界面操作,操作完後瀏覽器自動關閉了(重點就在這裏,我明明沒有調用webdriver的close()或是quite()方法,為什麽它

(二十七)JVM類載器機制載過程

有時 重復加載 win ppc context 類的定義 字符集 area main方法 一、Java虛擬機啟動、加載類過程分析 下面我將定義一個非常簡單的java程序並運行它,來逐步分析java虛擬機啟動的過程。 package org.luanlouis.jvm.lo

Oracle的sql語句,查詢條件括號括號區別 -

ont 執行 ora 語句 oracl lar AC rac oracle 例如: SELECT ename, job, deptno FROM emp WHERE deptno in (10, 20) AND (ename like ‘%

字符串雙引號""區別

.com 通配符 匹配 正則表達 字符 能夠 技術 引號 表達式 加雙引號"",表示精確匹配 不加雙引號"",*表示通配符 =~ 左側字符串是否能夠被右側的PATTERN所匹配(註意: 此表達式一般用於[[ ]]中;擴展的正則表達式

JavaScript變數宣告時 “var” “var” 的區別

    最近由於需要,在學習JavaScript,首先的var就很不解,在看了好多部落格並經過一系列的程式碼試驗。有以下總結: 總結:  1. 在函式內部的變數,加var 是區域性變數;不加是全域性變數,會對函式封裝造成影響。 2. 全域性作用域,加var的

@RequestParam區別

最簡單的兩種寫法,加或不加@RequestParam註解 @RequestMapping("/list") public String test(int userId) { return "list"; } @RequestMapping("/