zoukankan      html  css  js  c++  java
  • C#属性和字段

    属性

      属性是一种用于访问对象或类的特性的成员。属性是字段的自然扩展,这两者都是具有关联类型的命名成员、而且访问字段和属性的语法是相同的。然而,与字段不同,属性不表示存储位置。相反属性具有访问器,这些访问器指定在它们的值被读取或写入时需执行的语句。因此属性提供了一种机制,它把读取和写入对象的某些特性与一些操作关联起来;它们甚至还可以对此类特性进行计算。

      虽然访问属性的方法和访问字段的方法相同,但是属性并不归类为变量。因此并不能将属性作为ref或out参数传递。

      属性声明包含extern修饰符时,称该属性为外部属性。因此外部属性不提供任何实际的实现,所以它的每个访问器声明都仅包含一个分号。

    静态属性和实例属性

      属性声明包含static修饰符时,称为静态属性,不存在static时称为是属性。

      静态属性不与实例属性相关联,因此在静态属性的访问器内引用this会导致编译时错误。

      实例属性与类的一个给定的实例相关联,并且该实例可以在属性的访问器内用this来访问。

    访问器:

      它的声明由一个get和set访问器声明,或者两个一起组成。每个访问器声明都包含标记get或set,后跟一个访问器体。对于abstract属性和extern属性。每个指定访问器的访问器体只是一个分号。对于所有非抽象、非外部属性的访问器、访问器体是一个块,它指定调用相应的访问器时需执行的语句。

      Get访问器相当于一个具有属性类型返回值的无参数方法。

      Set访问器相当于一个具有单个属性类型值参数和void返回类型的方法

    属性的规则分类:

    1.     同时包含get和set访问器的属性称为读写属性

    2.     只具有get访问器的属性称为只读属性

    3.     只具有set访问器的属性称为只写属性

    属性和字段区别

      假如将字段声明为public,则在类的外部都可以对该字段进行访问和更改,违背了类的封装特性。如果声明为private,则这种形式的封装通常又过于彻底。例如,你可能希望字段从外部只读,但从内部可以更改,但需要验证对数据进行的更改。

           以前,程序语言为了实现这些要求,采取的办法是将字段标记为私有,然后提供取值和赋值的方法来访问和修改数据。遗憾的是,这样做会影响类的可编程性。无法再用赋值运算符来设置类中的数据。另外,要想访问数据,只能调用方法来进行。

  • 相关阅读:
    被动信息收集-dns
    Tcpdump
    Netcat-NC 工具的使用
    无线攻击
    无线渗透实操 aircrack-ng suite
    无线渗透技术概念
    sudo提权复现(CVE-2019-14187)
    Django学习小记-ORM操作概要1
    Django学习小记-cookie的使用(判断是否已登陆)
    Plan 4 Local VRF with NAT
  • 原文地址:https://www.cnblogs.com/IamJiangXiaoKun/p/5598233.html
Copyright © 2011-2022 走看看