首页 > 解决方案 > 我的“时间”类被我设置为小时、分钟和秒的默认数据卡住了,无法以任何方式更改它们的值

问题描述

我的家庭作业要求我开设一门名为“时间”的课程。当我初始化该类的两个实例时,其中一个随机分配小时、分钟和秒,而另一个从参数中获取它的输入,似乎两个实例都停留在默认的“0:0:0” .

这是课程:

class Time
    {
        private static int hours = 0;
        private static int minutes = 0;
        private static int seconds = 0;

        public static int Hours
        {
            get { return hours; }
            set { hours = (Hours > -1 && Hours < 24) ? Hours : 0; }
        }
        
        public static int Minutes
        {
            get { return minutes; }
            set { minutes = (Minutes > -1 && Minutes < 24) ? Minutes : 0; }
        }
        
        public static int Seconds
        {
            get { return seconds; }
            set { seconds = (Seconds > -1 && Seconds < 24) ? Seconds : 0; }
        }

        public Time() 
        {
            Random rand = new Random();
            Hours = rand.Next(-1, 24);
            Minutes = rand.Next(-1, 60);
            Seconds = rand.Next(-1, 60);
        }

        public Time(int hour, int minute, int second) 
        {
            Hours = hour; 
            Minutes = minute;
            Seconds = second; 
        }

        public string Show() 
        {
            return $"{hours}:{minutes}:{seconds}";
        }
    }

这是 Main 方法中的代码:

static void Main(string[] args)
{
    var T1 = new Time();
    var T2 = new Time(12, 24, 48);
    Console.WriteLine(T1.Show());
    Console.WriteLine(T2.Show());
    Console.ReadKey();
}

我已经尝试了一切,但没有任何效果,也许只是我没有看到问题。

标签: c#class

解决方案


几个问题:

  1. 不要static在这里使用。静态意味着每个实例都相同

  2. 不要用rand.Next(-1, 24)but初始化你的随机小时、分钟和秒rand.Next(0, 24)

  3. 二传手是错的:

    set { hours = (Hours > -1 && Hours < 24) ? Hours : 0; }
    

您必须使用value而不是Hours(与其他属性相同)。


推荐阅读