【问题标题】:A local variable named 'port' cannot be declared [duplicate]无法声明名为“port”的局部变量[重复]
【发布时间】:2023-03-05 23:09:02
【问题描述】:

我正在尝试构建一个 Arduino 项目以通过 Open Hardware Monitor 测量 CPU 和 GPU 温度,现在我在 C# 应用程序中遇到问题。

它在第 45 行给出了这个错误:

不能在此范围内声明名为“端口”的局部变量 因为它会给'port'赋予不同的含义,这已经是 在“父级或当前”范围内使用以表示其他内容

我能得到一些帮助吗?非常感谢你!

private void Init()
{
    try
    {
        notifyIcon1.Visible = false;
        port.Parity = Parity.None;
        port.StopBits = StopBits.One;
        port.DataBits = 8;
        port.Handshake = Handshake.None;
        port.RtsEnable = true;
        string[] ports = SerialPort.GetPortNames();
45      foreach (string port in ports)
        {
            comboBox1.Items.Add(port);
        }
        port.BaudRate = 9600;
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

【问题讨论】:

  • 只需将 foreach 中的变量重命名为其他名称,因为您显然已经有了一个具有该名称的变量。
  • 错误很明显。您在某处还有另一个名为 port 的变量。
  • 你显然已经有一个名为port的变量,你已经在使用它了。所以你不能给循环变量(在你的foreach)同名。错误信息很清楚。
  • 我真的很想知道为什么这个问题被否决了。问题很清楚,格式也很好。我知道这是一个看似微不足道的问题,但 OP 显然不了解作用域是如何工作的,或者在 foreach 中声明了一个新变量,或者其他什么。为什么他们会因此受到惩罚?
  • @JasonBoyd 有很多问题要求完全相同(忽略变量名)错误消息。大概 OP 查看了那些现有的帖子,但是对于 SO 的问题质量很好,必须在帖子中显示研究。您还提供了为什么应该将帖子关闭为“不清楚”或“太宽泛”的原因,因为 OP 似乎对(非常详细的)错误消息中提到的概念有问题的理解......

标签: c#


【解决方案1】:

您的代码中已经有一个名为port 的变量。因此它不允许您在 foreach 循环中再次声明它。将其名称更改为其他名称:

foreach (string port2 in ports)
{
    comboBox1.Items.Add(port2);
}

【讨论】:

  • 我将数组命名为 serialPortNames 和 foreach 变量 serialPortName,这样更具描述性
猜你喜欢
  • 1970-01-01
  • 2018-11-23
  • 2014-02-12
  • 2019-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多