C#  类与结构体的区别(属性与变量)
定义一个结构体MyStruct,
 public struct MyStruct
    {
      public int a ;
      public int b;
    }
public class MyClass
    {
       public MyStruct mm_Struct = new MyStruct();//变量
      
       public MyStruct Struct //属性
       {
           get{return mm_Struct;} 
           set{mm_Struct=value;}
       }
    }
写代码时:
            MyClass m_class = new MyClass();
            
            m_class.mm_Struct.b = 9;
            m_class.Struct.b = 9;
最后一个代码提示
    “ 错误	1	无法修改“WindowsFormsApplication1.MyClass.Struct”的返回值,因为它不是   变量”	
本人新人,希望大家指教
------解决方案-------------------- m_class.Struct返回了一个结构的
拷贝,而拷贝上作改变没有意义,因此编译器给出错误信息。
可以改为写回
整个结构。
var s = m_class.Struct;
s.b = 9;
m_class.Struct = s;
------解决方案--------------------m_class.mm_Struct.b = 9;
调用的是get而不是set
相当于如下代码:
x = m_class.get_mm_Struct();
x.b = 9;
------解决方案--------------------
不要这么总结。
本质是值类型传递的是副本,引用类型传递的是引用。
这里所说的传递,包括了方法的调用以及return。
就是说
void a(MyStruct m){}
a(new MyStruct());
上面方法体里面的m和外面的MyStruct对象不是同一个,而是外面那个对象的副本。
同理
void MyStruct a(){return new MyStruct();}
MyStruct ms = a();
ms和return的MyStruct对象不是同一个,而是副本而已。