问一些基础性的问题,关于实体类的封装,看下面的小例子。
第一种情况: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呀,也没什么事呀,能不能用点具体的例子说说呢
类似这样的
看这种情况。。。。。这样作的好处是什么。。。。。
例如。。。。。。这样作的好处是什么。。。。。。。
两种对比的情况什么什么的,大家都 说说,谢谢了
--------------------编程问答--------------------
你跟小朋友说,这个是药,生XX病吃,平时不能吃。他保管晕了。你就说,这个东西小孩子不能吃,吃了要变成丑小鸭的,OK了。
学编程也一样,用到非要暴露共有字段的机会很少,等他有机会接触的时候,你不说他肯定已经知道了。对于大多数人来说,永远不要用虽然简单,但是接近真理。 --------------------编程问答--------------------
使用公共字段比属性访问器好的情况,我保证你在学习C#到用C#编写10万行代码之前遇不到。你记住用属性访问器就行了。 --------------------编程问答-------------------- 呵呵...你比我有耐心...
补充:.NET技术 , ASP.NET