Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在形式中递增整数_C#_Winforms - Fatal编程技术网

C# 在形式中递增整数

C# 在形式中递增整数,c#,winforms,C#,Winforms,在我的表格1中,我有以下整数: 公共静态int已完成 我有多个课程在我的计划Runner是超类,如果您愿意,则有Expert:Runner、初学者:Runner和禁用:Expert 我的表单上基本上有三个numericUpDown框,供用户输入表示时间(小时、分钟和秒)的数字。还有一个名为lstranners的列表框,它使用对象数组填充,如下所示: Runner[] runnerList; runnerList = new Runner[10]; 我有一个名为btnFinish的按钮。我想做的

在我的表格1中,我有以下整数:

公共静态int已完成

我有多个课程在我的计划
Runner
是超类,如果您愿意,则有
Expert:Runner
初学者:Runner
禁用:Expert

我的表单上基本上有三个
numericUpDown
框,供用户输入表示时间(小时、分钟和秒)的数字。还有一个名为
lstranners
的列表框,它使用对象数组填充,如下所示:

Runner[] runnerList;
runnerList = new Runner[10];

我有一个名为
btnFinish
的按钮。我想做的是在
Expert
类中添加一个名为
CountFinished24()
的方法,如果选定的专家或禁用的跑步者在24:00:00或更短时间内完成跑步,我希望基本上将
completed
整数增加1。只有专家和残疾跑步者才能记录。我不知道该怎么做?

向Runner添加一个虚拟onfinish()方法,该方法由btnFinish调用。为Expert和Disabled重写此方法,并增加已完成的整数如果他们在24小时内完成比赛

仅详细说明Weyland的答案,您的Runner类中可能有类似的内容:

 protected virtual int OnFinish(int h, int m, int s) 
 { 
      return 0;
 }
然后在ExpertRunner/DisabledRunner中,只需添加ovverride关键字即可覆盖OnFinish:

 protected override int OnFinish(int h, int m, int s)
 { 
      //IF the total time is less than 24:00:00
           return 1;
      else
           return 0;
 }
然后在你的表格上

 private void btnFinish_Click(object sender, EventArgs e)
 {
      completed += myExpertRunner.OnFinish(numericHour, numericMinute, numericSecond);
 }
您可能希望使用某种自定义对象(或日期时间)以更易于使用的方式存储H:M:S。但是无论如何

本质上,
override
允许您使用具有相同参数、使用相同名称但行为不同的方法

一个非常常见的例子是属于所有对象的
ToString()
方法。调用此方法时,它可能只是以字符串形式返回对象类型。其他对象重写这个ToString()方法并返回不同的结果。例如,StringBuilder类的ToString方法返回一个包含每个“元素”的字符串


阅读MSDN上的关键字。它也有例子。在他们的第一个示例中,他们使用了一个抽象类,但在第二个示例中,他们所做的事情与我在这里所写的更为相似。

@WeylandYutani您能为我们提供一些示例代码吗?我不是100%确定我在这里做什么。有没有什么方法可以测试一下这是否有效,比如说,将它输出到一个字符串?@user29108当然可以。您所需要做的就是在您的按钮中单击以下内容:
MessageBox.Show(myExpertRunner.OnFinish().ToString())
这里,ToString方法只是将数字转换为一个包含该数字的字符串:)其中的
myExpertRunner
count
来自哪里?我的申请表中没有这些。哦,对不起,我忘了你叫它什么了<代码>计数器
是您的
已完成
整数。就
myExpertRunner
而言,这只是
Expert
对象的一个实例。由于该方法属于该类,并且不是声明为静态的,因此必须对该对象的实例调用它?我没有那样做。