gpt4 book ai didi

c# - 如何在没有定义 T 类型的情况下存储类型为 'Class' 的类的集合

转载 作者:行者123 更新时间:2023-11-30 14:14:45 25 4
gpt4 key购买 nike

我遇到了一点困难,我不确定如何最好地解决这个问题。

我编写了一个类,它希望在创建新实例时指定数据类型。很像与 System.Collections.Generic.List<T> 相同的方式存储指定类型的多个项目的类。但是我的类没有与 List<T> 相同或相似的功能。类。

在创建我的类的新实例时,例如:

string phrase = "Some string type data.";
MyClass<string> data = new MyClass<string>( () => phrase );

之后,我的类(class)将提供许多方法,无论传递给 MyClass<T> 的数据类型如何,这些方法都会给出结果。 (其中 T 是数据类型)。不管它是字符串、 bool 值、整数还是任何类型。

我已经测试了我的类并且它按预期工作,现在我如何存储 MyClass 的多个元素?但是每个元素都具有不同的赋予数据类型,在一个集合类中,例如 List<> .

让我举例说明(代码将包含语法错误,因为我不确定如何正确编写):

// My intent... Not sure how to do it.
string phrase = "Some string data type.";
int number = 23;
bool boolData = false;

List<MyClass<T>> list = new List<MyClass<T>>();

list.Add( new MyClass<string>( () => phrase ) );
list.Add( new MyClass<int>( () => number ) );
list.add( new MyClass<bool>( () => boolData ) );

如您所见,我不知道如何存储具有不同传授数据类型的 MyClass 的多个元素,如果它们都是相同的传授数据类型,我就不会遇到这个问题。

例如:

// How it should be done. But not what I need.
string phrase1 = "Hello Phrase 1.";
string phrase2 = "Hello Phrase 2.";

List<MyClass<string>> list = new List<MyClass<string>>();

list.Add(new MyClass<string>( () => phrase1) );
list.Add(new MyClass<string>( () => phrase2) );

如果这是我想要完成的,我不会有问题,但由于我想完成我在最后一个示例之前举例说明的内容,我只是不确定如何最好地做到这一点。

基本上这就是我的问题,我提供了一些基本示例,因为我认为我的问题可能有点奇怪,老实说,我认为我的术语不够充分。

这对你们中的一些人来说可能很简单。感谢您的帮助。

最佳答案

通常您会为泛型类型创建一个非泛型基类(或接口(interface)):

abstract class MyClass // Or interface
{
// Anything useful but non-generic here
}

class MyClass<T> : MyClass
{
// Anything using T
}

然后你可以创建一个List<MyClass> .当然要获取 MyClass<T> 内的任何成员你需要知道正确的 T转换为,但我认为这是不可避免的。

当然,如果您不控制 MyClass<T>,这并没有太大帮助。并且它不提供有用的基类 - 但 C# 中没有任何东西可以帮助您解决这种情况。

关于c# - 如何在没有定义 T 类型的情况下存储类型为 'Class<T>' 的类的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11288458/

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