首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

封装字段是怎么对属性进行约束的?

2014-01-03 
封装字段是如何对属性进行约束的??下面是我复制的一份代码,请问封装字段是如何约束age的值,不至于不和实际

封装字段是如何对属性进行约束的??
下面是我复制的一份代码,请问封装字段是如何约束age的值,不至于不和实际的?
Code:

    public class Student   
    {   
                  public int age;   
                  public string name;   
                     
                  public void say()   
                 {   
                        Console.WriteLine("大家好,我是{0},今年{1}岁",name,age.ToString());   
                 }   
    }  

试着编写测试类,实例化对象,调用其say方法
Code:

    Class Test   
    {   
                 static void Main()   
                 {   
                        Student student = new Student();   
      
                        student.age = -20;   
                        student.name = "hamber";   
      
                        student.say();   
                 }   
    }  

输出结果:我是hamber,今年-20岁。

以上的赋值是不符合实际生活的。

这就需要我们对类中的敏感字段进行有效约束,这就用到了C#中的属性.
Code:

    public class Student   
    {   
                    private int age;   
                    public int Age   
                   {   
                       get{return age;}   
                       set{age = value;}   
                   }   
      
                  public string name;   
      
                  public void say()   
                 {   
                      Console.WriteLine("大家好,我是{0},今年{1}岁",name,Age.ToString());   
                }   
    }  

在C#中,我们通常不会直接访问类中的字段,而是通过get和set访问器来访问,这种实现方式我们称为属性。
Code:

    private int age;   
    public int Age   
    {   
                 get{return age;}   
                 set{age = value;}   
    }  


[解决办法]
你可以在set的时候进行判断,
比如:


set{
  if(value<0)
  {
    return;
  }
  age=value;
}

[解决办法]
引用:
在C#中,我们通常不会直接访问类中的字段,而是通过get和set访问器来访问,


这话相当过头。

通常来说你的业务逻辑规定了必须调用程序进行处理,你就写成属性。如果根本没有规定,你就完全可以写成字段。

有些人在外,每天要洗20遍手。别人问他“你为什么总要洗手啊?”,他说“我就是小时候看到我妈妈每天洗20遍手,所以我也学着这样。终于有一天他去问他妈妈”为什么我小时候您每天洗20遍手呢?“,他妈妈告诉他“因为那个时候你浑身长脓疮,我得不断跟你接触,所以只好洗手。”。

你看,有些人的所谓“洁癖”有一部分就是这样养成的,因为活在“照抄别人”的思路中。


[解决办法]

private int age;   
    public int Age   
    {   
         get{return age;}   
         set{
             if(条件不符)
               reutrn
             age = value;}   
    }  

热点排行