ref 传递引用的问题

.Net技术 码拜 8年前 (2016-05-23) 815次浏览
原因是本人不想无意义的拷贝很多份同一个值
所以脑洞大开想了下面这个方法

string str= "hello world."; 
Queue<ref string> queue = new Queue<ref string>();
queue.Enqueue(ref str);

但是不行。queue不接受带ref的形式。
莫非得本人写一个QUEUE类才能解决?
求前辈指点一二。感激不尽!

解决方案

5

你这种想法,暂时行不通,泛型不支持ref关键字。
什么叫“无意义的拷贝很多份同一个值”?

10

为什么要ref?假如你真要这样,那你用类就可以了

class Container
{
public string Key{get;set;}
}

5

C#中值类型变量(包括string)默认都是传值,其它各种类变量默认传引

10

引用:
Quote: 引用:

C#中值类型变量(包括string)默认都是传值,其它各种类变量默认传引

http://blog.csdn.net/vrhero/article/details/5166278

看了下博客,里面说的才是正确的,从一般人的理解上传引和传值的区别在于函数体内对参数的修改能否超出该函数作用域。
对于引用型变量默认还是传值,但是传进来的参数其实可以理解为一个浅复制的副本。

5

假如是copy,你怎么解释这个?

string x(string str)
{
    return str;
}
string A = "123";
Console.WriteLine(object.ReferenceEquals(A, x(A)));

5

假如不是 copy,你同样也不能解释这个

        static string X(string str)
        {
            str = "abc";
            return str;
        }
            string A = "123";
            Console.WriteLine("{0} {1}", A, X(A));

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明ref 传递引用的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)