c#中out与ref的用法与区别

简介:
< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd>

c#中out与ref的用法与区别

1、out必须在函数体内初始化,在外面初始化没意义。也就是说,out型的参数在函数体内不能得到外面传进来的初始值。
2、ref必段在函数体外初始化。
3、两都在函数体的任何修改都将影响到外面。

例:

using System;

namespace ConsoleApplication1
{
class C
{
   public static void reffun(ref string str)
   {
    str += " fun";
   }

   public static void outfun(out string str)
   {
    str = "test";      //必须在函数体内初始
    str += " fun";
   }
}

class Class1
{
   [STAThread]
   static void Main(string[] args)
   {
    string test1 = "test";
    string test2;                   //没有初始
    C.reffun( ref test1 );      //正确
    C.reffun( ref test2 );      //错误,没有赋值使用了test2
    C.outfun( out test1 );     //正确,但值test传进去
    C.outfun( out test2 );     //正确

    Console.Read();
   }
}
}

本文转自 netcorner 博客园博客,原文链接:http://www.cnblogs.com/netcorner/archive/2007/10/12/2912285.html  ,如需转载请自行联系原作者

相关文章
|
1月前
|
安全 C#
C# List基本用法
C# List基本用法
|
1月前
|
C#
C# Dev chartControl的用法
C# Dev chartControl的用法
|
2月前
|
C#
C#学习相关系列之yield和return的区别
C#学习相关系列之yield和return的区别
|
2月前
|
安全 编译器 C#
C#学习相关系列之多线程---lock线程锁的用法
C#学习相关系列之多线程---lock线程锁的用法
|
2月前
|
C#
C#学习相关系列之多线程---ConfigureAwait的用法
C#学习相关系列之多线程---ConfigureAwait的用法
|
2月前
|
C#
C#学习相关系列之多线程---TaskCompletionSource用法(八)
C#学习相关系列之多线程---TaskCompletionSource用法(八)
|
2月前
|
Java C#
C#学习系列相关之多线程(五)----线程池ThreadPool用法
C#学习系列相关之多线程(五)----线程池ThreadPool用法
|
2月前
|
开发框架 .NET C#
C#学习相关系列之Linq用法---where和select用法(二)
C#学习相关系列之Linq用法---where和select用法(二)
|
3天前
|
C#
c#一文读懂continue、return、break区别
c#一文读懂continue、return、break区别
8 0
|
2月前
|
安全 C#
c#学习相关系列之as和is的相关用法
c#学习相关系列之as和is的相关用法