当前位置:编程学习 > C#/ASP.NET >>

问一些基础性的问题,关于实体类的封装,看下面的小例子。

第一种情况:
public class A
{
   public int a;
}

new A = new A();

A.a = 2;



第二种情况:
public class A
{
   private int a;

   public int A
   {
      get{ return x ;}
      set{ x = value ;}
   }
   
}

new A = new A();

A.a = 2;


大家这是怎么回事,总不明白这两种情况的区别,以及什么时时候用第二种情况呢?不懂封装,大家用例子讲解一下吧,谢谢 了

--------------------编程问答-------------------- 1、避免外界直接可以修改类的内部信息,符合面向对象的封装原则
2、get和set访问器,可以实现完整的检查机制,例如当某个字段为空时,做一些特殊的处理,或是在对字段赋值时,执行一些检查等。 --------------------编程问答-------------------- public int A
  {
  get{ return x ;}
  set{ x = value ;}
  }
这种方式可以可控制赋值,例如添加验证操作,避免的直接访问。
public int a;直接访问,后续维护不好处理 --------------------编程问答-------------------- 永远不要用第一种情况。

如果你想偷懒,可以这么写:
public class A
{
  public int a { get; set; };
}
--------------------编程问答-------------------- 防止外界修改
封装时get set设置只读只写属性,提高安全!如果直接公开了你的字段,就无法控制使用者,给字段一个让程序崩溃的值,不就惨了!!而用set,你可以检查value是否符合要求。 --------------------编程问答-------------------- 也不是永远那么绝对了...公共字段在某些情况下还是有用的,比如只读字段或者需要以引用方式传递的情况...

CLR中也有不少公共字段... --------------------编程问答-------------------- 下面一种情况,用属性可以控制只读或者只写 --------------------编程问答-------------------- --------------------编程问答-------------------- 还不太懂呀,但我看有的程序中就是没有用get set呀,也没什么事呀,能不能用点具体的例子说说呢
类似这样的
看这种情况。。。。。这样作的好处是什么。。。。。

例如。。。。。。这样作的好处是什么。。。。。。。

两种对比的情况什么什么的,大家都 说说,谢谢了
--------------------编程问答--------------------
引用 5 楼 vrhero 的回复:
也不是永远那么绝对了...公共字段在某些情况下还是有用的,比如只读字段或者需要以引用方式传递的情况...

CLR中也有不少公共字段...

你跟小朋友说,这个是药,生XX病吃,平时不能吃。他保管晕了。你就说,这个东西小孩子不能吃,吃了要变成丑小鸭的,OK了。

学编程也一样,用到非要暴露共有字段的机会很少,等他有机会接触的时候,你不说他肯定已经知道了。对于大多数人来说,永远不要用虽然简单,但是接近真理。 --------------------编程问答--------------------
引用 8 楼 rqwfh 的回复:
还不太懂呀,但我看有的程序中就是没有用get set呀,也没什么事呀,能不能用点具体的例子说说呢
类似这样的
看这种情况。。。。。这样作的好处是什么。。。。。

例如。。。。。。这样作的好处是什么。。。。。。。

两种对比的情况什么什么的,大家都 说说,谢谢了

使用公共字段比属性访问器好的情况,我保证你在学习C#到用C#编写10万行代码之前遇不到。你记住用属性访问器就行了。 --------------------编程问答-------------------- 呵呵...你比我有耐心...
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,