注册 登录
编程论坛 C# 论坛

get 和 set :怎样做才是只读 get ?怎样做才是只写 set ?

lxsxd 发布于 2014-07-19 19:47, 1091 次点击
一、字段和属性示例
namespace C_sharp学习
{
    ///<summary>
    ///学生类
    ///</summary>
    public class Student
    {
        private int nAge;
        public int Age
        {
            get
            {
                return this.nAge;
            }
            set
            {
                if (value != this.nAge)
                    this.nAge = value;
            }
        }
        ///<summary>
        ///主函数
        ///</sunmary>
        static void Main(string[] args)
        {
                Student s=new Student();
                s.Age=20;
                Console.WriteLine(s.Age);

                Console.ReadLine();

        }
    }
}

按书本上此例题的解说是:为学生类定义了一个私有字段nAge,相应的,也定义了属性Age,并包含get和set两个访问器。
二、困惑
1、代码如何写是实现只读GET?
2、代码如何写是实现只写SET?
3、什么时候用到GET和SET这两个访问器?怎么用?
这三个困惑,希望高手、大侠能用简单的代码示例说明示范。谢谢!小虾在此有礼了。
6 回复
#2
h_xuxu2014-07-20 10:56
把set删掉就是只读的,把get删掉会报错:属性或索引器“类名”无法用于此上下文中,因为它缺少 get 访问器
只写set好像就是矛盾的,不能读怎么写,(个人理解)
当你声明一个类,类里有一些私有字段不想外部访问修改,可以使用public暴露出来,get{这里可写,想要怎么返回私有字段}
set里可写一些写入次字段的规则,比如大于0,或非空等

#3
麻麻说我不乖2014-07-20 15:15
回复 2 楼 h_xuxu
可是为什么我们老师今天说如果只是要输出一个的话,要get就删除set,要set就删除get.他说可以制度也可以只写。请问是你说的那样我老师说的那样?
#4
邓士林2014-07-20 16:25
回复 3 楼 麻麻说我不乖
get意思就是获取,return一个值,那就是读的作用,无法对其进行赋值,当作对象的属性就行调用。get就是设置,写的作用,有get就是只读,有set就是只写(没意义),二者都有就是可读可写。
#5
麻麻说我不乖2014-07-21 16:23
回复 4 楼 邓士林
噢噢,原来是这样,谢谢了。
#6
lxsxd2014-07-22 08:17
感谢 h_xuxu和邓士林 的帮助!
#7
难得有雨2014-07-26 15:53
2楼的果然正解啊,我也这觉得这么写垦定可以的




永夜君王www. 永夜君王最新章节列表 章一 绯色 章二 站着沉默。终极教师 www. 终极教师第一条,禁止师生恋! 第二条,禁止师生恋!遮天www.遮天最新章节:正文 完本感言。星战风暴www.星战风暴军校考试临近,殉情之名不胫而走。
1