c#面向对象基础技能——学习笔记(二)基于OOP思想研究对象的【属性】

时间:2022-09-22 19:47:34

字段(成员变量):

  字段只能从对象中访问实例字段,无法直接从类中访问(换言之,不创建实例就不能访问),可以理解为:字段一般用在内部数据交互使用,当需要为外部提供数据时,(要优先使用自动实现的属性而不是字段)要将字段封装成属性,而不是公有字段,故不应被声明为public或protected,(通常)用private修饰。

  camel命名法;属性应使用LastName和FirstName这类表示名词、名词短语或者形容词形式的名称。

  可以被赋值也可以取值;

  要一直使用属性,不要直接调用字段。许多时候,即使在属性所在的类中,也不应该从属性实现的外部访问它的支持字段。这样一来,只要为属性添加代码(如验证代码),整个类就可以马上利用这些代码。

  在对象创建过程中,首先被创建。(构造方法:主要完成初始化赋值,内容可以是其他方法的调用;字段首先被初始化)。

  要为永远不变的值使用常量字段。const

属性(property):(接口:是外界操作、访问私有字段的入口,本身不保存数据)

    在OOP中,主要用属性描述静态特征;用Pasal命名法;数据类型与字段一致;一般public。

  特征:

    使用属性避免非法数据,可以通过属性过滤,约束保护数据,也可以添加业务逻辑;

    get取值,set赋值;

    可以设置只读属性,保护数据(去掉set),可以替代readonly,也可以只写;

    可以单独存在(与字段区别),可以不是返回私有字段值,可以调用一些方法或添加业务逻辑。

  自动实现属性:标准属性,无业务逻辑。输入prop,然后连按两下tab.会自动生成get和set.只需要修改下属性名即可。

  不要提供只写属性,也不要让属性的赋值方法的可访问性比取值方法更宽松。

访问修饰符(access modifier)——(public 、private、 protected、internal 和 protected internal)

目的:开发中,一些成员(字段,属性,方法)无需提供给调用者;

好处:充分体现面向对象里面的“封装”特性 (OOP三大特性:封装,继承,多态);

作用:保证数据安全,方便调用者使用(成员过多,调用者识别困难)。

类型:

  private;public;默认字段是private,方法是internal。

调用ArgumentException()或ArgumentNullException()构造器时,要为paramName参数传递“value”(value是属性赋值方法隐含的参数名)

c#面向对象基础技能——学习笔记(二)基于OOP思想研究对象的【属性】的更多相关文章

  1. c#面向对象基础技能——学习笔记(三)基于OOP思想研究对象的【方法】

    实例方法:(解决问题的步骤)完成某功能的各种语句的组合 编写方法要考虑的内容: 1.通过项目需求,确定各方法的任务.功能: 2.方法的可访问性(默认是private):(字段private 属性int ...

  2. c#面向对象基础技能——学习笔记(五)委托技术在开发中的应用

    委托 delegate 1.是一种全新的面向对象语言的特性: 2.开发事件驱动程序变得非常简单: 3.简化多线程难度. 理解委托:可以理解成一个方法的指针.(接收的变量是方法) 步骤: 1.声明委托, ...

  3. STM32学习笔记(二) 基于STM32-GPIO的流水灯实现

    学会了如何新建一个工程模板,下面就要开始动手实践了.像c/c++中经典的入门代码"hello world"一样,流水灯作为最简单的硬件设备在单片机领域也是入门首推.如果你已经有了一 ...

  4. Unity基础知识学习笔记二

    1,object Instantiate(object original,Vector3 position,Quaternion rotation)       克隆原始物体,并返回克隆物体.     ...

  5. 换个角度看Salesforce之基础配置学习笔记(二)

    1. 登录后无法使用Developer Console? 先找到当前登录用户的Profie,然后勾选Profile中的View All Data(Modify All Data)即可: 2. Pers ...

  6. linux基础命令学习笔记(二)

    linux基础命令学习笔记(二) 1.kill :终止进程  kill pid (唯一标示一个进程) kill -9  强制终止  kill -15 命令未结束不能终止 # ps aux 查看所有进程 ...

  7. tensorflow学习笔记二:入门基础 好教程 可用

    http://www.cnblogs.com/denny402/p/5852083.html tensorflow学习笔记二:入门基础   TensorFlow用张量这种数据结构来表示所有的数据.用一 ...

  8. Objective-c基础知识学习笔记

    Objective-c基础知识学习笔记(一) 一直有记录笔记的习惯.但非常久没分享一些东西了,正好上半年開始学习IOS了,如今有空写点.因开发须要,公司特意为我们配置了几台新MAC.还让我们自学了2周 ...

  9. java之jvm学习笔记二(类装载器的体系结构)

    java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...

随机推荐

  1. Linux快速入门01-基础概念

    4年多前,刚到上海时报过一个关于Oracle的培训班,在那里接触到了Linux,不过一直都没真正去试着使用它.现在经过慢慢的成长,越来越觉得,Linux是每一个服务端工程师必须掌握的系统,即使是现在最 ...

  2. [No00003A]操作系统Operating Systems 内核级线程Kernel Threads内核级线程实现Create KernelThreads

    开始核心级线程 内核级线程对多核的支持怎么样? 和用户级相比,核心级线程有什么不同? ThreadCreate 是系统调用,内核管理TCB ,内核负责切换线程 如何让切换成型? − − 内核栈,TCB ...

  3. JMeter性能监测插件介绍(三)

    JMeter 性能监测插件介绍 压力测试过程中,能够随时对负载服务器的健康状况的把控是相当重要的,有了这些数据,我们才能准确分析出服务器负载瓶颈.JMeter 插件包现在能够支持服务器监控,可以在所有 ...

  4. node.js和socket.io纯js实现的即时通讯实例分享

    在这个例子中,其实node.js并没有真正起到服务器的作用,因为我们这里可以直接运行client.html文件,而不用输入url请求,当 然,要想输入url请求页面内容还需要加入请求静态文件的代码.这 ...

  5. js 实现 C# 的 format 方法

    2014-11-08 12:18:51 更新,修复原形链方法被当作关键词的bug,其实之前是想用全局关键词的,不过还是算了,array里有太多单词了.                          ...

  6. (转)server.urlencode有什么用?怎么用?

    这个函数主要是为了,不同浏览器的事,如果你传递的参数是中文,有的浏览器就显示出错,如果转换成编码形式,就可以正确传递!当然在IE下2个结果都是一样的,你看不出来区别,用编码来传递参数是一个好习惯,养成 ...

  7. Java Web(十) JDBC的增删改查,C3P0等连接池,dbutils框架的使用

    前面做了一个非常垃圾的小demo,真的无法直面它,菜的抠脚啊,真的菜,好好努力把.菜鸡. --WH 一.JDBC是什么? Java Data Base Connectivity,java数据库连接,在 ...

  8. HDU 1171 01背包

    http://acm.hdu.edu.cn/showproblem.php?pid=1171 基础的01背包,求出总值sum,背包体积即为sum/2 #include<stdio.h> # ...

  9. 卸载JLink驱动弹出&OpenCurlyDoubleQuote;could not open INSTALL&period;LOG file”的解决方法

    我的操作环境是Windows 10 64位,JLink驱动的版本是V4.96. 最近好久不用STM32了,打算把JLink驱动卸载掉,但是无论是用JLink驱动自带的卸载程序还是控制面板来卸载,都会弹 ...

  10. python--区分函数和方法&comma; 反射

    1.  isinstance,   type,   issubclass isinstance(): 判断你给的xxx对象是否是xxxxx类型的,只支持向上判断 isinstance(object, ...