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

[复制链接]
查看11 | 回复1 | 2009-3-17 09:27:40 | 显示全部楼层 |阅读模式
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变量仍指向原来的对象,所以它的值没有改变。这实际上是运算符重载的结果。
我知道函数的重载,但不太知道运算符的重载,举例说说看

回复

使用道具 举报

千问 | 2009-3-17 09:27:40 | 显示全部楼层
运算符的重载和函数重载一样,你可以把运算符理解成函数(实际上运算符就是函数)比如:int a = 1;float b = 1.2, c = 2.3; float d = a + b;// 这里调用了 float Add(int, float)这样一个函数,只不过函数名是 +,而不是Addfloat d = b + c;// 这里调用了 float Add(float, float)这样一个函数,只不过函数名是 +,而不是Add运算符重载,与函数重载的方式是一样的,只是会多加一个关键字operator,如public static int operator+(string a, string b){return int.P...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行