黑马程序员_c#面向对象基础:属性

来源:互联网 发布:人工智能股票龙头科大 编辑:程序博客网 时间:2024/05/16 15:23

---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------

属性:

惯用法:属性开头字母要大写,字段开头字母要小写.

例如:

    class Person
    {
        private int age;             //字段

        private int Age              //属性mz
        {
            get { return age; }
            set { age = value; }
        }

        public void SayHello()       //方法
        {
            Console.WriteLine("我的年龄是:{0}",Age);
        }
    }

  • 只用set,或者只用get就可以定义只读或者只写属性(只写的不常见).
  • 可以为set或get设置访问级别.
  • 例子,限制非法值的设置.
  • (.net3.x)简化了set,get.:public int Age{ set;get},适合于set,get中没有特殊逻辑代码的情况.
  • 字段和属性的区别是:属性看似字段不是字段,可以进行非法值控制,可以设置只读.

属性练习:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace MyTryParse

{

    class Program

    {

        public static void Main(string[] args)

        {

            Person person1 = new Person();

            person1.Age = 30;

            person1.Name = "";

            Console.WriteLine("叫{0},¨{1}.",person1.Name,person1.Age);

 

            Person person2 = new Person();

            person2.Age = 26;

            person2.Name = "";

            Console.WriteLine("我的名字叫{0},我今年¨{1}岁了.",person2.Name, person2.Age);

 

            Person person3 = new Person();

            person3.Age = 28;

            person3.Name = "";

            Console.WriteLine("我的名字叫{0},我今年¨{1}岁了.",person3.Name, person3.Age);

 

 

            PersonCheck personchk =new PersonCheck();

            personchk.Age = -1;          //此处赋了一个非法的值,返回值为0;

            personchk.Name = "马六";

            Console.WriteLine("我的名字叫{0},我今年¨{1}岁了.",personchk.Name, personchk.Age);

 

 

            PersonNew personnew =new PersonNew();

            personnew.Age = 19;

            personnew.Name = "钱七";

            Console.WriteLine("我的名字叫{0},我今年¨{1}岁了.",personnew.Name, personnew.Age);

 

 

            PersonReadOnly personread =new PersonReadOnly();

            personread.IncAge();

            personread.IncAge();

            Console.WriteLine("{0}.", personread.Age);

 

            Console.ReadKey();

 

        }

    }

    class Person

    {

        private int age;             //

        private string name;

 

        public int Age              //

        {          

            set { this.age = value; } //

            get { return this.age; }  //

        }

        public string Name

        {          

            set { this.name = value; }

            get { return this.name; }

        }

 

    }

    class PersonCheck

    {

        private int age;

        private string name;

 

        public int Age                //Age ,age.

        {

            set

            {

                if (value < 0 ||value > 100) //

                {

                    return;

                }

                else

                {

                    this.age = value;    //value

                }

            }

            get

            {

                return this.age;

            }

        }

        public string Name

        {

            set

            {

                this.name = value;

            }

            get

            {

                return this.name;

            }

        }

    }

 

    //.net3.x

    class PersonNew

    {

        public int Age

        {

            set;

            get;

        }

        public string Name

        {

            set;

            get;

        }

    }

 

    //

    class PersonX

    {

        public int Age

        {

            set

            {

 

            }

            get

            {

                return 4;  // 值,无论多少,Ì4.

            }

        }

    }

 

    //一个错误的赋值方式 

    class PersonErroe

    {

        private int age;

        private string name;

 

        public int Age

        {

            set

            {

                this.Age = value;   //这样赋值将进入一个死循环,自己调用自己.

            }

            get

            {

                return this.Age;

            }

        }

    }

 

    // 一个只读的属性.

    class PersonReadOnly

    {

        private int age;

        public int Age

        {

            get { return age; }

        }

        public void IncAge()

        {

            age++;

        }

    }

 

}

 

 此代码运行结果为:

---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net/heima/