Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法在c#中强制引用另一个ref类型?_C#_.net_Pointers - Fatal编程技术网

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

有没有办法在c#中强制引用另一个ref类型?,c#,.net,pointers,C#,.net,Pointers,这是我的密码: public ref t组件Get() 其中TComponent:struct,IComponent { 对于(int i=0;i

这是我的密码:

public ref t组件Get()
其中TComponent:struct,IComponent
{
对于(int i=0;i
因此,正如您所看到的,我试图返回对
IComponent[]
中包含的特定对象的引用,我知道所有这些对象都是值类型

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

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

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


换句话说,如何将引用类型转换为其他类型?

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

Bat您可以使所有类型从同一接口或同一基类型继承,然后返回该类型


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

这是否回答了您的问题?看起来您需要强制转换对象,这意味着您应该使用类而不是结构。return ref(TComponent)Components[i]?或者返回ref(TComponent)(object)Components[i]?我已经这样做了。TComponent继承自IComponent。我编辑了这个问题,因为我忘了添加这些信息。另外,@RamblinRose的问题没有回答我的问题。那么函数签名将是public ref IComponent Get(),您返回(IComponent)Components[i]。哦,我希望它是一个类而不是一个结构。这将使事情变得更简单、更安全。例如,您不必为ref关键字而烦恼