C#下ref和out关键字使用

首先先看下边的程序

class Program
    {
        static void Main(string[] args)
        {
           
            int t1 = 100;
            Test1(ref t1);
            Console.WriteLine(t1);
            int t2;
            Test2(out t2);
            Console.WriteLine(t2);
            Console.ReadLine();
        }
        public static void Test1(ref int t)
        {
            Console.Write(t);
            t = 200;
            Console.WriteLine(t);
        }

        public static void Test2(out int t)
        {
            t = 100;
        }
      
       

    }

返回值

依次为

100

200


200

100


有问题的欢迎和我联系  我觉得这个例子就很具体了 pridescc@126.com
C#中,refout关键字都用于通过引用传递参数,但它们存在一些区别: 1. **初始化要求**:使用ref型参数时,传入的参数必须先被初始化;而对于out参数,不必在传递之前初始化变量,但必须在方法中对其完成初始化[^2]。 2. **数据流向**:ref可以把参数的数值传递进函数,是“有进有出”;而out要把参数清空,无法将一个数值从out传递进去,是“只出不进”[^2]。 3. **关键字使用**:使用refout时,在方法的参数执行方法时,都要加refout关键字以满足匹配[^2]。 4. **使用场景**:out适合用在需要return多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候[^2]。 以下是refout的示例代码: ```csharp // ref示例 public class Program { static void Main(string[] args) { string message = "你好!"; // 原值 SendMessage(ref message); // 使用ref,如果方法内进行了修改,原值就被修改了 // 使用ref必须在进入方法前初始化值。 Console.WriteLine(message); Console.Read(); // 将当前窗体保留 } public static void SendMessage(ref string message) { message = "不好!"; Console.WriteLine(message); } } // out示例 public class Program { static void Main(string[] args) { string message; GetMessage(out message); Console.WriteLine(message); Console.Read(); } public static void GetMessage(out string message) { message = "这是out返回的消息"; } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值