c# - 我的“时间”类被我设置为小时、分钟和秒的默认数据卡住了,无法以任何方式更改它们的值
问题描述
我的家庭作业要求我开设一门名为“时间”的课程。当我初始化该类的两个实例时,其中一个随机分配小时、分钟和秒,而另一个从参数中获取它的输入,似乎两个实例都停留在默认的“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();
}
我已经尝试了一切,但没有任何效果,也许只是我没有看到问题。
解决方案
几个问题:
不要
static
在这里使用。静态意味着每个实例都相同不要用
rand.Next(-1, 24)
but初始化你的随机小时、分钟和秒rand.Next(0, 24)
二传手是错的:
set { hours = (Hours > -1 && Hours < 24) ? Hours : 0; }
您必须使用value
而不是Hours
(与其他属性相同)。
推荐阅读
- java - 在多个场合使用线程更新 Javafx ProgressBar 时出现问题
- javascript - 外部数据更改时更新 React 组件
- ar.js - ar.js NFT 标记生成器置信度评级
- python - 通过 RNN 和 csv 数据生成自然语言
- python-3.x - 改变数据的形状和结构
- react-native - 传递方法更新父母状态会导致 React Navigation 5.7 中的 WARN
- javascript - 如何摆脱组件重复,唯一的区别是循环
- java - Android无法设置通知
- c# - JWT WriterToken 函数抛出 IDX10653 错误
- amazon-web-services - IAM 和 AWS 组织之间的区别