属性和公用变量的本质区别(c#)

来源:百度知道 编辑:UC知道 时间:2024/06/28 03:09:25
public class myclass
{
public string A
private sting _B
public string getval
{
get { retrun _B ;}
set { _B = value; }
}

}
我是个初学者。请问 myclass.A 和 myclass.getval 不是一样用么?有什么本质上的区别,类属性的概念有点多余呀?请前辈指点一下。谢谢

首先,你的myclass.A和myclass.getval使用方法是错的,A和getval都是非静态的,虽然他们是公有的,但需要实例化myclass后才能使用,即使你表达的意思是new myclass().A,但作为程序员必须要持严谨的态度,尽量少出错,为了规范,公有数据和操作成员的名字第一个字母一般是大写(你应该也知道,否则你就不会写A和_B)。
正题:
A是数据成员(变量),getval是操作成员(特殊的方法)
一个变量只能用来存储数据
一个方法只能用来对数据成员的进行操作

而且你的问题也很牵强
你应该这么问:
public string B
public string GetVal
{
get{ return B;}
set{ B=value;}
}
至少我觉得这样才符合你的本意,这样才涉及到了真正的数据安全,因为B是个公有变量,在类的外部可以任意更改,为了防止因用户任意更改
而导致程序出现异常,就要对B进行限制,所以就出现了属性,其实自定义变量已经默认实现了属性,只是简答的读写而已,我们定义的属性要在读写的基础上加上更多限制,以后你学的多了就会发现,很多东西都是为了数据安全而加入的,说白了就是限制,例如接口,接口中的方法你必须(注意是必须,强制性的)要实现
对你的问题我举个例子:
比如银行的自动取款机。
你在取钱的时候最少取多少,做多取多少都有限制,这就是用属性实现的,当然实现方法也不仅仅只有属性,你还可以在用户输入的时候来检查,但这样写维护的时候会非常困难,因为你要到类的外部去找这个检查过程。

其实单纯写程序一点不难,难得是如何设计程序,使代码简洁易读而效率又最高,如何保证程序的安全运行(也就是数据安全),建议你在学到一定程度的时候买一本程序设计的书看看,绝对大有好处

属性对数据安全是有影响的。可以让你不能输入非法数值

private int _B;
public int getval
{
get{return _B;}
set{
if(value