有没有办法强制引用 c# 中的另一个 ref 类型?



这是我的代码:

public ref TComponent Get<TComponent>()
where TComponent : struct, IComponent
{
for (int i = 0; i < Components.Length; i++)
{
if (Components[i] is TComponent)
{
// CS8151: The return expression must be of type 'T' because this method returns by reference
return ref Components[i];
}
}
// throw an exception
}

因此,如您所见,我正在尝试返回对IComponent[]中包含的特定对象的引用,并且我知道所有这些对象都是值类型。

如果我的方法返回ref IComponent,代码将编译,但问题将与我将被迫在方法输出时进行转换相同。

我知道我要返回的对象具有正确的类型并且可以解释为TComponent但编译器无法知道并发送给我错误。首先,我想使用指针,但它们可以用于托管类型。

所以,这是我的问题:我如何告诉编译器我的对象具有正确的类型并且可以通过引用返回?

换句话说,如何将一个引用类型转换为另一个引用类型?

泛型不能用于返回任何类型。泛型是类型安全的。因此,无论您使用 Get(( 方法传递什么类型,您都需要准确返回该类型。

Bat 你可以让所有类型从相同的接口或相同的基类型继承,然后返回该类型。

此外,需要考虑@RamblinRose的评论

相关内容

最新更新