如何进入私有静态元组,并使用 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;
请帮助:)。
正如您所发现的,正如我所怀疑但无法确定的那样,因为我没有所有代码,问题是由您的方法中的 static
关键字引起的。 删除它解决了问题。
static
修饰符用于指示方法/属性/字段/等属于类,而不是类的实例。 在 static
方法或属性中,不能使用 this
来引用类的"当前"实例,因为static
方法没有当前实例。
在 Windows 窗体中,为窗体中的各种控件(如 numericUpDown2
)创建的字段始终是"实例"字段,即不static
,因此它们属于窗体的每个单独实例,而不是 Form1
类。 这样,如果同时打开两个不同的Form1
,则两个窗体中的相应控件可以具有不同的值。 (您可能只需要在应用程序中使用一种Form1
,但其他应用程序中的其他表单可能需要多次使用。 Form1
类中的static
方法看不到这些控件中的任何一个,因为它属于Form1
类,其中实例(即非静态)方法属于每个单独的窗体。 因此,static
方法无法看到控件,因为它无法知道可能的许多控件中的哪种形式。
由于您是初学者,如果您不确定是否需要制作方法static
我会给您的建议是不要使该方法static
。 如果某个方法不使用任何特定于实例的字段或方法,您可以根据需要尝试将其设为static
,并查看这样做是否会引入任何编译器警告。