夜光带你走进C# 游戏开发等(八十七)擅长的领域

夜光序言:

 

红颜知己没找到,人华丽偶到处寻。不知何处才是头,放纵个性随处飘。

 

 

 

 

 

 

 

 

 

 

 

正文:

 

 

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 案例1
{

    //这里,我们解释一下运算符的重载
    class Time
    {
        //定义两个私有的方法
        int hour;  //定义一个小时
        int min;  //定义一个分钟


        public Time(int hour, int min)  //传入的两个参数
        {
            this.hour = hour;
            this.min = min;
        }


        /// <summary>
        /// 不需要返回值,在当前时间基础上,增加t2时间
        /// </summary>
        /// <param name="t2">要增加的时间</param>

        public Time Add(Time t2)
        {
            Time result = new Time(0, 0);  //增加一个返回的时间之和
            // 8:50 + 1:50 → 9:100 这样就不对了

            // 我们之后再调整一下,调整成下面这种形式❤
            result.hour = this.hour + t2.hour + (this.min + t2.min) / 60;
            result.min = (this.min + t2.min) % 60;


            return result;
        }

        /// <summary>
        /// 针对+号,进行运算符的重构
        /// </summary>
        /// <returns></returns>
        public static Time operator +(Time t1, Time t2)
        {
            Time result = new Time(0, 0);
            result.hour = t1.hour + t2.hour + (t1.min + t2.min) / 60;
            result.min = (t1.min + t2.min) % 60;

            //最后再返回一个result
            return result;
        }


        /// <summary>
        /// 获取总的分钟数
        /// </summary>
        /// <returns></returns>
        public int GetTotalMinutes()
        {
            return this.hour * 60 + this.min;  //这样不就是总的分钟数了~~
        }



        /// <summary>
        /// 针对大于运算的重载,布尔类型的判断
        /// </summary>
        /// <param name="t1"></param>
        /// <param name="t2"></param>
        /// <returns></returns>
        public static bool operator >(Time t1, Time t2)
        {
            if (t1.GetTotalMinutes() > t2.GetTotalMinutes())
                return true;
            else
                return false;
        }


        /// <summary>
        /// 针对小于运算的重载,布尔类型的判断
        /// </summary>
        /// <param name="t1"></param>
        /// <param name="t2"></param>
        /// <returns></returns>
        public static bool operator <(Time t1, Time t2)
        {
            if (t1.GetTotalMinutes() < t2.GetTotalMinutes())
                return true;
            else
                return false;
        }


        /// <summary>
        /// 小于等于,其实就是不大于
        /// </summary>
        /// <param name="t1"></param>
        /// <param name="t2"></param>
        /// <returns></returns>
        public static bool operator <=(Time t1, Time t2)
        {
            return !(t1 > t2); // 返回一个为假,就是小于等于
        }



        public static bool operator >=(Time t1, Time t2)
        {
            return !(t1 < t2); // 返回一个为假,就是大于等于
        }


        /// <summary>
        /// 相等
        /// </summary>
        /// <param name="t1"></param>
        /// <param name="t2"></param>
        /// <returns></returns>
        public static bool operator ==(Time t1, Time t2)
        {
            /*return (t1.hour == t2.hour) && (t1.min == t2.min);  //这样子的写法是可以的*/
            return t1.GetTotalMinutes() == t2.GetTotalMinutes();  //这样子的写法和上面的写法本质上是一样的,表现形式不一样
        }

        /// <summary>
        /// 不相等
        /// </summary>
        /// <param name="t1"></param>
        /// <param name="t2"></param>
        /// <returns></returns>
        public static bool operator !=(Time t1, Time t2)
        {
            /*return (t1.hour == t2.hour) && (t1.min == t2.min);  //这样子的写法是可以的*/
            return !(t1 < t2);  //这样子的写法和上面的写法本质上是一样的,表现形式不一样
        }

        /// <summary>
        /// 写一个 tostring 方法
        /// </summary>
        /// <returns></returns>
        public override string ToString()
        {
            return string.Format("{0,2},{1,2}", hour, min);
        }

    }


    class Program
    {
        static void Main(string[] args)
        {
            Time t1 = new Time(8, 50);
            Time t2 = new Time(1, 50);
            Time x;
            /* Console.WriteLine(t1);*/
            /* Console.WriteLine(t1.hour, t1.min);  //因为都是私有变量,所以我们不可以这么写*//*
            Console.WriteLine(t1);  // t1.tostring
            Console.WriteLine(t2);  // t2.tostring

            x = t1 + t2; //因为传统的+运算符只可以适用于整型什么的,如果要满足当下的情况,我们需要对运算符进行重构

            Console.WriteLine(x);*/

            #region 比较时间的大小,夜光 输出时间较大者
            Debug.Assert(t1 > t2);  //断言(判断一句话是否为真)

            Debug.Assert(!(t1 < t2));  //断言(判断一句话是否为真)

            Debug.Assert(t1 >= t2);  //断言(判断一句话是否为真)

            Debug.Assert(!(t1 <= t2));  //断言(判断一句话是否为真)

            Debug.Assert(!(t1 == t2));  //断言(判断一句话是否为真)
            Debug.Assert(t1 != t2);   //断言(判断一句话是否为真)

            /*if(t1 > t2)  // Time.operator > (t1,t2)
            {
                Console.WriteLine(t1);
            }
            else
            {
                Console.WriteLine(t2);
            }*/

            Console.WriteLine("测试完毕");  //如果可以看到这几个字,说明之前的断言都没有触发

            #endregion

            Console.ReadLine();
        }
    }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值