第十三讲:属性&析构函数

本文探讨了C#中的属性、构造函数和析构函数。属性用于控制字段的访问权限和安全赋值,构造函数在对象实例化时初始化数据,而析构函数则用于清理非托管资源。通过属性,可以实现只读字段和安全赋值检查。构造函数允许在创建对象时执行特定操作,而析构函数则在对象销毁时自动调用,主要用于释放非托管资源。了解这些概念有助于编写更安全和高效的C#代码。
摘要由CSDN通过智能技术生成

第十三讲:属性&析构函数

为什么需要属性?

字段要么完全公开(pulic),要么只给他儿子、孙子公开,要么只是给本项目内公开,要么隐藏(private)。
——有什么办法可以实现可见但只读?

给字段赋值的时候完全不设防
——有什么办法可以在赋值之前先检查值呢?

C#的属性可以解决处理这些问题。

构造函数

  • 为什么需要构造函数?

  • 实例化对象到底干了神马?? 真的只是为了在内存中去开个房间那么简单?

  • 好吧,就算是真的,假设我希望在开房间的时候顺便做点神马,比如————买点零食,晚上饿了吃

  • 其实我是想说在实例化对象的时候顺便将一些要给对象的数据同步赋值上去而已。 在类里边直接进行,
    public + 类名(参数) {}

 /// <summary>
 /// 实例化一个具有全部参数的对象
 /// </summary>
 /// <param name="Name">商品名称</param>
 /// <param name="Price">价格</param>
 /// <param name="Color">颜色</param>
 public Products(string Name,decimal Price,string Color)
  { 
      _name = Name;
     _price = Price;
     _color = Color;
 }

给字段赋值的时候完全不设防
——有什么办法可以在赋值之前先检查值呢?

  public string Name
    { 
        get { return _name; }
        set 
        {
            if (value == null)
                _name = "啥子哦,想骗我";
            else
                _name = value;
            
        }
    }

  • 构造函数是在实例化对象时自动调用的函数
    ——必须与类名相同
    ——无返回值类型
    ——实例化对象的时候总是会执行构造函数
    ——如果没有明显申明,则c#提供一个默认的空构造函数。

关上身后的每一扇门

  • 做人要做无憾的人生?
  • 做事不能留尾巴。
  • 但是:前面我们总是在不断的申明对象,都没有回收对象(准确说我们在内存中制造垃圾)

析构函数是实现销毁一个类的实例的方法成员。

  • —析构函数不能有参数

  • —不能任何修饰符而且不能被调用。

  • —前缀‘~’以示区别

      ~Products()
      { 
          //要清理那些非托管的资源就写代码
      }
    

使用析构函数——注意事项

  1. 不能在结构中定义析构函数。只能对类使用析构函数。
  2. 一个类只能有一个析构函数。
  3. 无法调用析构函数。它们是被自动调用的。
  4. 析构函数既没有修饰符,也没有参数。
  5. 凡托管资源,c#均可自动回收,只有使用了非托管资源才需要专门使用析构函数来释放。

小结

  • 为什么需要属性?

    —控制读写权限

    —更安全的赋值

  • 构造函数是做什么的?

    —在实例化的时候做一些事情。

  • 析构函数的作用

    — 清理非托管资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值