gpt4 book ai didi

c# - 将对象转换为通用列表

转载 作者:太空狗 更新时间:2023-10-29 20:46:27 26 4
gpt4 key购买 nike

我有一个要求,我可以在一个对象中获得以下内容 -

a type T or List<T> 

将对象转换为 T 很容易。我如何将它转换为列表(首先检查它是否可以成功转换),我想转换的原因是滚动列表并在每个元素上调用 tostring。

我的实际代码-

namespace Generic_Collection_Code
{
class Program
{
public static string DumpObj(object obj)
{
string sTemp = String.Empty;

List<int> ints = obj as List<int>;
if (ints != null)
{
foreach (int i in ints)
sTemp += i.ToString() + ",";
sTemp.Trim(',');
}
else
{
List<string> strings = obj as List<string>;
if (strings != null)
{
foreach (string s in strings)
sTemp += s + ",";
sTemp.Trim(',');
}
else
{
sTemp += obj.ToString();
}
}
return sTemp;
}
static void Main(string[] args)
{
List<int> listInts = new List<int>();
listInts.Add(1);
listInts.Add(2);
listInts.Add(3);

Console.WriteLine("Object1: {0}", DumpObj(listInts));
int i = 90;

Console.WriteLine("Object2 {0}", DumpObj(i));


List<string> listStrings = new List<string>();
listStrings.Add("1");
listStrings.Add("2");
listStrings.Add("3");

Console.WriteLine("Object3: {0}", DumpObj(listStrings));
Console.ReadKey();
}
}
}

上面的代码有效,但我知道这是一种丑陋的实现方式。我想从社区询问我怎样才能拥有这样的功能 -

    public static string DumpObj<T>(object obj)
{
string sTemp = String.Empty;

List<T> list = obj as List<T>;
if (list != null)
{
foreach (T i in list)
sTemp += i.ToString() + ",";
sTemp.Trim(',');
}
return sTemp;
}

这给了我编译错误,因为我必须在调用 DumpObj 时指定 T,错误为 -

错误 1 ​​无法从用法中推断方法“Generic_Collection_Code.Program.DumpObj(object)”的类型参数。尝试明确指定类型参数。 D:\DotNet\Generic_Collection_Code\Generic_Collection_Code\Program.cs 57 47 Generic_Collection_Code

如你所见,obj 是一个对象,我在调用 dumobj 时不知道它的类型。

我希望我已经清楚地说明了这一点。

感谢您的宝贵时间!

问候阿米特

最佳答案

List<T> genericList = object as List<T>;

if(genericList != null)
{
// Do the loop
}

“as”关键字验证“object”实际上是“一个”List 。如果是这样,您会从中得到一个 List< T >。如果不是,您将得到 null。

关于c# - 将对象转换为通用列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/694154/

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