gpt4 book ai didi

c# - Java 的 Class 类型在 C# 中的等价物是什么?

转载 作者:太空狗 更新时间:2023-10-29 18:19:13 24 4
gpt4 key购买 nike

在 Java 中,Class 有泛型参数 X 很方便。但是 C# 的 Type 类没有这个。

那么在 C# 中,如何执行与以下 Java 代码等效的操作?:

public <X> X methodThatReturns(Class<X> clazz) { ... }

在 C# 中似乎没有办法连接返回值和传递的类型。

澄清
几个答案表明 method 参数不是必需的,因为该方法可以简单地定义为 methodThatReturns<X>() .

但是如果您确实有一些未知的类型变量,t ,基本上没有办法调用这样的泛型方法,以便它返回类型为 t 的对象。 ?

在 Java 中,您可以随意传递 Class<X>变量而不会丢失类型信息,但似乎在 C# 中,如果你传递等效的 Type变量,您可能会遇到限制,因为当您需要调用泛型方法时无法使用它们。

最佳答案

public X methodThatReturns<X>(Class<X> clazz) { ... }

另请记住,在 C# 中没有类型删除,因此您可以放心地执行 typeof(T) 之类的操作,以防万一 Class 是 java “类”对象而不是“某些类”占位符:

public X methodThatReturns<X>(X value)
{
Type x = typeof(X); // that's fine
if (value is SomeType) { } // that's fine too
return (X)someObject; // I think you get the point
}

编辑:

同样,由于泛型类型信息在编译后不会丢失,因此您无需显式传入类型:

public X methodThatReturns<X>()
{
Type xType = typeof(X); // Type is to C#/.Net what Class<X> is to Java.
}

关于c# - Java 的 Class<X> 类型在 C# 中的等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5722344/

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