如下一段代码void (struct a)
{
struct b=new struct()
b=a;
change to b;
}
为什么执行完以后a的值也变了呢?
{
struct b=new struct()
b=a;
change to b;
}
为什么执行完以后a的值也变了呢?
解决方案 »
- WinForm怎么调用ActiveX控件
- 关于导入图片到pictureBox控件中的问题
- C#winform程序错误问题
- 专业.net技术群欢迎有志者加入,谢绝灌水。群号13433321
- 如何在DataGrid控件中修改数据,并保存到DataSet的表中?(在线等)
- 如何在派生类中彻底隐藏基类中的方法,使得派生类的使用者及它的派生类中都看不到基类的方法
- .aspx.cs文件中的DataTable 如何在.aspx文件中使用.
- 如何制作安装包不跳eual许可
- 在苹果RMBP上安装VS2010,好用不?用过的或在用的大神们请指点一下
- 各位大虾能否介绍几个好的有关C#的国外网站!!
- Uri reqUrl = new Uri(URL)的问题
- 如何让服务器上的iis同时发布php网站和.net网站,急,求解
using System;
using System.Collections.Generic;
using System.Text;namespace structdos
{
struct Ms
{
public int a;
public Ms(int b)
{
a = b;
}
}
class Program
{
static void Main(string[] args)
{
Ms first = new Ms(1);
Console.Write(first.a.ToString() + "\r\n");
Console.Read();
ChangeA(first);
}
private static void ChangeA (Ms fir)
{
Ms second=new Ms(2);
second =fir;
second.a = 3; Console.Write(fir.a.ToString()+"\r\n");
Console.Write(second.a.ToString()+"\r\n");
Console.Read();
}
}
}
{
private int myvalue; public int MyValue
{
get { return myvalue; }
set { myvalue = value; }
} public MyClass(int myvalue)
{
this.myvalue = myvalue;
}
} public struct MyStruct
{
public int a;
public double b;
public MyClass myCls;
public int[] myArray;
}MyStruct a = new MyStruct();
a.a = 1;
a.b = 2f;
a.myCls = new MyClass(3);
a.myArray = new int[] { 1,2,3}; MyStruct b = new MyStruct();
b = a; b.a = 4;
b.b = 5f;
b.myCls.MyValue = 6;
b.myArray[0] = 4;
b.myArray[1] = 5;
b.myArray[2] = 6;
MessageBox.Show(a.a.ToString() + "," + a.b.ToString() + "," + a.myCls.MyValue.ToString() + "," + a.myArray[0].ToString());
MessageBox.Show(b.a.ToString() + "," + b.b.ToString() + "," + b.myCls.MyValue.ToString() + "," + b.myArray[0].ToString());
struct是值类型。切记.
struct为结构类型,改变b,a的值不应该变!
值类型包括struct,基本数据类型等
引用类型包括class,interface,数组等
创建两个值类型的实例,并且进行相互赋值操作,
若更改了其中一个实例的值,另一个是不会跟着变的。
创建两个引用类型的实例,并且进行相互赋值的操作,
若更改了其中一个实例的值,另一个会跟着变的。值类型和引用类型的主要区别就是变量在内存的存储方式不同。LZ可以试着写一个类和一个结构,然后分别实例化,并且进行赋值操作。
然后试着改变对象的某一属性的值,看看另一个是不是也跟着变。值得注意的是,string类型是一种特殊的类型,它是引用类型,但是表现的却是值类型的性质。