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

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

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

相同點(diǎn):

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

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

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

不同點(diǎn):

  傳遞到 ref 參數(shù)的參數(shù)必須初始化,否則程序會(huì)報(bào)錯(cuò)。

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)進(jìn)行,否則程序會(huì)報(bào)錯(cuò)。

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;
    }

  }
}

代碼里報(bào)錯(cuò) “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é)果為:

注意點(diǎn):

using System;

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

  }
}

上面代碼會(huì)報(bào)錯(cuò)“ 'Program' cannot define an overloaded method that differs only on parameter modifiers 'out' and 'ref'  ”

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

using System;

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

上面代碼會(huì)報(bào)錯(cuò)“ 'Program' cannot define an overloaded method that differs only on parameter modifiers 'out' and 'ref'  ”

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

using System;

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

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

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

相關(guān)文章

  • C# 爬蟲簡單教程

    C# 爬蟲簡單教程

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

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

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

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

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

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

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

    深入理解C#中的枚舉

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

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

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

    C# ConfigHelper 輔助類介紹

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

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

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

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

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

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

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

最新評(píng)論

开江县| 麻城市| 乌拉特前旗| 绍兴县| 肇东市| 彝良县| 高阳县| 通榆县| 和龙市| 余姚市| 北宁市| 抚顺市| 东乡族自治县| 遵化市| 神木县| 吴忠市| 油尖旺区| 陵川县| 怀柔区| 苗栗县| 信阳市| 海淀区| 城口县| 商丘市| 麻阳| 衡阳市| 凌海市| 颍上县| 航空| 晋江市| 息烽县| 新昌县| 启东市| 靖安县| 凭祥市| 彰化市| 淳安县| 含山县| 南康市| 固始县| 蒙城县|