Unity学习之C#基础22——结构

本文探讨了C#结构体中构造函数的使用注意事项,重点在于必须为所有字段初始化,包括自动参数。同时介绍了结构与类的区别,以及值类型和引用类型的特性。修正的net5.0问题也提及。

 结构和类极其相似,我们需要关注的是其有哪些不同:

  • struct关键字,而非class关键字
  • 结构体不可以包含无参构造函数,因为结构体自带无参数构造函数。 
  • 下面这个不同我们先来看一个例子:
    struct A
    {
        public string StringA { get; set; }
        public string stringB;
        public string StringB
        {
            get { return stringB; }
            set { this.stringB = value; }
        }
        public A(string a)
        {
            this.StringA = a;
            this.stringB = a;
        }

    }

 上面的例子中有一段会报错就是A构造方法处。

因为StringA我们使用了自动参数,stringB并没有使用。所以会提示我们:

  • 根据上面的一个小问题,我们知道,结构中需要使用自动参数,或者说,我们必须在构造函数中,先为所有字段赋值。而我们的结构体一开就给予了一个构造方法,我们通常继承它,来编写自己的相关构造方法,便可以解决上面的问题;或者将变量改为自动变量。总的来说就是构造函数内,必须对每一个变量实现赋值操作。不过此问题,似乎在net5.0中已经修正。
  • 结构是值类型,类是引用类型。
  • 结构中的字段不可以赋值。除非字段是const或是static类型。(const是常量,不可以修改)

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言行物恒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值