Amor-ztt

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

结构和类的区别

结构
类型 值类型 引用类型
继承 不能作为基类被继承 可以作父类被继承
构造函数 默认构造函数始终会被调用 如果自定义构造函数,默认的会被替换掉
析构函数 无析构函数 有默认析构函数
字段 不能在声明字段时直接给字段赋值 可以在声明时给字段赋值
静态构造函数 有一个 有一个

结构
1、不能显示定义默认无参的构造函数

2、在结构中不能在声明字段时直接赋值

在结构中想要给字段赋值有两种办法
方法1:在自定义有参构造函数时,传参,赋值
new有参构造,传参

方法2:通过new默认构造函数,创建一个实例
通过实例名.字段的方式赋值(补:在类外访问类成员时,必须为public修饰)


完整代码
`using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace structDemo1
{
class Program
{
static void Main(string[] args)
{
// 结构的字段赋值方式有两种。1 - 系统会调用有参构造函数,(实例化时传参数)
Person2 xiaohua = new Person2("female", "王小花");
Console.WriteLine($"sex:{xiaohua.sex},name:{xiaohua.name}");

        // 结构的字段赋值方式有两种。2-会调用默认无参构造函数,在实例化时赋值
        Person2 zhangsan = new Person2();
        zhangsan.name = "张三";
        zhangsan.sex = "男";
        Console.WriteLine("name={0},sex={1}",zhangsan.name,zhangsan.sex);
    }
}
class Person
{
    //解决方法2:在基类中创建一个默认无参构造函数
    public Person()
    {

    }
    public Person(int age, string name)
    {

    }
}
class Student : Person
{
    public Student()
    {

    }
    //解决方法1,在构建一个有参的构造函数(和基类构造函数签名一样)
    public Student(int age1, string name1) : base(age1, name1)
    {

    }
}

struct Person2
{
    //public Person2()  //Error!结构中默认无参构造函数是系统默认隐式调用,而且,不能自己显式的写出来
    // {

    // }
    public Person2(string sex1, string name1)
    {
        sex = sex1;        // 结构的字段赋值方式有两种。1-在有参构造函数中赋值(实例化时传参数)
        name = name1;
    }

    //public int age = 10;         // Error! 结构中不能直接给字段赋值
    //public int height = 165;

    public string sex;         // 结构的字段赋值方式有两种。
    public string name;
}

}
`

posted on 2023-04-04 14:27  小颜七七  阅读(133)  评论(0编辑  收藏  举报