posts - 206,  comments - 26,  views - 17万
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8
复制代码
out的使用

————————————————————————————————————————————————— 

   class Program
    {
        static void Main(string[] args)
        {

     string tmp;    //先声明,但不初始化

     User _user=new User();      

     _user.Name(out tmp);        //调用Name方法

              Console.WriteLine("{0}",tmp); //这时tmp的值为“在这里面赋值了”

              Console.ReadKey(true);

   }

     }

  class User

      {

    public void Name(out string tmps)

           {

       tmps="在这里面赋值了";

           }

      }

       //结果:

              //在这里面赋值了
————————————————————————————————————————————————— ref的使用 —————————————————————————————————————————————————
class Program { static void Main(string[] args) {      string tmp="传值之前"; //声明并初始化 这时如果输出tmp值为"传值之前"    User _user=new User(); _user.Name(ref tmp); Console.WriteLine("{0}",tmp); Console.ReadKey(true); } } class User { public void Name(ref string tmps) { tmps="传值之后"; } } // 结果: //传值之后 ————————————————————————————
复制代码
      Person p = new Person() { Age = 17, Name = "张明" };
            //TestRef2(ref p);
            //Console.WriteLine(p.Name);
            Test3(p);
            Console.WriteLine(p.Name);   
复制代码
  static void TestRef2(ref Person p)
        {
            p = new Person() { Name = "小明" };
            //p.Name = "李雷";
        }
        static void Test3(Person p)
        {
            // p = new Person() { Name = "花花" };
            p.Name = "李雷";
        }
复制代码
        //1. ref/out是用来修饰方法的参数的.
        //2. 调用的时候 给ref/out赋值  不能赋值1个常量 只能给变量. 变量前面也要加1个ref/out
        //3. 在给ref/out参数赋值的时候,赋值的是变量的地址.
        //4. ref在方法中可以对其值不修改.
        //5. ref 在传递之前必须赋值.

 

区别:

ref和out的区别在C# 中,既可以通过值也可以通过引用传递参数。通过引用传递参数允许函数成员更改参数的值,并保持该更改。若要通过引用传递参数, 可使用ref或out关键字。ref和out这两个关键字都能够提供相似的功效,其作用也很像C中的指针变量。它们的区别是:

1、使用ref型参数时,传入的参数必须先被初始化。对out而言,必须在方法中对其完成初始化。

2、使用ref和out时,在方法的参数和执行方法时,都要加Ref或Out关键字。以满足匹配。

3、out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候. ref传递的是变量的地址侧重于修改

out

方法参数上的 out 方法参数关键字使方法引用传递到方法的同一个变量。当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。

当希望方法返回多个值时,声明 out 方法非常有用。使用 out 参数的方法仍然可以返回一个值。一个方法可以有一个以上的 out 参数。

若要使用 out 参数,必须将参数作为 out 参数显式传递到方法。out 参数的值不会传递到 out 参数。

不必初始化作为 out 参数传递的变量。然而,必须在方法返回之前为 out 参数赋值。

属性不是变量,不能作为 out,ref 参数传递。

 

ref是    有进有出,而out是       只出不进。

posted on   努力--坚持  阅读(389)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
点击右上角即可分享
微信分享提示