C#中 ref 和 out 参数的区别

本文深入解析C#中值传递、引用传递及out参数的使用,通过实例演示如何在函数间传递变量,并讨论它们在实际编程中的应用。文章详细解释了值传递与引用传递的区别,以及如何使用out参数实现更灵活的数据传递方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

namespace refout
{
    class Program
    {
        static void Main(string[] args)
        {
            int age = 20;
            Age(age);
            Console.WriteLine("主函数age = {0}", age);
            //Age(ref age);
            //Console.WriteLine("ref主函数age = {0}",age);
            Age(out age);
            Console.WriteLine("out主函数age = {0}", age);

            Console.ReadKey();

        }

        static void Age(int age)  //简单值传递,复制了一份,不影响外部值
        {
            age++;
            Console.WriteLine("值传递----函数内部age = {0}", age);
        }

        //static void Age(ref int age)  //ref必须初始化,因为是引用,引了才能用
        //{
        //    age++;
        //    Console.WriteLine("ref---函数内部age = {0}", age);
        //}

        //内为外赋值,用在函数有多个返回值的场所 弥补了return仅能返回一个值的缺点
        static void Age(out int age)  //out内部赋值,无需初始化,即便初始化了也没有用
        {
            age = 30;   //此函数没有返回值,但是仍可以对外部值进行改变 
            Console.WriteLine("out---函数内部age = {0}", age);
        }


    }
}

out的实例

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

namespace refout
{
    class Program
    {
        static void Main(string[] args)
        {
            string str;
            str = Console.ReadLine();
            int i;
            if (int.TryParse(str, out i)) //函数的作用是将数值型字符串装换成数值,指示返回知否成功bool型  i的值由out返回
            {
                Console.WriteLine("成功 {0}", i);   //成功 i返回转换的数值
            }
            else
            {
                Console.WriteLine("失败 {0}", i);  //失败,i返回0
            }
            
            Console.ReadKey();

        }

    }
}



参考资料:传智播客.Net培训—C#编程基础


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值