如何从列表类型中获取模板类型?

发布于 2024-10-18 12:37:22 字数 188 浏览 2 评论 0原文

我已经四处寻找这个有一段时间了。我想知道如何获取传递到创建列表的模板类型。例如。

List<string> listOfStrings = new List<string>();

我如何从中获取字符串类型?我知道如何使用类型来获取字段并查找列表类型,但不知道其中的模板。

I've been looking around for this for awhile. I would like to know how to get the type of the template passed into creating a list. For example.

List<string> listOfStrings = new List<string>();

How would I get the string type from this? I know how to use the type to get the fields and find the list type but not the template within it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

ゃ懵逼小萝莉 2024-10-25 12:37:22

在这种情况下,你可以这样得到它,

Type genericType = listOfStrings.GetType().GetGenericArguments()[0];

注意,如果你在非泛型类型上尝试这个,它会失败,因为GetGenericArguments数组的长度将为0,但是你当然可以采取措施来控制数组的长度。

In this instance, you can get it like this

Type genericType = listOfStrings.GetType().GetGenericArguments()[0];

Note that if you try this on a non generic type, it will fail because the length of the GetGenericArguments array will be 0, but you can of course take measures to control the length of the array.

甜尕妞 2024-10-25 12:37:22

您是在谈论获取存储在此列表中的项目类型吗?

listOfStrings[0].GetType()

将返回您的类型。

编辑:

这是正确的解决方案:

Type type = listOfStrings.GetType();
Type itemType = type.GetGenericArguments()[0]; 

Are you talking about getting type of items that are stored in this list?

listOfStrings[0].GetType()

will return you the type.

Edit:

This is the correct solution:

Type type = listOfStrings.GetType();
Type itemType = type.GetGenericArguments()[0]; 
沩ん囻菔务 2024-10-25 12:37:22

但也许他想知道如何在调用函数时获取 T...

void MyFunc<T>(List<T> list) {
    /// T is the type passed to the List<T>, so for a List<int>, T is int
    T element = default(T);
    list.Add(element);
}

But perhaps he wants to know how to get the T when calling a function...

void MyFunc<T>(List<T> list) {
    /// T is the type passed to the List<T>, so for a List<int>, T is int
    T element = default(T);
    list.Add(element);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文