编辑代码

using System;


namespace MyStruct
{
    // 结构体
    // 1. 与类类似,但是是值类型,不是引用类型
    // 2. 结构体隐式包含一个无法重写的无参数构造器,将字段按位置为0
    // 3. 定义结构体的构造器时,必须显式为每一个字段赋值
    // 4. 结构体则完全不支持继承
    public struct Point 
    {
        public int X, Y;// 字段: 类或结构体中的变量成员
    }
}

namespace MyClass
{
    // 结构体
    // 1. 与类类似,但是是值类型,不是引用类型
    // 2. 结构体隐式包含一个无法重写的无参数构造器,将字段按位置为0
    // 3. 定义结构体的构造器时,必须显式为每一个字段赋值
    // 4. 结构体则完全不支持继承
    public class Point 
    {
        public int X, Y;// 字段: 类或结构体中的变量成员
    }
}
public class HelloWorld
{
    public static void Main()
    {
        //隐式类型转换和显示类型转换
        int myInteger = 0;
        long myLong = myInteger;
        myInteger = (int)myLong;
       
        //值类型和引用类型
        MyStruct.Point p1 = new MyStruct.Point();
        
        p1.X = 7;
       
        MyStruct.Point p2 = p1;
        
        Console.WriteLine($"p1.X is {p1.X}");
        Console.WriteLine($"p2.X is {p2.X}");

        p1.X = 9;

        Console.WriteLine($"p1.X is {p1.X}");
        Console.WriteLine($"p2.X is {p2.X}");

        MyClass.Point cp1 = new MyClass.Point();
        
        cp1.X = 7;
       
        MyClass.Point cp2 = cp1;
        
        Console.WriteLine($"cp1.X is {cp1.X}");
        Console.WriteLine($"cp2.X is {cp2.X}");

        cp1.X = 9;

        Console.WriteLine($"cp1.X is {cp1.X}");
        Console.WriteLine($"cp2.X is {cp2.X}");
    }
}