C# OUT 参数

来源:互联网 发布:淘宝网鱼缸刷 编辑:程序博客网 时间:2024/04/30 02:42

 如果我们的方法需要有多个返回值的时候,一方面我们可以把返回值放到一个集合里。但是,如果返回值的类型不一致,那么方法调用者容易模糊了。使用以及维护都比较麻烦。out参数就为这种问题,提供了一种解决方法。

public void A(out StringBuilder sb){}

public void B(){

//调用方法A

}

使用限制:

1.方法B在调用方法A的时候也需要在参数之前添加out关键字

2.out参数在方法A中可以是未被初始化的,即使参数是B中定义的局部变量

3.不管out参数在方法B中是否被初始化,在方法A内部都需要显示初始化的。

 

 public void paramOut(int i, out StringBuilder sb)
 {

       //显示初始化
       sb = new StringBuilder();
       sb.Append("......");
}

 

其实,如果我们需要在方法A中返回StringBuilder,不使用out参数也是可以的,如下:

        public void A(StringBuilder sb)
        {
            sb.Append("zoucq");
        }

调用者

         public void B()
        {

            StringBuilder sb = new StringBuidler();
            A(sb);       

        }

原因就是我们传递的参数StringBuilder 是个对象。参数都是传值的,但是对象类型参数,传递的值是复制了指向保存对象的内存地址。

如果是参数是String,使用或不使用Out就不一样了,原因就是string是不可以改变的

 

个人以为:out参数更像是起到一个指示作用,提示使用者这个参数的作用。

方式的提供者与使用者间如果不是同一人,或者彼此之间没有沟通,那么添加一个out限制,就可以让调用者更明确了

原创粉丝点击