码迷,mamicode.com
首页 > 其他好文 > 详细

经纬度换算

时间:2017-11-08 15:04:34      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:知新树 宁金峰


 

属性是用来描述类的特征;

 [public]   class 类名

{

               字段;

               属性;

              方法;

}

类需要实例化后才能使用,但我们是通过属性来访问类中的字段;字段是是用来存储数据的;

属性的作用就是代替字段与外界打交道,从而起到保护字段的作用。它的本质就是两个方法,一个get()一个set()

从他们的字面意思可以看出,一个可读一个可写,并不是所有的属性都是同时有get set方法的;

在类进行实例化后,对类中的属性赋值,首先会执行属性中的set方法,对属性进行打印输出的时候

会执行属性中的get()方法;

属性值的定义举例:

      private string _name;

public string Name

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

            get;

            set;
        }


     补充说明:当给属性赋值的时候会调用Set方法,此时value的值就是属性接收的值;

                       当取出属性值的时候会调用Get方法,其实就是把字段的值取出给属性;

我们同样可以在set中对传进来的值进行判断,定义特定条件下的返回值

 

class A {

        private int age;

        public int Age

        {

            get { return age; }

            set

            {

                if (value < 0)

                {

                    throw new ArgumentOutOfRangeException("Age must be greater than or equal to 0");

                }

                age = value;

            }

        }

        public void Fun() {

            Age = -10;

//如果写的时age = -10;就不会报错,因为所做的判定时针对于Value的,它C#中提供的关键字,代表的就是你赋给该属性的真正的值。而不是字段的值。

        }

调用时:

static void Main(string[] args)

        {

            A a = new A();

            a.Fun();

            Console.WriteLine(a.Age);

            Console.ReadKey();

        }

运行时会弹出异常。

上面的代码中,throw语句的作用是抛出一个异常,我们暂时可以不去理会它,而是将注意力放到getset访问器上。首先,我们定义了一个私有字段age,然后再定义一个公共属性Age。在该属性中,get返回私有字段的值age,而在set中,首先会判断value的值,如果小于0,那么这个值是非法的,就将抛出一个异常,停止往下执行,并告诉你对Age值的设置错误了。当然,我们也可以为value值设置更严格的要求,


user.Age = 30;

此时是对Age属性赋值,.Net会执行set访问器,而value值就是30。然后判断30是否小于0。显然不符合条件,不会抛出异常,继续执行,将value30赋给字段age。为什么要赋给age呢?让我们再看看get访问器,它其实就是一个读操作,返回的值是什么?对了,就是字段age,如下所示:
user.Age = 30;     //set操作,将字段age设置为30
Console.WriteLine(“User’s Age is {0}.”, user.Age);   //get操作,将m_age的值取出;

此时就会在控制台下显示:
User’s Age is 30.

 

此外,对于一些特殊的要求,我们在将字段封装为属性时,可以只设置它的get访问器或者set访问器,这样这个属性就是只读属性,或者只写属性了。这样显然更有利于对象的封装。毕竟对于公共字段而言,我们最能可以控制它为只读(设置为readonly),却无法设置为只写。

从上可以看到,实际上属性就是对字段进行一次封装。通过这个封装,使我们对字段age的读写都具有了控制功能

 


本文出自 “13233523” 博客,请务必保留此出处http://13243523.blog.51cto.com/13233523/1979895

经纬度换算

标签:知新树 宁金峰

原文地址:http://yangleitse.blog.51cto.com/2336747/1979895

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!