<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      《CLR Via C# 第3版》筆記之(十) - 可選參數(shù)和可變數(shù)量參數(shù)

      C#中也可以像動態(tài)語言那樣,定義可選參數(shù)和可變數(shù)量參數(shù)。通過使用可選參數(shù)和可變數(shù)量參數(shù)可以構(gòu)建更加靈活的函數(shù)。

      主要內(nèi)容:

      • 可選參數(shù)
      • 可變數(shù)量參數(shù)

      1. 可選參數(shù)

      可選參數(shù)即調(diào)用函數(shù)時(shí),傳遞參數(shù)的個(gè)數(shù)和順序和定義的不一致。

      這樣不用重載,也可以實(shí)現(xiàn)類似重載的多個(gè)版本的函數(shù)定義。

      示例代碼如下:

      using System;
      
      namespace cnblog_bowen
      {
          public class CLRviaCSharp_10
          {
              static void Main(string[] args)
              {
                  /* 輸出結(jié)果
                   * i=1, s=Z, dt=00010101 00:00:00, g=00000000-0000-0000-0000-000000000000
                   */
                  OptionalParams();
      
                  /* 輸出結(jié)果
                   * i=1, s=ABC, dt=00010101 00:00:00, g=00000000-0000-0000-0000-000000000000
                   */
                  OptionalParams(1,"ABC");
      
                  /* 輸出結(jié)果 當(dāng)參數(shù)順序與函數(shù)定義的不一致時(shí),需要指定參數(shù),如下 dt:xxx
                   * i=1, s=Z, dt=20110704 15:08:46, g=00000000-0000-0000-0000-000000000000
                   */
                  OptionalParams(1, dt:DateTime.Now);
      
                  /* 輸出結(jié)果 當(dāng)參數(shù)順序與函數(shù)定義的不一致時(shí),需要指定參數(shù),如下 g:xxx
                   * i=1, s=V, dt=00010101 00:00:00, g=eb7d3f73-88e4-4d2d-a5ea-9c0322e3e3bf
                   */
                  OptionalParams(g:Guid.NewGuid(), s:"V");
      
                  Console.ReadKey(true);
              }
      
              private static void OptionalParams(Int32 i=1, String s="Z", 
                  DateTime dt = default(DateTime), Guid g = new Guid())
              {
                  Console.WriteLine("i={0}, s={1}, dt={2}, g={3}", i, s, dt.ToString("yyyyMMdd HH:mm:ss"), g.ToString());
              }
          }
      }

      在使用可選參數(shù)加強(qiáng)了C#的動態(tài)性的同時(shí),也需要關(guān)注可選參數(shù)的一些規(guī)則:

      1. 可以為方法,構(gòu)造器,有參屬性以及委托的參數(shù)指定默認(rèn)值
      2. 有默認(rèn)值的參數(shù)必須放在沒有默認(rèn)值的參數(shù)的后面
      3. 默認(rèn)值必須是編譯時(shí)能確認(rèn)的常量(如上代碼所示,可以使用defaultnew來定義默認(rèn)值)
      4. refout進(jìn)行標(biāo)示的參數(shù)不能設(shè)置默認(rèn)值

      2. 可變數(shù)量參數(shù)

      可變長參數(shù)其實(shí)與傳遞給函數(shù)一個(gè)數(shù)組是類似的。只不過用params標(biāo)記后,調(diào)用函數(shù)時(shí)更加自然一些。

      示例如下:

      using System;
      
      namespace cnblog_bowen
      {
          public class CLRviaCSharp_10
          {
              static void Main(string[] args)
              {
                  VarargsParams("price", 1, 2, 3, 4, 5);
      
                  Console.ReadKey(true);
              }
      
              private static void VarargsParams(string s, params Int32[] arr)
              {
                  Int32 sum = 0;
                  foreach (var i in arr)
                  {
                      sum += i;
                  }
      
                  Console.WriteLine("sum type={0}, sum={1}", s, sum.ToString());
              }
          }
      }

      可變數(shù)量參數(shù)也有一些需要注意的規(guī)則:

      1. params關(guān)鍵字只能用于方法簽名的最后一個(gè)參數(shù)
      2. 調(diào)用params關(guān)鍵字標(biāo)記的方法和調(diào)用普通方法相比,有一些額外的性能損失。

      對于以上的第2點(diǎn),原因如下:

      以上面的代碼為例,調(diào)用函數(shù)VarargsParams("price", 1, 2, 3, 4, 5)時(shí),雖然參數(shù)是Int32型的,

      但還是需要創(chuàng)建一個(gè)Int32的數(shù)組,需要在堆上分配內(nèi)存。

      沒有調(diào)用這樣的函數(shù)快:private static void VarargsParams(string s, Int32 i1, Int32 i2, Int32 i3, Int32 i4, Int32 i5)

      由于這個(gè)原因,System.String類的Concat方法定義以下幾種重載:

      public static string Concat(string str0, string str1);

      public static string Concat(string str0, string str1, string str2);

      public static string Concat(string str0, string str1, string str2, string str3);

      public static string Concat(params string[] values);

      posted @ 2011-07-04 15:53  wang_yb  閱讀(910)  評論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 中文字幕亚洲综合小综合| 先锋影音男人av资源| 精品国产精品午夜福利| 91精品91久久久久久| 天天综合色一区二区三区| 日本精品aⅴ一区二区三区| 最新国产精品中文字幕| 日韩成人精品一区二区三区| 国产精品成人观看视频国产奇米| 少妇无套内射中出视频| 国产在热线精品视频99公交 | 免费费很色大片欧一二区| 亚洲另类丝袜综合网| 人妻伦理在线一二三区| 国产成人无码免费视频在线| 亚洲区一区二区激情文学| av无码一区二区大桥久未| 日韩精品人妻av一区二区三区| 国内精品久久黄色三级乱| 亚洲精品久久久久国色天香| 国产精品亚洲中文字幕| 伊人久久大香线蕉AV网禁呦| 中文成人在线| 亚洲欧洲∨国产一区二区三区| 精品无码av无码专区| 久久91精品牛牛| 日韩精品 在线 国产 丝袜| 亚洲中文字幕人妻系列| 精品亚洲无人区一区二区| 成人片黄网站色大片免费毛片| 丁香五月婷激情综合第九色 | 少妇高潮喷水惨叫久久久久电影 | 日韩人妻无码一区二区三区| 国产精品一二区在线观看| 99riav精品免费视频观看| 98精品全国免费观看视频| 精品久久一线二线三线区| 一本本月无码-| 日本道高清一区二区三区| 国内少妇人妻偷人精品| 禄劝|