c#对象赋值,返回,和参数传递注意事项
2012-11-17 19:58
591 查看
c#对象赋值,返回,和参数传递都是引用方式进行的,用惯c++的就要注意这个特征
namespace WindowsFormsApplication1 { public partial class Form1 : Form { private Hashtable mMyTable = new Hashtable(); private int mMyInt = 0; public Form1() { InitializeComponent(); } private Fool GetFool(string strName) { return (Fool)mMyTable[strName]; } private int GetInt() { return mMyInt; } private void button1_Click(object sender, EventArgs e) { Fool myfool = new Fool(); myfool.mName = "First"; myfool.mValue = 100; mMyTable.Add("first", myfool); //c#对象值传递都是默认传递引用 Fool fool = (Fool)mMyTable["first"]; fool.mValue = 200;//会影响hashtable里面的值 MessageBox.Show(((Fool)mMyTable["first"]).mValue.ToString()); fool.mValue = 300;//会影响hashtable里面的值 MessageBox.Show(GetFool("first").mValue.ToString()); //哪怕你预先new一个对象也好 Fool fool1 = new Fool(); fool1 = GetFool("first"); fool1.mValue = 400;//会影响hashtable里面的值 MessageBox.Show(GetFool("first").mValue.ToString()); //这回才是真正的传递内存拷贝,需要实现 ICloneable 接口中的 object Clone() Fool fool2 = (Fool)GetFool("first").Clone(); fool2.mValue = 500;//不会影响hashtable里面的值 MessageBox.Show(GetFool("first").mValue.ToString()); //注意基本数据类型还是默认传值 int intval = GetInt(); intval++; MessageBox.Show(GetInt().ToString()); } } }
class Fool : ICloneable { public string mName = ""; public int mValue = 0; public object Clone() { return this.MemberwiseClone(); } }
相关文章推荐
- CComPtr对象作为参数进行 1.值传递 2.引用传递 3.做为返回值的注意事项
- .net对象作为参数传递的注意事项
- C#使用ExecuteReader返回DataReader既有查询结果集又有输出参数和返回值的使用注意事项
- C#使用ExecuteReader返回DataReader既有查询结果集又有输出参数或返回值的使用注意事项
- 当一个对象被当做参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- c#接口作为参数传递、返回
- Unity使用C#调用C++dll传递指针参数、接收指针返回值
- .NET MVC3 几种返回 JSON 对象的方式和注意事项
- Java - 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- C++对象赋值与C#对象赋值----C++与C#值传递与引用传递浅析
- C#线程对象启动时的参数赋值4种情况
- C# 调用带有复杂参数的C++ ,delphi dll 注意事项备注。(C++ dll 怎么回调C# 程序,参数怎么写?)
- 对象赋值注意事项
- 关于C#函数对象参数传递的问题
- 利用operator关键字在对象间进行赋值的几点注意事项(1)
- 转: .NET MVC3 几种返回 JSON 对象的方式和注意事项
- C#中通过引用来传递参数?有几种?区别?例?(传入参数A,并返回操作后的A)?
- 关于C#函数对象参数传递的问题
- asp.net(C#)函数对象参数传递的问题
- JAVA与C++传递、赋值以及返回对象(指针、引用)