如何进入私有静态元组,并使用 numericUpDown 更改 Math.Round

本文关键字:numericUpDown 更改 Round Math 何进入 静态 元组 | 更新日期: 2023-09-27 17:57:03

这是我解析 NMEA 数据的代码部分(来源在这里使用 richTextBox C# 中的值绘制图表)。此函数从 richTextBox 获取纬度,并将其转换为十进制表示法。我需要它,从 4 个另一个 GPS 模块绘制特征(比较所有四个 GPS 的准确性)。

这是我的问题。我想使用"numericUpDown"来更改Math.Round(下面我有值 - 11)。我无法进入元组,因为我有错误(我试图做某事,但它没有用)。谁能知道,我该怎么办?

private static Tuple<double>[] szerokosc(string[] lines)
    {
        return Array.ConvertAll(lines, line =>
        {   
            string[] elems = line.Split(',');
            double we = 0.01 * double.Parse(elems[3], EnglishCulture);
            int stopnie = (int)we;
            double minuty = ((we - stopnie) * 100) / 60;
            double szerokosc_dziesietna = stopnie + minuty;
            return new Tuple<double>(Math.Round(szerokosc_dziesietna, 11));
        });
        ;
    }

我想要这样的东西:

   return new Tuple<double>(Math.Round(szerokosc_dziesietna, round_value));

其中(例如):

int round_value = (int)numericUpDown1.Value; 

我声明:

numericUpDown1.Minimum = 1;
numericUpDown1.Maximum = 11;

请帮助:)。

如何进入私有静态元组,并使用 numericUpDown 更改 Math.Round

正如您所发现的,正如我所怀疑但无法确定的那样,因为我没有所有代码,问题是由您的方法中的 static 关键字引起的。 删除它解决了问题。

static修饰符用于指示方法/属性/字段/等属于类,而不是类的实例。 在 static 方法或属性中,不能使用 this 来引用类的"当前"实例,因为static方法没有当前实例。

在 Windows 窗体中,为窗体中的各种控件(如 numericUpDown2)创建的字段始终是"实例"字段,即不static,因此它们属于窗体的每个单独实例,而不是 Form1 类。 这样,如果同时打开两个不同的Form1,则两个窗体中的相应控件可以具有不同的值。 (您可能只需要在应用程序中使用一种Form1,但其他应用程序中的其他表单可能需要多次使用。 Form1类中的static方法看不到这些控件中的任何一个,因为它属于Form1类,其中实例(即非静态)方法属于每个单独的窗体。 因此,static方法无法看到控件,因为它无法知道可能的许多控件中的哪种形式。

由于您是初学者,如果您不确定是否需要制作方法static我会给您的建议是不要使该方法static。 如果某个方法不使用任何特定于实例的字段或方法,您可以根据需要尝试将其设为static,并查看这样做是否会引入任何编译器警告。