C#学习之路,学习笔记 第八章 8.5this关键字 和 8.6索引

8.5 this关键字 :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

//在类外要通过类的对象名来访问类的成员,但在类的定义代码中,可以直接使用所有成员。
//比如Cat类的内部可以直接使用变量name,在类外则要通过对象名引用,如Kitty.name。
//其实每个对象都有一个指向自己的this引用符,一般情况下,在类的内部,你可以直接使用类的成员
//也可以通过this引用符使用变量

namespace _8._5this关键字
{
    class Time
    {
        //类的变量成员
        private int hour;
        private int minute;
        private int second;

        //在函数中显式的使用this引用符
        private void SetTime(int hour,int minute,int second)
        {
            this.hour = hour;
            this.minute = minute;
            this.second = second;
        }

        //其他成员
        //……
        //……
    }   
     
    class Program
    {
        static void Main(string[] args)
        {

        }
    }
}


8.6 索引:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _8._6索引
{
    //索引可以让我们像数组那样访问类的成员
    //下面我们定义一个“立方体类”,它有长宽高三个属性
    class Cube
    {
        //私有变量成员
        private double length;
        private double width;
        private double heigh;

        //构造函数
        public Cube(double lengthValue,double widthValue,double heighValue)
        {
            length = lengthValue;
            width = widthValue;
            heigh = heighValue;
        }

        //索引
        public double this[int index]
        {
            get
            {
                switch(index)
                {
                    case 0: return length;
                    case 1: return width;
                    case 2: return heigh;
                    default:
                        throw new IndexOutOfRangeException("下标出界!");
                }
                    
            }
            set
            {
                switch (index)
                {
                    case 0: length = value; break;
                    case 1: width = value; break;
                    case 2: heigh = value; break;

                    default:
                        throw new IndexOutOfRangeException("下标出界!");
                }

            }
        }
    }
    //索引的函数体与属性类似,也是用get和set访问器。get访问器用于获取成员变量的值,set访问器
    //用来为成员变量赋值
    //索引的使用方法和数组完全一样,如果我们创建了一个名为box的Cube对象,就可以用box[0],box[1],box[2]分别表示长方体的长宽高了

    class Program
    {
        static void Main(string[] args)
        {
            Cube box = new Cube(6,5,4);

            Console.WriteLine("长:{0}", box[0]);
            Console.WriteLine("宽:{0}", box[1]);
            Console.WriteLine("高:{0}", box[2]);

            //计算面积
            double area = 2 * (box[0]*box[1] + box[0]*box[2] + box[1]*box[2]);
            Console.WriteLine("面积:{0}", area);

            //计算体积
            double volume = 1;
            for(int i=0;i<=2;++i)
            {
                volume *= box[i];
            }
            Console.WriteLine("体积:{0}", volume);

            Console.ReadLine();
            //C#还为我们提供了多维索引,只需提供多个下标即可,比如
            //Matrix类中的多维索引
            //public double this[int rowIndex,int columnIndex]
            //这需要嵌套的Switch语句才能实现
        }
    }
}


运行结果如下:





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值