有关.net编程的几点困惑
我原先是写c++的,现在正在看.net,我有几个疑问始终弄不明白,希望高手能给解答
1.有关函数以对象为参数,传递变量
using System;
namespace TestRef
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
public class c1
{
public int a;
public c1()
{
a = 10;
}
public c1(c1 c)
{
a = c.a;
}
}
public class TestRef
{
public static void f(c1 c)
{
c.a = 20;
}
public static void Main(String[] args)
{
c1 c;
c = new c1();
Console.WriteLine("{0}",c.a);
f(c);
Console.WriteLine("{0}",c.a);
}
}
}
输出的结果是
10
20
原因我也知道,是由于类是引用型的类型。在c++中,我可以在c1类中,写一个拷贝构造函数,在函数传递变量和返回变量的时候,提供一个副本,那样的话,输出结果就可以是10,10了,那么在.net里有没有类似的机制。Clone()方法需要手动的去调用,那么是不是如果需要,要在函数的入口出写上Clone()呢,还是有其他的方法,还是我用c++的思考方法,去考虑.net了
我知道在String中实现了,但是,String返回的新的字符串,那究竟是怎么做的
第二个问题,在msdn中讲.net不支持=的重载,但是我看到很多书上都讲string对=进行了重载,那么到底能不能重载