最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C# ref and out的使用小結(jié)

 更新時間:2021年03月08日 08:45:56   作者:LeeMacrofeng  
這篇文章主要介紹了C# ref and out的使用小結(jié),幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下

相同點:

  1. ref 和 out 都是按地址傳遞的,使用后都將改變原來參數(shù)的數(shù)值;

  2. 方法定義和調(diào)用方法都必須顯式使用 ref 或者 out關(guān)鍵字;

  3. 通過ref 和 ref 特性,一定程度上解決了C#中的函數(shù)只能有一個返回值的問題。

不同點:

  傳遞到 ref 參數(shù)的參數(shù)必須初始化,否則程序會報錯。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
  class Program
  {
    static void Main(string[] args)
    {
      int a = 1;
      int b = 2;
      Fun(ref a,ref b);
      Console.WriteLine("a:{0},b:{1}", a, b);//輸出:3和4說明傳入Fun方法是a和b的引用
    }
    static void Fun(ref int a, ref int b) {
      a = 3; 
      b = 4;
    }
  }
}

  out關(guān)鍵字無法將參數(shù)值傳遞到out參數(shù)所在的方法中, out參數(shù)的參數(shù)值初始化必須在其方法內(nèi)進行,否則程序會報錯。

using System.Text;

namespace ConsoleApp1
{
  class Program
  {
    static void Main(string[] args)
    {
      int a = 100;
      int b;
      Fun(out a, out b);
      Console.WriteLine("a:{0},b:{1}", a, b);
    }

    static void Fun(out int a, out int b)
    {
      //a = 1+2;
      if (a == 100)
        a = 2;

      b = 1;
    }

  }
}

代碼里報錯 “Use of unassigned out parameter 'a' ”  

下面的代碼是正確的。

using System;

namespace ConsoleApp1
{
  class Program
  {
    static void Main(string[] args)
    {
      int a = 100;
      int b;
      Fun(out a, out b);
      Console.WriteLine("a:{0},b:{1}", a, b);
    }

    static void Fun(out int a, out int b)
    {
      a = 1+2;

      b = 1;
    }

  }
}

輸出結(jié)果為:

注意點:

using System;

namespace ConsoleApplication1
{
  class Program
  {
    public void SampleMethod(ref int i) { }
    public void SampleMethod(out int i) { }

  }
}

上面代碼會報錯“ 'Program' cannot define an overloaded method that differs only on parameter modifiers 'out' and 'ref'  ”

盡管 ref 和 out 在運行時的處理方式不同,但在編譯時的處理方式相同。因此,如果一個方法采用 ref 參數(shù),而另一個方法采用 out 參數(shù),則無法重載這兩個方法。例如,從編譯的角度來看,以下代碼中的兩個方法是完全相同的,因此將不會編譯上面的代碼。

using System;

namespace ConsoleApplication1
{
  class Program
  {
    public void SampleMethod(int i) { }
    public void SampleMethod(ref int i) { }
  }
}

上面代碼會報錯“ 'Program' cannot define an overloaded method that differs only on parameter modifiers 'out' and 'ref'  ”

盡管 ref 和 out 在運行時的處理方式不同,但在編譯時的處理方式相同。因此,如果一個方法采用 ref 參數(shù),而另一個方法采用 out 參數(shù),則無法重載這兩個方法。例如,從編譯的角度來看,以下代碼中的兩個方法是完全相同的,因此將不會編譯上面的代碼。

using System;

namespace ConsoleApplication1
{
  class Program
  {
    public void SampleMethod(int i) { }
    public void SampleMethod(ref int i) { }
  }
}

但是,如果一個方法采用 ref 或 out 參數(shù),而另一個方法不采用這兩個參數(shù),則可以進行重載。

以上就是C# ref and out的使用小結(jié)的詳細內(nèi)容,更多關(guān)于C# ref and out的使用的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C# 爬蟲簡單教程

    C# 爬蟲簡單教程

    這篇文章主要介紹了C# 爬蟲的簡單教程,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-12-12
  • C#中事務(wù)處理和非事務(wù)處理方法實例分析

    C#中事務(wù)處理和非事務(wù)處理方法實例分析

    這篇文章主要介紹了C#中事務(wù)處理和非事務(wù)處理方法,較為詳細的分析了C#中事務(wù)處理與非事務(wù)處理的使用技巧,對于使用C#進行數(shù)據(jù)庫程序開發(fā)有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • 共享鎖using范圍的實現(xiàn)方法

    共享鎖using范圍的實現(xiàn)方法

    共享鎖using范圍的實現(xiàn)方法,需要的朋友可以參考一下
    2013-04-04
  • 淺談C#數(shù)組(一)

    淺談C#數(shù)組(一)

    本篇文章小編要得大家介紹的是C#數(shù)組,數(shù)組是一種數(shù)據(jù)結(jié)構(gòu),它可以包含同一個類型的多個元素,如果需要使用同一類型的多個對象,可以使用數(shù)組和集合,需要的朋友可以參考下面文章的具體內(nèi)容
    2021-09-09
  • 深入理解C#中的枚舉

    深入理解C#中的枚舉

    本篇文章主要是對C#中的枚舉進行了詳細的分析介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • C#和Java有什么區(qū)別和聯(lián)系

    C#和Java有什么區(qū)別和聯(lián)系

    這篇文章主要介紹了C#和Java有什么區(qū)別和聯(lián)系的相關(guān)資料,本文介紹的非常詳細,涉及到rsa語法,c#和java互轉(zhuǎn)方面的知識點,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-07-07
  • C# ConfigHelper 輔助類介紹

    C# ConfigHelper 輔助類介紹

    ConfigHelper(包含AppConfig和WebConfig), app.config和web.config的[appSettings]和[connectionStrings]節(jié)點進行新增、修改、刪除和讀取相關(guān)的操作。
    2013-04-04
  • C#中實現(xiàn)查找字符串中指定字符位置方法小結(jié)

    C#中實現(xiàn)查找字符串中指定字符位置方法小結(jié)

    這篇文章主要為大家介紹了C#中實現(xiàn)查找字符串中指定字符位置的常用方法,本文將以"."字符為例,詳細講解這些方法的具體使用,需要的可以參考下
    2024-02-02
  • Unity Shader實現(xiàn)水波紋效果

    Unity Shader實現(xiàn)水波紋效果

    這篇文章主要為大家詳細介紹了Unity Shader實現(xiàn)水波紋效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • C#中生成DLL及其事件的處理

    C#中生成DLL及其事件的處理

    在C#中,創(chuàng)建動態(tài)鏈接庫是一個常見的任務(wù),本文主要介紹了C#中生成DLL及其事件的處理,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01

最新評論

武陟县| 尖扎县| 瓦房店市| 桦川县| 钟祥市| 滕州市| 海晏县| 大庆市| 浏阳市| 迭部县| 阿拉尔市| 桃江县| 永州市| 郎溪县| 鲁甸县| 德令哈市| 彰化市| 兰考县| 定远县| 漳浦县| 兰州市| 达日县| 贵溪市| 鄢陵县| 海伦市| 张掖市| 安远县| 宜宾市| 东山县| 民权县| 碌曲县| 西青区| 南乐县| 青神县| 临漳县| 九江县| 龙川县| 万源市| 弥勒县| 乌拉特中旗| 沙坪坝区|