1,和c++里面的getter和setter一样,最重要的是实现了封装,即避免
把内部数据直接暴露给用户。2.1很类似c++里地<<运算符重载,这样就调用person.ToString()乐。
2.2你不觉得前面直观而且简单乐很多么?
如果person这个类有n多项数据,而很不幸地,你也要写n个
Console.WriteLine("name....",person.Name,person.Age,...);
你觉得方便吗?
把内部数据直接暴露给用户。2.1很类似c++里地<<运算符重载,这样就调用person.ToString()乐。
2.2你不觉得前面直观而且简单乐很多么?
如果person这个类有n多项数据,而很不幸地,你也要写n个
Console.WriteLine("name....",person.Name,person.Age,...);
你觉得方便吗?
>>感觉对属性的定义
>>在对其赋值时,没什么区别,反而前者冗长了许多,不知道get/set有什么优点
第一,封装,防止用户直接访问你的变量。可以设不同的属性,如只读,只写。。
第二,你可以在这里放上你的处理代码,比如ForeColor,设定以后forcolor就可直接更改,而不是要去调用另外的方法。
第三, 可代理,专用于组件。属性是函数,可以模仿,变量只是一段内存空间,没办法模仿,这样你没办法设定远程组件的值!
问题2.>> 2.1 输出时为什么会和ToString()有关系,竟然可以重载方法,使输出结>>果改变
你重载了object的ToString方法。当遇到隐式转换到String时,系统默认调用ToString.
2.2 输出时使用Console.WriteLine("name:{0},age:{}",person.Name,person.Age);不是可得到同样的结果吗?前者有什么优点?1.保证没一个对象都有string表示
2。可递归调用customers.Tostring{
..customer.Tostring{
...me.Name + age..
}
}...------------------------------
我是一只小小鸟
欢迎交流!尽管问我吧,我会帮你解决的!
尽快结帖哦!我是CSDN的菜鸟,我想获得一颗星!支持我吧!
MSN&Mail: [email protected]