加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#泛型和推断类型

发布时间:2020-12-16 00:01:01 所属栏目:百科 来源:网络整理
导读:我在努力编写通用方法来保存和加载Sterling数据库中的数据时遇到了困难. 这是我的保存方法: public static void SaveListT(ListT listToSave){ foreach (T listItem in listToSave) { DatabaseInstance.Save(listItem); }} 我在保存下出现了波浪形的红线,并
我在努力编写通用方法来保存和加载Sterling数据库中的数据时遇到了困难.

这是我的保存方法:

public static void SaveList<T>(List<T> listToSave)
{
    foreach (T listItem in listToSave)
    {
        DatabaseInstance.Save(listItem);
    }
}

我在保存下出现了波浪形的红线,并且出现“类型T必须是参考类型才能将其用作参数T”的错误

这是我的加载方法:

public static List<T> LoadList<T>()
    {
        List<T> list = (from index in DatabaseInstance.Query<T,int>() select index.Key).ToList();

        return list;
    }

我犯了同样的错误.

有任何想法吗?

干杯

史蒂夫

更新:

我按照建议添加了一个T:class,并收到错误:

Type T必须具有公共无参数构造函数才能将其用作参数

按照Bryan提供的链接中的说明添加,new()结束,现在全部工作.

解决方法

您的定义需要 generic type constraint:

public static void SaveList<T>(List<T> listToSave) where T : class
{
    foreach (T listItem in listToSave)
    {
        DatabaseInstance.Save(listItem);
    }
}

public static List<T> LoadList<T>()  where T : class
{
    List<T> list = (from index in DatabaseInstance.Query<T,int>() select index.Key).ToList();
    return list;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读