【问题标题】:Foreach statement cannot operate on variables of type "?"Foreach 语句不能对“?”类型的变量进行操作
【发布时间】:2018-07-02 19:26:53
【问题描述】:

我有以下代码:

using (var sessionManager = GetDefaultAudioSessionManager2(DataFlow.Render))
{
    using (var sessionEnumerator = sessionManager.GetSessionEnumerator())
    {
        foreach (var session in sessionEnumerator)
        {
         //Code
        }
    }
}

但我收到一个错误提示

Foreach 语句不能对“?”类型的变量进行操作

我该如何解决这个问题?

【问题讨论】:

  • GetSessionEnumerator() 返回什么?我认为它不是 IEnumerableforeach 期望 IEnumerable
  • 尝试将“var sessionEnumerator”更改为“GetSessionEnumerator”返回的实际类型,看看编译器是怎么说的。
  • 奇怪的是,this answerunit testthis question.. 中的那行代码是“正确的”。

标签: c# naudio


【解决方案1】:

顾名思义,sessionEnumerator 是一个 IEnumerator,但 foreach 需要 IEnumerable。这是 foreach 语句的替代方案。

using (var sessionManager = GetDefaultAudioSessionManager2(DataFlow.Render))
{
    while(sessionEnumerator.MoveNext())
    {
        var session = sessionEnumerator.Current;

        // Code
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-22
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多