關鍵字ref、out

来源:https://www.cnblogs.com/Duancf/archive/2019/08/30/11436526.html
-Advertisement-
Play Games

通常,變數作為參數進行傳遞時,不論在方法內進行了什麼操作,其原始初始化的值都不會被影響; 例如: public void TestFun1() { int arg = 10; TestFun2(arg); Console.WriteLine(arg); Console.ReadKey(); } pu ...


通常,變數作為參數進行傳遞時,不論在方法內進行了什麼操作,其原始初始化的值都不會被影響;

例如:

  public void TestFun1()
        {
            int arg = 10;
            TestFun2(arg);
            Console.WriteLine(arg);
            Console.ReadKey();

        }
        public void TestFun2(int x)
        {
            x++;
        }
View Code

通過執行

test1 t = new test1();
t.TestFun1();

其結果輸出:10

那麼問題來了,如果想要操作有影響要怎麼做呢?

簡單的操作:添加ref關鍵字

 public void TestFun1()
        {
            int arg = 10;
            TestFun2(ref arg);
            Console.WriteLine(arg);
            Console.ReadKey();

        }
        public void TestFun2(ref int x)
        {
            x++;
        }
View Code

執行結果:

即:形參附加ref首碼,作用於參數的所有操作都會作用於原始實參(參數和實參引用同一個對象);

 

 

out關鍵字:

  為形參附加out首碼,使參數成為實參的別名。向一個方法傳遞out參數之後,必須在方法內部對其進行賦值,因此調用方法時不需要對實參進行初始化。(註:如果使用了out關鍵字,但方法內沒有對參數進行賦值,編譯器無法進行編譯)如果在調用方法前已經對實參初始化,調用方法後參數的值會發生改變,變為方法內賦的值;

        public void TestFun_out1()
        {
            int arg1;
            int arg2 = 10;
            TestFun_out2(out arg1, out arg2);
            Console.WriteLine("arg1:{0}\narg2:{1}", arg1, arg2);
            Console.ReadKey();
        }
        public void TestFun_out2(out int x , out int y)
        {
            x = 20;
            y = 30;
        }    
View Code

執行結果:

 


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

-Advertisement-
Play Games
更多相關文章
  • 12.33 Django框架簡介: MVC,全名是Model View Controller,是軟體工程中的一種軟體架構模式,把軟體系統分為三個基本部分:模型(Model)、視圖(View)和控制器(Controller),具有耦合性低、重用性高、生命周期成本低等優點 Django框架的設計模式借鑒 ...
  • 1.下載idlex-1.18.zip 網址:https://zh.osdn.net/projects/sfnet_idlex/ 2.解壓idlex-1.18.zip 2.解壓idlex-1.18.zip (1)將LineNumbers.py(idlex-1.18\idlexlib\extension ...
  • 緩存雪崩 緩存雪崩是由於原有緩存失效(過期),新緩存未到期間。所有請求都去查詢資料庫,而對資料庫CPU和記憶體造成巨大壓力,嚴重的會造成資料庫宕機。從而形成一系列連鎖反應,造成整個系統崩潰。 解決方法: 一般併發量不是特別多的時候,使用最多的解決方案是加鎖排隊。 給每一個緩存數據增加相應的緩存標記,記 ...
  • 安裝 urllib庫更適合寫爬蟲文件,scrapy更適合做爬蟲項目。 步驟: 1. 先更改pip源,國外的太慢了,參考:https://www.jb51.net/article/159167.htm 2. 升級pip:python m pip install upgrade pip 3. pip i ...
  • 摘要: 在 的自動裝配事務裡面, , ,`PlatformTransactionManager InfrastructureAdvisorAutoProxyCreator TransactionInterceptor Spring`事務的核心角色。 支撐著整個事務功能的架構,邏輯還是相對複雜的,那麼 ...
  • docker dotnet Restore 的時候報錯, 一度懷疑是linux的dotnet core sdk沒有裝好, 卸了裝, 裝了卸, 試了好幾遍還是無效(Microsoft.Common.CurrentVersion.targets 這個文件的確又是存在的), 找度娘也沒找到解決方案, /u ...
  • 一、訪問修飾符 訪問修飾符有public、private、protected、internal和protected internal。它們是修飾在類型(類、介面、委托、結構和枚舉)和類型成員(欄位、屬性、方法、構造函數等等)上控制其訪問許可權的關鍵字。 訪問修飾符雖然是修飾在類型和類型成員上的,但它卻 ...
  • 本節將介紹如何進行業務項目搭建。 本業務項目示例是簡單的企業信息管理功能,業務項目採用Code First方式,搭建包括: 搭建完項目效果: 1、創建實體項目-ShiQuan.Company.Entity 創建企業信息實體 示例中企業信息包括:編號、名稱、負責人、聯繫人、聯繫電話、聯繫地址等 2、創 ...
一周排行
    -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# ...