一整天都在我的脑海中萦绕着这种困惑。
我对传递给方法的引用类型和值类型感到非常困惑。
假设我有 2 节课Class A and Class B分别对应于引用类型和值类型。
public Class A
{
public static void main(string[] args)
{
String s = “hello”;
String w = Changestring(s);
String x = s;
}
private string Changestring(string s)
{
s += “Hi”;
return s;
}
}
.
public Class B
{
public static void main(string[] args)
{
int s = 99;
int w = Changeint(s);
int x = s;
}
private int Changeint(int s)
{
s += 30;
return s;
}
}
我对将引用类型(字符串)和值类型(int)作为参数传递给函数感到困惑。
当我运行这样的程序时,字符串(引用类型)的 x 本身是“hello”,值类型的 x 是 99。 x 应该是“HelloHi”而不是“hello”,因为它是引用类型?
请帮我解答这个简单的疑问。
Beside Reference Type
and Value Type
, 有Mutable Type
and Immutable Type
.
Immutable
意味着对象在初始化后不能也不会被更改。因此,您的语句仅生成新字符串,但不会修改原始字符串。
s+=“嗨”;
The hello
字符串对象仍然存在hello
。改变的是s
被分配了一个新对象helloHi
.
你很不幸地使用string
举个例子。
尝试使用可变类型,例如StringBuilder
在你的例子中。
public class C
{
public static void Main(string[] args)
{
StringBuilder s = new StringBuilder("hello");
StringBuilder w = Changestring(s);
StringBuilder x = s;
}
private static StringBuilder Changestring(StringBuilder s)
{
s.Append("Hi");
return s;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)