问题为: 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进行限制,所以就出现了属性,其实自定义变量已经默认实现了属性,只是简答的读写而已,我们定义的属性要在读写的基础上加上更多限制,以后你学的多了就会发现,很多东西都是为了数据安全而加入的,说白了就是限制,例如接口,接口中的方法你必须(注意是必须,强制性的)要实现 对你的问题我举个例子: 比如银行的自动取款机。 你在取钱的时候最少取多少,做多取多少都有限制,这就是用属性实现的,当然实现方法也不仅仅只有属性,你还可以在用户输入的时候来检查,但这样写维护的时候会非常困难,因为你要到类的外部去找这个检查过程。 其实单纯写程序一点不难,难得是如何设计程序,使代码简洁易读而效率又最高,如何保证程序的安全运行(也就是数据安全),建议你在学到一定程度的时候买一本程序设计的书看看,绝对大有好处