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

Foreach statement cannot operate on variables of type "?"

我有如下一段代码:

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

但我收到一条错误消息

Foreach statement cannot operate on variables of type "?"

我该如何解决这个问题?

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

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

        // Code
    }
}