命名實參和可選實參 Named and Optional Arguments

来源:http://www.cnblogs.com/xiao9426926/archive/2016/09/02/5832368.html
-Advertisement-
Play Games

1. 利用“命名實參”,您將能夠為特定形參指定實參,方法是將實參與該形參的名稱關聯,而不是與形參在形參列表中的位置關聯。 static void Main(string[] args) { Console.WriteLine(CalculateBMI(weight: 123, height: 64) ...


1. 利用“命名實參”,您將能夠為特定形參指定實參,方法是將實參與該形參的名稱關聯,而不是與形參在形參列表中的位置關聯。

static void Main(string[] args)
{
      Console.WriteLine(CalculateBMI(weight: 123, height: 64)); //實參命名
      Console.WriteLine();

}

static int CalculateBMI(int weight,int height)
{
       return (weight * 703) / (height * height);
}

有了命名實參,您將不再需要記住或查找形參在所調用方法的形參列表中的順序。 可以按形參名稱指定每個實參的形參。

下麵的方法調用都可行:

CalculateBMI(height: 64, weight: 123);

命名實參可以放在位置實參後面,如此處所示。

CalculateBMI(123, height: 64);

但是,位置實參不能放在命名實參後面。 下麵的語句會導致編譯器錯誤。

//CalculateBMI(weight: 123, 64);

 

2. 方法、構造函數、索引器或委托的定義可以指定其形參為必需還是可選。 任何調用都必須為所有必需的形參提供實參,但可以為可選的形參省略實參。

static void Main(string[] args)
{

ExampleClass anExample = new ExampleClass(); 

anExample.ExampleMethod(1, "One", 1);
anExample.ExampleMethod(2, "Two");
anExample.ExampleMethod(3);

ExampleClass anotherExample = new ExampleClass("Provided name");
anotherExample.ExampleMethod(1, "One", 1);
anotherExample.ExampleMethod(2, "Two");
anotherExample.ExampleMethod(3);
anotherExample.ExampleMethod(4, optionalInt: 4);//運用實參命名,可以跳過之前的可選實參
//anotherExample.ExampleMethod(4, 4) 這樣要報錯,不能中間預設跳過某幾個可選實參,要依次給之前出現的可選實參賦值

}

class ExampleClass

{

private string _name;
public ExampleClass (string name="default name") //構造函數的參數為可選實參
{
       _name = name;
}
public void ExampleMethod(int reqired, string optionalstr = "default string", int optionalInt = 10) //第一個為必需實參,後兩個為可選實參
{
      Console.WriteLine("{0}:{1},{2} and {3}", _name, reqired, optionalstr, optionalInt);
}

}

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 頁面設計需求,做了一個氣泡形狀的彈出框,效果如下: 設計思路如下: 1. 使用Path繪製氣泡的尖尖,將這個放到頂層; 2. 在用border繪製長方形框,將這個放到底層,並且設置Margin值,使得Path圖層和border看起來銜接在一起。 代碼如下: 後臺代碼,很簡單,就是控制pupup顯示或 ...
  • 開始使用 LINQ 在此之前曾發表過三篇關於 LINQ 的隨筆: 進階:《LINQ 標準查詢操作概述》(強烈推薦) 技巧:《Linq To Objects - 如何操作字元串》 和 《Linq To Objects - 如何操作文件目錄》 現在,自己打算再整理一篇關於 LINQ 入門的隨筆。 序 語 ...
  • 第一次在博客園發表文章,不多說,先上系統截圖。此系統是自己全程參與項目過程,從前期的技術方案整理到整個項目驗收,具體功能代碼實現,後續發表。 1、登錄: 2、客戶端主頁面 3、系統-切換機組伺服器 4、系統-配置伺服器 5、系統-數據下載 6、系統-更換皮膚 7、基礎數據-承包商檢驗人員 8、基礎數 ...
  • 字元串必須是數字,不要超過轉換成目標數字類型的範圍。超過的話系統也會報錯(溢出)。 static void Main(string[] args) { string s; int i; Console.WriteLine("please enter a number"); s = Console.R ...
  • 系統代碼是平臺內置的、通用的、統一的數據描述。代碼管理(數據字典)是整個平臺中數據描述的有效機制。通過界面進行可視化的操作和維護,能快速錄入和修改平臺上統一的字典數據。有效提高了數據的重覆利用率和產品、項目的開發效率。整個數據字典數據為框架平臺所共用,用戶可以更好地對系統進行自定義管理,以滿足自己的... ...
  • 一、項目背景: 最近,做項目,因為是金融項目,客戶登錄交易的時候,有一個提示框,就是告知客戶要“入市需謹慎”等等,想必大家都遇到這樣的場景,當然,這種提示是沒人會看的,不過作為交易所,這樣的提示又必不可少的。 其實只有一個要求: 必須客戶讀完“確定”按鈕和CheckBox才會生效 客戶只要把滾動條拉 ...
  • 刪除引用中的該dll,重新引用選擇解決方案下的項目引用,下次F12就不會進入到元數據而是進入到源代碼中方便調試 ...
  • 近來一直翻閱國內網站,發現擴展欄位的時候僅僅做到了可以註冊時候添加,並修改資料庫,但是後續的操作就沒有了,那麼列如我添加了昵稱欄位,怎麼顯示呢?不知是不是因為我剛入門的原因,一直沒有找不到方法,最後再國外論壇找到了方法。核心為下麵4句話,簡單記錄,晚上後續展開修改 指路地址 https://blog ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...