目录

一、简介

二、ref 关键字

案例

注意点1

注意点2

三、out 关键字

案例

注意点1

注意点2

四、ref 和 out 关键字的相同点

五、ref 和 out 关键字的不同点

结束


一、简介

在C#中,ref和out关键字用于参数传递的方式。它们允许在方法内部对参数进行修改,并将修改后的值带回到调用方法中。 ref关键字用于传递引用类型的参数。当使用ref关键字传递参数时,方法内部对参数的任何修改都会影响到调用方法中的原始变量。 out 关键字主要用于传递值类型的参数,并且要求在方法内部对参数进行赋值。与ref不同,使用out关键字传递参数时,不需要在调用方法之前对参数进行初始化。

二、ref 关键字

案例

namespace RefAndOut
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int number = 5;
            UpdateValue(ref number);
            Console.WriteLine(number);

            Console.ReadKey();
        }

        static void UpdateValue(ref int value)
        {
            value = 10;
        }
    }
}

运行:

注意点1

ref 传递的变量一定要初始化,否则会报错

 

 

注意点2

ref 参数在方法内不赋值,也不会有任何影响

namespace RefAndOut
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int number = 5;
            string name = "test";
            UpdateValue(ref number, ref name);
            Console.WriteLine(number);
            Console.WriteLine(name);

            Console.ReadKey();
        }

        static void UpdateValue(ref int value, ref string name)
        {
            //value = 10;
            //name = "tt";
        }
    }
}

运行:

 

三、out 关键字

案例

namespace RefAndOut
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int age;
            string name;
            Test(out age, out name);
            Console.WriteLine("age:{0}, name:{1}", age, name);

            Console.ReadKey();
        }

        static void Test(out int age, out string name)
        {
            age = 16;
            name = "张三";
        }
    }
}

运行:

 

注意点1

out 关键字,必须在方法体内部赋值,否则会报错

 

注意点2

使用 out 参数,执行的变量可以不进行初始化

 

 

四、ref 和 out 关键字的相同点

1. 都是通过函数参数传递的方式:

ref 和 out 都是用于按引用传递参数,可以在方法内部修改传递的参数的值。

2.都可以在调用方法之前进行初始化

ref 和 out  都可以在调用方法之前进行初始化,调用方法后,参数的实际值以方法内部的赋值为准。

五、ref 和 out 关键字的不同点

1. 参数的初始化:

使用 ref 关键字传递参数时,参数在调用函数之前必须被初始化(赋值),而使用 out 关键字传递参数时,参数可以在调用的函数内部进行初始化。

2. 方法内部的赋值:

使用 ref 关键字传递参数时,函数内部可以不进行赋值,而使用 out 关键字传递参数时,函数内部必须进行赋值

结束

如果这个帖子对你有所帮助,欢迎 关注 + 点赞 + 留言,谢谢!

end

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐