C#如何使用String获取引用类型行为?

Alb*_*ano 1 c# reference-type

这个常见的代码示例经常用来解释值类型和引用类型之间的区别,这个问题来找我:

class Rectangle
{
    public double Length { get; set; }
}

struct Point 
{
    public double X, Y;
}

Point p1 = new Point();
p1.X = 10;
p1.Y = 20;
Point p2 = p1;
p2.X = 100;
Console.WriteLine("p1.X = {0}", p1.X);

Rectangle rect1 = new Rectangle
{ Length = 10.0, Width = 20.0 };
Rectangle rect2 = rect1;
rect2.Length = 100.0;
Console.WriteLine("rect1.Length = {0}",rect1.Length);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,第二个Console.WriteLine语句将输出:"rect1.Length = 100"

在这种情况下,类是引用类型,struct是值类型.如何使用字符串演示相同的引用类型行为?

提前致谢.

Sim*_*ead 5

你不能.字符串是不可变的..这意味着你不能直接更改它们.对字符串的任何更改实际上都是返回的新字符串.

因此,这(我假设你的意思):

string one = "Hello";
string two = one;

two = "World";

Console.WriteLine(one);
Run Code Online (Sandbox Code Playgroud)

..将打印"你好",因为two现在是一个全新的字符串并one保持不变.