美文网首页
Lession06面向对象深入

Lession06面向对象深入

作者: 任人渐疏_Must | 来源:发表于2021-06-09 09:18 被阅读0次

结构体

 /*
     * 结构:可以帮助我们一次性声明多个不同类型的变量
     * 语法:
     * [public] struct 结构名
     * {
     *      结构体成员;//字段
     * }
     * 
     * 
     */
    public struct Person
    {
        //构造方法(不能使用无参的构造方法)
        //public Person()
        //{
        //}

        //只能声明有参数的构造方法
        public Person(string name,int age,Gender gender)
        {
            this._name = name;
            this._age = age;
            this._gender = gender;
        }

        public string _name;  //定义的成员变量不能赋初值
        public int _age;
        public Gender _gender;

        public void SayHello()
        {
            Console.WriteLine("你好{0}",this._name);
        }
    }

    public enum Gender
    {
        男,
        女
    }

    class Program
    {
        static void Main(string[] args)
        {
            Person zsPerson;  //定义结构可以不用new
            zsPerson._name = "张三"; //为结构成员赋值
            zsPerson._age = 18;
            zsPerson._gender = Gender.男;
            Change(zsPerson);//值类型
            Console.WriteLine(zsPerson._name);
            zsPerson.SayHello();

            Person lsPerson;
            lsPerson._name = "李四";
            lsPerson._age = 19;
            lsPerson._gender = Gender.女;
            Console.WriteLine(lsPerson._name);
            lsPerson.SayHello();

            //使用带有参数构造方法的方式定义结构
            Person wwPerson = new Person("王五",18,Gender.女);
            Console.WriteLine(wwPerson._name);
            wwPerson.SayHello();
            Console.ReadKey();
        }

        public static void Change(Person p)
        {
            p._name = "张三丰";
            p._age = 19;
        }
    }


访问私有成员属性

/*
     * 定义属性的语法:
     * 访问修饰符 数据类型 属性名
     * {
     *  get{ 返回私有成员变量;}
     *  set{设置私有成员变量;}
     * }
     * 
     */

 class Person
    {
        //三个字段
        private string _name;
        public string Name
        {
            //当你输出属性的值的时候,会执行get方法
            get { return _name; }
            //当你给属性赋值的时候,首先会执行set方法
            set { _name = value; }
        }
        private int _age;
        public int Age
        {
            get { return _age; }
            set
            {
                if (value < 0 || value > 100)
                {
                    value = 0;
                }
                _age = value;
            }
        }
        private char _gender;

        public char Gender
        {
            get
            {
                if (_gender != '男' && _gender != '女')
                {
                    return _gender = '男';
                }
                return _gender;
            }
            set { _gender = value; }
        }
        public void CHLSS()
        {
            Console.WriteLine("我叫{0},我今年{1}岁了,我是{2}生,我可以吃喝拉撒睡哟~~~~", this.Name, this.Age, this.Gender);
        }
    }

 class Program
    {
        static void Main(string[] args)
        {
           //创建Person类的对象
            Person zhangsan = new Person();
            zhangsan.Name = "张三";
            zhangsan.Age = -19;
            zhangsan.Gender = '东';
            zhangsan.CHLSS();
            Console.ReadKey();
        }
    }


索引器

 /*
     * 索引器的语法:
     * [访问修饰符] 数据类型 this [数据类型 标识符]{
     *  get{}
     *  set{}
     * 
     * }
     * 
     * 
     */
    class Program
    {
        static void Main(string[] args)
        {
            Student s = new Student();
            //“=”号右边对索引器赋值,其实就是调用其set方法
            s[0] = "张三";
            s[1] = "李四";
            //输出索引器的值,其实就是调用其get方法
            Console.WriteLine(s[0]);
            Console.WriteLine(s[1]);
            Console.WriteLine("------------------------------");

            Person p = new Person();
            //p.Numbers = new int[] { 10, 20, 30 ,40,50};
            //for(int i = 0; i < p.Numbers.Length; i++)
            //{
            //    Console.WriteLine(p.Numbers[i]);
            //}
            p[0] = 1;
            p[1] = 2;
            Console.WriteLine(p[0]);
            Console.WriteLine(p[1]);


            Console.ReadKey();
        }
    }

    class Student
    {
        private string[] name = new string[10];
        //索引器必须以this关键字定义,其实这个this就是类实例化之后的对象
        public string this[int index]
        {
            get
            {
                return name[index];
            }
            set
            {
                name[index] = value;
            }
        }
    }
    class Person
    {
        private int[] numbers = new int[5];
        public int[] Numbers
        {
            get
            {
                return numbers;
            }
            set
            {
                numbers = value;
            }
        }
        public int this[int index]
        {
            get
            {
                return numbers[index];
            }
            set
            {
                numbers[index] = value;
            }
        }
    }

相关文章

网友评论

      本文标题:Lession06面向对象深入

      本文链接:https://www.haomeiwen.com/subject/agydeltx.html