C#中的out參數/ref參數/params可變參數

来源:https://www.cnblogs.com/wy0904/archive/2017/12/29/8145202.html
-Advertisement-
Play Games

out參數: out關鍵字 通過引用來傳遞參數,在定義方法和調用方法的時候都必須使用out關鍵字 簡單來講out可以用來返回多個參數類型。 該方法返回類型為bool類型,在返回bool類型的同時也順帶返回了int類型的result變數。即,返回兩種變數類型。 ref參數 ref參數在定義的方法內對其 ...


out參數:

out關鍵字 通過引用來傳遞參數,在定義方法和調用方法的時候都必須使用out關鍵字

簡單來講out可以用來返回多個參數類型。

       static void Main(string[] args)
        {
            string s = "123";
            int result;
            bool b = MyTest(s,out result);
        }
        public static bool MyTest(string s, out int result)
        {
            bool isTrue;
            try {
                result = Convert.ToInt32(s);//使用out參數必須在定義方法內進行賦值
                isTrue = true;
            }
            catch
            {
                isTrue = false;
                result = 0;
            }
            return isTrue;
        }

該方法返回類型為bool類型,在返回bool類型的同時也順帶返回了int類型的result變數。即,返回兩種變數類型。


ref參數

ref參數在定義的方法內對其進行處理,再將結果返回,定義方法無需多餘的返回類型。

ref參數和out 的的區別 out必須在定義方法內部賦值,ref必須在調用方法之前為其實參賦值。

        static void Main(string[] args)
        {
            //使用ref參數來交換兩個數字的值
            int a = 1;
            int b = 2;
            Change(ref a, ref b);
            Console.WriteLine("a{0},b{1}",a,b);
            Console.ReadKey();
        }
        public static void Change(ref int a, ref int b)
        {
            int temp;
            temp = a;
            a = b;
            b = temp;
        }

註意 在定義方法的時候 可以不需要返回值啦~


params可變參數

將實參列表中與可變參數數組類型一致的元素都當做數組的元素去處理。

params可變參數必須是形參的最後一個元素。

 

        static void Main(string[] args)
        {
            //方法一:可以使用數組傳參
            //int[] scores = {22,11,33};
            //test("張三",11,scores)
            //方法二:也可以直接在調用的時候使用和數組類型一致的元素
            test ("張三", 100, 22, 11, 33);
            Console.ReadKey();
        }
        /// <summary>
        /// params測試函數,計算一個同學的總成績
        /// 在params使用的時候必須將其放在最後一個參數,如下所示!
        /// </summary>
        /// <param name="name">姓名</param>
        /// <param name="number">學號</param>
        /// <param name="s">可變數組成績</param>
        public static void test(string name, int number, params int[] s)
        {
            int sum = 0;
            for (int i = 0; i < s.Length; i++)
            {
                sum = sum + s[i];
            }
            Console.WriteLine("{0}的學號是{1},總分為{2}", name, number, sum);
        }

 


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

-Advertisement-
Play Games
更多相關文章
  • 實現簡單的登錄和註冊 步驟: 工程目錄: 1.創建一個動態的web工程 2.導入springMvc所需要的jar包(包含mysql驅動包) 3.配置web.xml步驟: 配置唯一的 Servlet 3.1 增加 servlet和 servlet-mapping 標簽 3.2 配置 servlet 標 ...
  • 昨天同事說微信更新有跳一跳小游戲,便更新了玩一玩。至於抄襲不抄襲我不討論,看玩法和色彩都很簡潔。想用Python試試攝像頭捕捉圖像,然後分析距離每次都能跳到中心,有生物機械手指之類的再弄到樹莓派上豈不是能玩最高分啦。 心路歷程 環境是windows,安裝opencv 需要其他包的可另行下載。 hel ...
  • 1、面向對象的特征有哪些方面? 【基礎】 答:面向對象的特征主要有以下幾個方面: 1)抽象:抽象就是忽略一個主題中與當前目標無關的那些方面,以便更充分地註意與當前目標有關的方面。抽象並不打算瞭解全部問題,而只是選擇其中的一部分,暫時不用部分細節。抽象包括兩個方面,一是過程抽象,二是數據抽象。 2)繼 ...
  • 創建一個文本文件,文本寫至這個文件里。 class Bu { public string fileName { get; set; } = "hello.txt"; public string filecontent { get; set; } public void WriteText2File( ...
  • 廢話: 以前總是看別人博客,但是連評論都懶得給一個,於是心有愧疚,開始寫寫東西。本人不是科班出生的CODER,只是看多了,懂一些,瞭解一些思想,也不會動手CODING,也就把看到的換種話記錄下來。最近瞭解了一下asp.net core 的pipeline,認識了CORS,這篇文章就是把關於CORS的 ...
  • 採用OpenXml來修改word特定內容,如下: word: OpenXml修改word之前: OpenXml修改word之後: 代碼: 1 string path = @"C:\Users\Administrator\Desktop\新建文件夾 (2)\1.docx"; 2 using (Word ...
  • 錯誤描述: 下載ABP模板項目3.4.1的版本(當前最新版本),編譯載入nuget包Microsoft.AspNetCore.SignalR時會報如下錯誤: 嚴重性 代碼 說明 項目 文件 行 禁止顯示狀態 錯誤 NU1102 找不到版本為 (>= 1.0.0-preview1-27891) 的包 ...
  • ServicePoint: 提供HTTP連接的連接管理ServicePointManager: 管理ServicePoint 對象的集合 註意事項:1. 將http的request的keepAlive設置為false //如果不是必須的要keepalive的,那麼就要設置KeepAlive為fals ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...