gpt4 book ai didi

c# - 将对象列表转换为字符串和泛型列表

转载 作者:太空宇宙 更新时间:2023-11-03 18:39:32 25 4
gpt4 key购买 nike

以下方案可以很好地处理字符串/基元。但是在处理列表时,它会在 getObj() 中给出类型转换错误。使用的类型是动态的,需要这种通用的使用。有没有更好的方法来实现它?

public static Object obj;
static public T getObj<T>()
{
return (T)obj;
}
private static string getStr()
{
return "some string";
}
private static List<Object> getList()
{
List<Object> res = new List<object>();
Object o = "str1";
res.Add(o);

o = "str2";
res.Add(o);
return res;
}

public static void Main()
{
obj = getStr();
string s = getObj<string>();

obj = getList();
List<string> slist = getObj<List<string>>();
}

最佳答案

您正在尝试转换 List<Object>List<String> .即使列表的所有内容都是String的, List仍然是List<Object> ,所以你不能像那样直接转换。

如果你真的想这样做,你可以改用这个:

List<Object> objList = { ... }; // all strings
List<String> strList = objList.Cast<String>().ToList();

无法从 List<Object> 进行转换的原因至 List<String>是因为所有字符串都是对象,但并非所有对象都是字符串;如果你投了 List<String>List<object>然后尝试添加 object (这不是 string ),行为将是未定义的。

关于c# - 将对象列表转换为字符串和泛型列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10562226/

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