C# 属性与普通字段变量的区别

刚写程序时总觉得一个字段就能满足要求,何必要使用定义起来麻烦的属性
要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、其实单纯写程序一点不难,难得是如何设计程序,使代码简洁易读而效率又最高,如何保证程序的安全运行

C# 属性与普通字段变量的区别

时间: 2024-11-05 19:32:17

C# 属性与普通字段变量的区别的相关文章

访问属性和访问实例变量的区别

1.由于不经过Objective-C的“方法派发”(method dispatch)步骤,所以直接访问实例变量的速度会比较快.在这种情况下,编译器所生成的代码会直接访问保存对象实例的那块内存: 2.直接访问实例变量时,不会调用其“设置方法”,这就绕过了为设置相关属性所定义的“内存管理语义”: 3.如果直接访问实例变量,那么不会触发“键值观察”(key-Value Observing,KVO)通知.这样做是否会产生问题,还取决于具体的对象行为. 因此合理的折中方案是:在写入实例变量时,通过其“设置

C#属性和变量的区别学习

参考一 昨天看三层架构 (具体没怎么弄懂) 发现一般有一页代码专门用户存放字段的 而且都用用属性封装..令我诧异的是 很多字段属性都存在 get{}和set{} 和普通的变量没什么区别(可读可写) 我就感觉属性就是给字段一个多的选择方式,有的字段是不允许更改的.. 博客园一查,还真的涨见识了 刚写程序时总觉得一个字段就能满足要求,何必要使用定义起来麻烦的属性要get.set的去定义,代码量还大,真不知道他们的区别和优点例: public class myclass { public static

Java中的属性和字段有什么区别

1.Java中的属性和字段有什么区别? 答: Java中的属性,通常可以理解为get和set方法. 字段,通常叫做“类成员”. 属性只局限于类中方法的声明,并不与类中其他成员相关.例如: void setA(String s){} String getA(){} 当一个类中拥有这样一对方法时,我们可以说,这个类中拥有一个可读写的 a 属性(注意是小写a).如果去掉了set的方法,则是可读属性,反之亦然. 类成员(字段),通常是在类中定义的类成员变量,例如: public class A{ pri

iOS 成员变量,实例变量,属性变量的区别,联系

在ios第一版中: 我们为输出口同时声明了属性和底层实例变量,那时,属性是oc语言的一个新的机制,并且要求你必须声明与之对应的实例变量,例如: 注意:(这个是以前的用法) @interface MyViewController :UIViewController { UIButton *myButton; } @property (nonatomic, retain) UIButton *myButton; @end 在现在iOS版本中: 苹果将默认编译器从GCC转换为LLVM(low leve

【转】iOS中属性与成员变量的区别

转载自http://www.cnblogs.com/crazypebble/p/3439261.html 一.类Class中的属性property 在ios第一版中,我们为输出口同时声明了属性和底层实例变量,那时,属性是oc语言的一个新的机制,并且要求你必须声明与之对应的实例变量,例如: @interface MyViewController :UIViewController { UIButton *myButton; } @property (nonatomic, retain) UIBut

iOS开发中 类、对象、实例变量、成员变量、属性变量等区别和关系

类(class):具有相同属性和行为等同一类元素等总称,类是一个抽象的概念. 区分是类还是对象,看它能否继续被细分. 在OC中,类是表示对象类型的结构体,对象通过类来获取自身的各种信息.类由两个部分组成:*.h和*.m文件组成. *.m文件中 implemention部分是类的实现部分,内部包含类中的各种信息,包括各种实例方法或类方法. 类别( category):是为现有的类添加新方法的方式,通常以"类名称+类别名称"来命名. 类别中不能添加新的实例变量.但是可以在类别中添加属性.

iOS中属性与成员变量的区别

一.类Class中的属性property 在ios第一版中,我们为输出口同时声明了属性和底层实例变量,那时,属性是oc语言的一个新的机制,并且要求你必须声明与之对应的实例变量,例如: @interface MyViewController :UIViewController {     UIButton *myButton; } @property (nonatomic, retain) UIButton *myButton;@end 最近,苹果将默认编译器从GCC转换为LLVM(low lev

C# 类属性封装、字段的详解

今日敲代码时,突然感觉对类的属性封装.字段有点犯迷糊了..连基础的都不知道了,那敲的代码怎么能严谨高效的.果断拿起各种高级编程.大全啥的翻起来~~这不再把自己的理解写下来(定义都是直接抄书的),献给同样迷糊的小伙伴. 先说下类的成员,它分为数据成员和函数成员.数据成员,简单点可以理解成类的数据,包含了字段.常量(const).事件:函数成员,就是操作类中的数据,包含方法.属性.构造函数.终结器(析构函数).运算符.索引器.(就提一下,方便后面说下去,要都解释就偏题了)字段就是类里定义的变量,而属

SQL Server中临时表与表变量的区别

2009年02月20日 星期五  19:31 我 们在数据库中使用表的时候,经常会遇到两种使用表的方法,分别就是使用临时表及表变量.在实际使用的时候,我们如何灵活的在存储过程中运用它们,虽然它们 实现的功能基本上是一样的,可如何在一个存储过程中有时候去使用临时表而不使用表变量,有时候去使用表变量而不使用临时表呢? 临时表 临时表与永久表相似,只是它的创建是在Tempdb中,它只有在一个数据库连接结束后或者由SQL命令DROP掉,才会消失,否则就会一直存在.临时表在创建的时候都会产生SQL Ser