You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

类型名称不存在错误:如何创建List的List?(附C#代码)

解决“类型名称不存在于类型中”的错误

嘿,我一眼就看出问题出在哪了——你把属性当成类型来用啦!让我给你拆解清楚:

错误原因

你的SomeClassName.SaveFields是一个属性,它的返回类型是List<char>,但它本身不是一个类型。而你在创建列表时写了List<SomeClassName.SaveFields>,这相当于告诉编译器“我要创建一个包含SomeClassName里名为SaveFields的类型的列表”,但实际上SaveFields根本不是嵌套类型,只是个属性,所以编译器才会抛出“类型名称不存在于类型中”的错误。

你真正想要的是创建一个**List的List**,也就是List<List<char>>,因为SaveFields的类型就是List<char>。

修正后的代码

类定义部分(可保持不变)

namespace TicTacToe
{
    class SomeClassName
    {
        static List<char> saveFields = new List<char>();
        public static List<char> SaveFields { get { return saveFields; } set { saveFields = value; } }
    }
}

方法部分(关键修正)

public void someMethod()
{
    // 直接用List<char>作为泛型参数,创建List的List
    List<List<char>> someListName = new List<List<char>>();
    
    // 如果你想和SaveFields的类型强关联,也可以这样写(效果完全一致)
    List<typeof(SomeClassName.SaveFields).GetGenericArguments()[0]> someListName = new List<typeof(SomeClassName.SaveFields).GetGenericArguments()[0]>();
    // 不过更推荐第一种写法,可读性更强
}

额外简化建议

如果觉得List<List<char>>写起来繁琐,也可以用C#的类型别名简化:

// 在命名空间顶部添加别名
using SaveFieldList = System.Collections.Generic.List<char>;

// 然后方法里就可以这样写
public void someMethod()
{
    List<SaveFieldList> someListName = new List<SaveFieldList>();
}

这样代码会更清晰,也能避免重复书写List<char>。

内容的提问来源于stack exchange,提问作者Julian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:23:33