C#基础知识回顾-- 属性与字段

  今天在公交车上,突然想属性和字段到底有什么区别?很多字段属性都存在 get{}和set{} 和普通的变量没什么区别(可读可写)

我就感觉属性就是给字段一个多的选择方式,有的字段是不允许更改的..   刚写程序时总觉得一个字段就能满足要求,何必要使用定义起来麻烦的属性

要get、set的去定义,代码量还大,真不知道他们的区别和优点 例:

public class myclass 
{

public static string A

private sting _B=""; 
public string Getval 
{ 
get { retrun _B ;} 
set { _B = value; } 
}
}

myclass.A 和 myclass.Getval可能实现同样功能,为什么一定要用定义属性?

现在简单总结下属性较普通变量的优点: 1、数据安全   因为A是个公有变量,在类的外部可以任意更改,为了防止因用户任意更改,可用属性get、set来限制_B的的只读、只写或控制_B的最大或最小

引用一位老兄的简答:"其实自定义变量已经默认实现了属性,只是简单的读写而已,我们定义的属性要在读写的基础上加上更多限制,以后你学的多

了就会发现, 很多东西都是为了数据安全而加入的,说白了就是限制,例如接口,接口中的方法你必须(注意是必须,强制性的)要实现"

2、OOP和编程的一个原则就是数据封装,意味着我们不应该将字段的类型以公开的方式提供给外界 (其实属性就是对字段的封装)

3、其实单纯写程序一点不难,难得是如何设计程序,使代码简洁易读而效率又最高,

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏King_3的技术专栏

leetcode-557-Reverse Words in a String III

1386
来自专栏腾讯IVWEB团队的专栏

Object.observe 简介

Object.observe 是一个提供数据监视的API,在chrome中已经可以使用。是 ECMAScript 7 的一个提案规范,官方建议的是“谨慎使用”级...

2180
来自专栏HTML5学堂

2015.12.24 HTML5真题练习

HTML5学堂:各位,圣诞快乐~!!!每天一道题,强壮程序员!今日主要涉及12.23日关于逗号运算符和for循环知识的题目解答,以及一道涉及逗号运算符的题目。 ...

2675
来自专栏C/C++基础

我所理解的C++反射机制

在实际的项目中,听到师兄说C++中用到了反射,出于好奇,就查阅相关资料,发现强大的C++本身并不支持反射,反而Java支持反射机制。当我得知这个事实时,一直唯C...

462
来自专栏漫漫前端路

使用 TypeScript 开发你的项目

早在去年(2017),TypeScript 赢来了它的爆发式增长。时至今日,随着 JavaScript 的代码数量越来越庞大,越来越多的开发者意识到 JavaS...

622
来自专栏余林丰

工厂模式——简单工厂模式

工厂模式分三类:简单工厂模式、工厂方法模式、抽象工厂模式。 首先介绍比较简单一种工厂模式——简单工厂模式。 我们以计算器作为一个例子来说明工厂模式到底是什么。作...

1846
来自专栏Spark学习技巧

分段锁的原理

1342
来自专栏JackieZheng

初探JavaScript(四)——作用域链和声明提前

前言:最近恰逢毕业季,千千万万的学生党开始步入社会,告别象牙塔似的学校生活。往往在人生的各个拐点的时候,情感丰富,感触颇深,各种对过去的美好的总结,对未来的展望...

1805
来自专栏陈纪庚

使用装饰者模式做有趣的事情

装饰者模式是一种为函数或类增添特性的技术,它可以让我们在不修改原来对象的基础上,为其增添新的能力和行为。它本质上也是一个函数(在javascipt中,类也只是函...

482
来自专栏Flutter入门

有趣的正则表达式

听到正则表达式,大家一定不会陌生。工作项目中也经常使用正则表达式来校验文本的是否匹配规则。通常都会直接上网找寻各种格式输入的正则匹配式。比如电话/邮件等等。

823

扫描关注云+社区