熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

正確理解C#中的關鍵字[1]

2013-11-13 11:02:12  來源: .NET編程 

最近有人問到 ref 關鍵字的正確用法下面我們來舉例說明其實要更好的理解 ref 關鍵字結合 C++ 代碼更加容易一些另外在開始我們的例子之前需要提前說明幾點

 

C# 中的數據有兩種類型引用類型(reference types)和值類型(value types) 簡單類型(包括int long double)和結構(structs)都是值類型而其他的類都是引用類型 簡單類型在傳值的時候會做復制操作而引用類型只是傳遞引用就像 C++ 中的指針一樣

 

注意 structs C# C++ 中的區別 C++ structs 和類基本相同(except that the default inheritance and default access are public rather than private) 而在 C# structs 和類有很大的區別其中最大的區別(我個人覺得同時也是容易忽略的一個地方)可能就是它是值類型而不是引用類型

 

下面這段代碼是 MSDN 中的例子

 

  // cs_refcs

  using System;

  public class MyClass

  {

   public static void TestRef(ref char i)

   {

   // The value of i will be changed in the calling method

   i = b;

   }

   public static void TestNoRef(char i)

   {

   // The value of i will be unchanged in the calling method

   i = c;

   }

   // This method passes a variable as a ref parameter; the value of the

 // variable is changed after control passes back to this method

   // The same variable is passed as a value parameter; the value of the

   // variable is unchanged after control is passed back to this method

   public static void Main()

   {

    char i = a; // variable must be initialized

    TestRef(ref i); // the arg must be passed as ref

    ConsoleWriteLine(i);

    TestNoRef(i);

    ConsoleWriteLine(i);

  }

}

 

大家很容易看出輸出結果是

 

  b

b

 

  那麼如果把這個例子做一些新的改動將值類型(這裡用的是 char)改成引用類型程序運行又是什麼效果呢?

[]  []  []  


From:http://tw.wingwit.com/Article/program/net/201311/15037.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.