C#学习笔记: 运算符重载、override、get和set访问器

最近工作需要,得学习C#,Windows API的学习只好暂时告一段落。

面象对象没基础,记点小白记录,直接从C#100例上拿的程序,因为涉及到运算符重载、override、get和set访问器,都是我不会的,摘出来记一笔。其实很多东西放在程序里学习都要比看一堆文字容易理解的多,感谢这本教程:

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

namespace rectangle
{

    class Rectangle
    {
        private int iHeight;
        private int iWidth;

        // 缺省构造函数
        public Rectangle()
        {
            Height = 0;
            Width = 0;
        }
      
        // 构造函数重载
        public Rectangle(int w, int h)
        {
            Width = w;
            Height = h;
        }

        // 属性:宽 的get和set访问器           //对get和set的认识是,方便设定别的类对本类中该成员的只读或只写权限。
        public int Width               //get和set可心声明成不同的权限。                      
        {
            get
            {
                return iWidth;
            }
            set
            {
                iWidth = value;
            } 
        }

        // 属性:高 的get和set访问器
        public int Height
        {
            get
            {
                return iHeight;
            }
            set
            {
                iHeight = value;
            }
        }

        // 属性:面积 的get访问器
        public int Area
        {
            get
            {
                return Height * Width;
            }
        }

        // 重载操作符 ==
        public static bool operator ==(Rectangle a, Rectangle b)
        {
            return ((a.Height == b.Height) && (a.Width == b.Width));
        }

        // 重载操作符 !=
        public static bool operator !=(Rectangle a, Rectangle b)
        {
            return !(a == b);
        }

        // 重载操作符 >
        public static bool operator >(Rectangle a, Rectangle b)
        {
            return a.Area > b.Area;
        }

        // 重载操作符 <
        public static bool operator <(Rectangle a, Rectangle b)
        {
            return !(a > b);
        }

        // 重载操作符 >=
        public static bool operator >=(Rectangle a, Rectangle b)
        {
            return (a > b) || (a == b);
        }

        // 重载操作符 <=
        public static bool operator <=(Rectangle a, Rectangle b)
        {
            return (a < b) || (a == b);
        }

        // 重载ToString
        public override String ToString()   //此处如果不加override,下面的mark1调用的是这个函数,mark2调用的则是默认的ToString,加上了override,均调用的这个函数。
        {
            return "高=" + Height + ",宽=" + Width;
        }

        public static void Main()
        {
            // 实例化三个矩形并设置各自属性
            Rectangle objRect1 = new Rectangle();
            Rectangle objRect2 = new Rectangle();
            Rectangle objRect3 = new Rectangle(10, 15);
            objRect1.Height = 15;
            objRect1.Width = 10;
            objRect2.Height = 25;
            objRect2.Width = 10;
            int a = 10, b = 10;
            if (a == b) Console.WriteLine("both successful!");

            // 打印三个矩形的信息
            // 其中调用了ToString方法
            Console.WriteLine("矩形#1 " + objRect1.ToString());    //mark1
            Console.WriteLine("矩形#2 " + objRect2);          //mark2
            Console.WriteLine("矩形#3 " + objRect3);

            // 使用重载后的操作符比较矩形并打印结果
            if (objRect1 == objRect2)
            {
                Console.WriteLine("矩形#1和矩形#2高和宽都相等");
            }
            else
            {
                if (objRect1 > objRect2)
                {
                    Console.WriteLine("矩形1大于矩形2");
                }
                else
                {
                    Console.WriteLine("矩形1小于矩形2");
                }
            }

            if (objRect1 == objRect3)
            {
                Console.WriteLine("矩形1和矩形3高和宽都相等");
            }
            else
            {
                Console.WriteLine("矩形1和矩形3不相等");
            }
            Console.ReadLine();
        }
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值