gpt4 book ai didi

c# - 无法将类型为 'd__8' 的对象转换为类型 'IXYPair'

转载 作者:太空宇宙 更新时间:2023-11-03 16:16:27 28 4
gpt4 key购买 nike

EnumerablePointEnumerator<T>.GetCurrent(ref Point p) ( Microsoft.Research.DynamicDataDisplay.DataSources ) 我收到一个错误 Unable to cast object of type '<XYPairsInRange>d__8' to type 'IXYPair'.

XYPairsInRange 不是一个类型,而是我类的一个方法,返回类型为 IEnumerable

public IEnumerable<IXYPair> XYPairsInRange(double startX, double endX)
{
foreach (IXYPair pair in this.XYPairs)
{
if (pair.X >= startX && pair.X <= endX)
{
yield return pair;
}
}
}

public IEnumerable<IXYPair> XYPairs
{
get
{
int counter = 0;
foreach (double x in XValues)
{
yield return new XYPair() { X = x, Y = YValues[counter++] };
}
}
}

IXYPair 定义为

public interface IXYPair
{
double X { get; }
double Y { get; }
}

在运行时可能会导致此错误的原因是什么?我已经尝试显式转换 yield return 语句并返回一个列表(没有 yield)但没有成功

编辑:XValues 和 YValues 都是 List

调用代码:

public IEnumerable Query()
{
yield return this.Data.XYPairsInRange(Double.NegativeInfinity, Double.PositiveInfinity);
}

最佳答案

问题是您从 Query() 方法中生成一个枚举器,而不是枚举器中的项目:

这个:

public IEnumerable Query()
{
yield return this.Data.XYPairsInRange(Double.NegativeInfinity, Double.PositiveInfinity);
}

可以重写如下:

public IEnumerable<IEnumerable<IXYPair>> Query()

现在您应该找出为什么这不起作用。

您应该将方法的主体重写为:

public IEnumerable<IXYPair> Query()
{
return this.Data.XYPairsInRange(...);
}

或对此(以上优先):

public IEnumerable<IXYPair> Query()
{
foreach (var pair in this.Data.XYPairsInRange(...))
yield return pair;
}

关于c# - 无法将类型为 '<XYPairsInRange>d__8' 的对象转换为类型 'IXYPair',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15678714/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com