错误:必须在顶级静态类中定义扩展方法(CS1109)

我正在尝试制作一个倒计时程序,我可以开始和停止,并在需要时将倒计时的值设置为10分钟。

但我收到的错误我不太明白。 我不是那样的C#,所以这里是代码:

有人可以帮我一点吗? 想想我在框架3.0上运行什么?

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Timers; namespace PauseMaster { public partial class MainForm : Form { public MainForm() { InitializeComponent(); } private void MainForm_Load(object sender, EventArgs e) { } private DateTime endTime; private void btnStartStop_Click(object sender, EventArgs e) { if(btnStartStop.Text == "START") { int hours = int.Parse(string.IsNullOrEmpty(txtCountFromHour.TextBox.Text) || txtCountFromHour.TextBox.Text == "timer" ? "0" : txtCountFromHour.TextBox.Text); int mins = int.Parse(string.IsNullOrEmpty(txtCountFromMin.TextBox.Text) || txtCountFromMin.TextBox.Text == "minutter" ? "0" : txtCountFromMin.TextBox.Text); int secs = int.Parse(string.IsNullOrEmpty(txtCountFromSec.TextBox.Text) || txtCountFromSec.TextBox.Text == "sekunder" ? "0" : txtCountFromSec.TextBox.Text); endTime = DateTime.Now.AddHours(hours).AddMinutes(mins).AddSeconds(secs); timer1.Enabled = true; btnStartStop.Text = "STOP"; } else { timer1.Enabled = false; btnStartStop.Text = "START"; } } private void timer1_Tick(object sender, EventArgs e) { if (endTime <= DateTime.Now) { timer1.Enabled = false; lblTimer.Text = "00:00:00"; btnStartStop.Text = "Start"; return; } TimeSpan ts = endTime - DateTime.Now; lblTimer.Text = string.Format("{0}:{1}:{2}.{3}", ts.Hours.AddZero(), ts.Minutes.AddZero(), ts.Seconds.AddZero()); } public static class IntExt { public static string AddZero(this int i) // GETTING ERROR HERE AT 'AddZero' { int totLength = 2; int limit = (int)Math.Pow(10, totLength - 1); string zeroes = ""; for (int j = 0; j < totLength - i.ToString().Length; j++) { zeroes += "0"; } return i < limit ? zeroes + i : i.ToString(); } } } } 

错误消息确切地说IntExt什么是错误的:您的IntExt方法不是顶级静态类。 它是一个嵌套的静态类。 只需将它从MainForm拉出来就可以了。

我知道这个问题很老,但万一有其他人遇到这个问题……

检查以确保关键字“this”不在参数名称定义中(通常来自复制/粘贴或拖动)

所以,替换:

 public static string AddZero(this int i) 

有了这个:

 public static string AddZero(int i) 

这应该可以解决你的问题。