书上有这样一段内容?有点不懂?

来源:百度知道 编辑:UC知道 时间:2024/07/04 08:08:04
using System;
class stringExpample
{
public static int Main()
{
string s1="a string";
string s2=s1;
Console.WriteLine("s1 is"+s1);
Console.WriteLine("s2 is"+s2);
s1="another string";
Console.WriteLine("s1 is now"+s1);
Console.WriteLine("s1 is now"+s2);
return 0;
}
}
换言之,改变S1的值对木没有影响,这与我们期待的引用类型正好相反。当用
值“a string”初始化S1时,就在堆上分配了一新的string 对象。在初始化
S2时,引用也指向这个对象。
所以S2的值也是“a string” .但是现在要改变S1的值。而不是替换原来的值时
,堆上就会为新的值分配一个新的对象。S2变量仍指向原来的对象,所以它的值没有改变。这实际上是运算符重载的结果。

我知道函数的重载,但不太知道运算符的重载,举例说说看

运算符的重载和函数重载一样,你可以把运算符理解成函数(实际上运算符就是函数)
比如:int a = 1;float b = 1.2, c = 2.3;
float d = a + b;// 这里调用了 float Add(int, float)这样一个函数,只不过函数名是 +,而不是Add
float d = b + c;// 这里调用了 float Add(float, float)这样一个函数,只不过函数名是 +,而不是Add

运算符重载,与函数重载的方式是一样的,只是会多加一个关键字operator,如
public static int operator+(string a, string b){
return int.Parse(a) + int.Parse(b);
}
写了上面这个方法后,你就可以用 int d = "12" + "34"了