本文介绍了'ref'问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



公共类stringtemp

{

字符串k;

public stringtemp(ref String inp)

{

k = inp;

}

public void更改()

{

k = k。移除(0,1);

}

};


String stringtochange = new String(" Hello" .ToCharArray());

stringtemp t = new stringtemp(ref stringtochange);

t.Change();


为什么这里没有将stringtochange更改为''ello''?当我使用ArrayList而不是String尝试类似的样本

时,我的原始变量会被反映出来。

所以我的问题是:我怎样才能确保我在运行引用?

文档说所有类类型都通过引用传递。有人可以详细说明吗?


TIA

解决方案




字符串 class isn''ta引用类型 - 它是一个值类型,所以在:


public stringtemp(ref String inp)

{

k = inp;

}


即使你正在引用inp,''k = inp''仍然作为一个值完成

赋值。


为了做你想做的事,你必须把''string inp''作为

另一个类的成员,并传递类实例而不是字符串

本身。


-

-mdb






public class stringtemp
{
String k ;
public stringtemp(ref String inp)
{
k = inp ;
}
public void Change()
{
k = k.Remove(0, 1) ;
}
};

String stringtochange = new String("Hello".ToCharArray()) ;
stringtemp t = new stringtemp(ref stringtochange) ;
t.Change() ;

Why isnt stringtochange changed to ''ello'' here? When I try a similar sample
with an ArrayList instead of a String, my original variable gets reflected.
So my question is: How can i make sure i am operating on a reference?
Documentation says all class types are passed by references. Could someone
elaborate?

TIA


解决方案



The "string" class isn''t a reference type - its a value type, so in:

public stringtemp(ref String inp)
{
k = inp ;
}

even though you are ref''fing inp, the ''k=inp'' is still done as a value
assignment.

In order to do what you want, you''ll have to put the ''string inp'' as a
member of another class, and pass the class instance instead of the string
itself.

--
-mdb





这篇关于'ref'问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-19 17:22