【问题标题】:C# 2015 int++, ++int, int+=1, int = int +1; issuesC# 2015 int++, ++int, int+=1, int = int +1;问题
【发布时间】:2018-01-13 12:46:55
【问题描述】:

我真的对这么简单的问题感到困惑。以下代码不会每次都递增。

int deviceId = 0;
DeviceCollection coll = DirectSound.GetDevices();
foreach (DeviceInformation dev in coll.Skip(1))
{
    comboBoxDevice.Items.Add(deviceId+": "+dev.Description);
    deviceId++;
    comboBoxDevice.SelectedIndex = 0;
}

我的输出如下所示:

0: speaker1 .....
0: speaker2 .....
1: speaker3 .....

谁能告诉我为什么会这样?

我已经尝试过这样解决它:

++deviceId;
deviceId += 1;
deviceId = deviceId+1;

他们都得到了相同的结果。

【问题讨论】:

  • deviceIddefind 在哪里?
  • 您期望的输出是什么?
  • 您不会从对您展示给我们的代码的一次调用中获得该输出 - 您不会将0 视为deviceId 两次。我的猜测是您多次调用此代码。请提供minimal reproducible example。
  • @OliverLink 或许你应该首先考虑调试自己的代码……特别是学习使用断点。
  • 显示DirectSound.GetDevices()是否依赖comboBoxDevice.Items?

标签: c# increment


【解决方案1】:

问题已解决!

        DeviceCollection coll = DirectSound.GetDevices();
        foreach (DeviceInformation dev in coll.Skip(1))
        {
            comboBoxDevice.Items.Add(deviceId +": "+ dev.Description);
            deviceId++;                             
        }
        comboBoxDevice.SelectedIndex = 0;

我将 selectedIndexChangedEvent 添加到组合框,它将通过组合框的 selectedIndex 设置 deviceId。所以在第一个循环中,它会再次将 deviceId 设置为 0。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-26
    • 1970-01-01
    • 2011-09-07
    • 2012-10-04
    • 1970-01-01
    • 2021-05-18
    • 2010-12-24
    • 2010-11-18
    相关资源
    最近更新 更多