《MCTS.C#》(part.3)第四章:方法與運算子 method & operator

本週重點:

  1. Reference Type有宣告ref 跟 沒有宣告,還是有差的。
  2. Method的具名參數及選擇性參數(C# 4.0 以上)

================================================

  1. 參數的傳遞
  1. 輸入參數
  1. Value Type
  2. Reference Type
    • object
      傳入Method後,當object沒有new instance時,會變更原始的object。但若有new新的instance時,即會複製一個新的,並不會變更原始的object。
      ※若為ref 參考參數時,即使new新的instance,仍會變更原來的物件。因為他是直接拿外部的參數來使用的。
  • String
    在Method只要有對string重新設定值時,即為new 新的instance。結果同b1,並不會更改到外部的參數值。
  1. 參考參數

無論是否有new instance,皆會改變原始的外部參數值。

        static void Main(string[] args)
        {
            int i = 10;
            passValueType(i);

            Class1 c1 = new Class1();
            c1.i = 10;
            passRefType(c1);        //c1.i=10
            passRefType(ref c1);    //c1.i=2000

            string s = "abc";
            passString(s);      //s=abc
            passString(ref s);  //s=ooxx
        }

        static void passValueType(int j)
        {
            j = 100;
        }

        static void passRefType(Class1 c2)
        {
            //c2.i = 100;   =>會影響改變到傳入的object
            c2 = new Class1();  //重新建立object,並不會改變外部傳入的值
            c2.i = 100;
        }

        //使用ref傳入,就算物件重新new過,還是會改變原始的傳入物件。
        static void passRefType(ref Class1 c3)
        {
            c3 = new Class1();
            c3.i = 2000;
        }

        static void passString(string s2)
        {
            s2="xyz";   //字串在設定 = 時,即為重新建立新物件。
        }

        static void passString(ref string s2)
        {
            s2 = "ooxx";   
        }
  1. 選擇性參數(c# 4.0)

作用:在宣告Method時,可以選擇性不傳入參數,而以初始值代替。

宣告方式:於宣告Method時,設定預設參數值即可。但是需要在最後面。

static void showMessage(
            string s, string s2="demo2", string s3="demo3")

 

  1. 具名參數(c# 4.0)

作用:在宣告Method時,可以選擇性只傳入指定參數。

宣告方式:使用「參數名稱:傳入值」來呼叫Method。

showMessage("aaa", s3: "ccc");

 

  1. 數值的轉換
string s = i.ToString("c"); //NT$5,000
//i = int.Parse(s);   //X, FormatException
i = int.Parse(s, System.Globalization.NumberStyles.Currency);

 

  1. DateTime的轉換
//http://msdn.microsoft.com/zh-tw/library/ey1cdcx8(v=vs.95).aspx
//將yyyyMMdd轉為日期格式
string sd = "20121022";
DateTime d2 = DateTime.ParseExact(sd, "yyyyMMdd", 
new System.Globalization.CultureInfo("zh-tw", true),
 System.Globalization.DateTimeStyles.AllowWhiteSpaces);

 

Tagged with:     , , , , ,

About the author /


Hi,我是露露,喜歡登山,雖然很肉腳但是還是想挑戰百岳。 喜歡程式設計,雖然沒有非常的強,但是還是都可以完美的完成。

Post your comments

Your email address will not be published. Required fields are marked *