Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获得';T';必须是具有公共无参数构造函数的非抽象类型,才能将其用作参数';T';在泛型类型或方法中_C#_Generics_Generic Programming - Fatal编程技术网

C# 获得';T';必须是具有公共无参数构造函数的非抽象类型,才能将其用作参数';T';在泛型类型或方法中

C# 获得';T';必须是具有公共无参数构造函数的非抽象类型,才能将其用作参数';T';在泛型类型或方法中,c#,generics,generic-programming,C#,Generics,Generic Programming,我对C#有点陌生,我见过一些关于如何进行泛型处理的示例,但我找不到一个外行术语的示例 我将分享我试图做什么,请任何简单的语言输入将不胜感激 static readonly Lazy<SQLiteAsyncConnection> lazyInitializer = new Lazy<SQLiteAsyncConnection>(() => { return new SQLiteAsyncConnection(Constants.Database

我对C#有点陌生,我见过一些关于如何进行泛型处理的示例,但我找不到一个外行术语的示例

我将分享我试图做什么,请任何简单的语言输入将不胜感激

static readonly Lazy<SQLiteAsyncConnection> lazyInitializer = new Lazy<SQLiteAsyncConnection>(() =>
    {
        return new SQLiteAsyncConnection(Constants.DatabasePath, Constants.Flags);
    });

    public static SQLiteAsyncConnection Database => lazyInitializer.Value;

    public async Task<List<T>> GetItemsAsync<T>()
    {
        var data = await Database.Table<T>().ToListAsync();
        return data;
        //return Database.Table<TodoItem>().ToListAsync();
    }
static readonly Lazy初始值设定项=new Lazy(()=>
{
返回新的SQLiteAsyncConnection(Constants.DatabasePath、Constants.Flags);
});
公共静态SQLiteAsyncConnection数据库=>lazyInitializer.Value;
公共异步任务GetItemsAsync()
{
var data=await Database.Table().ToListAsync();
返回数据;
//返回Database.Table().ToListAsync();
}
我得到了一个错误

T
”必须是具有公共无参数构造函数的非抽象类型,才能将其用作泛型类型或方法“
SQLiteAsyncConnection.Table()
”中的参数“
T


我已经讲过了,但是我很难理解在
表的type参数上有一个泛型类型约束。然后,您必须确保要与
一起使用的任何新的泛型类型参数都具有匹配(或更严格)的类型约束。这里是:

public异步任务GetItemsAsync(),其中T:new()
{
var data=await Database.Table().ToListAsync();
返回数据;
//返回Database.Table().ToListAsync();
}

表的类型参数上有一个泛型类型约束。然后,您必须确保要与
一起使用的任何新的泛型类型参数都具有匹配(或更严格)的类型约束。这里是:

public异步任务GetItemsAsync(),其中T:new()
{
var data=await Database.Table().ToListAsync();
返回数据;
//返回Database.Table().ToListAsync();
}

如果我真的很幼稚,我很抱歉,但你能帮我更好地理解这一点吗?如果我真的很幼稚,我很抱歉,但你能帮我更好地理解这一点吗?
public async Task<List<T>> GetItemsAsync<T>() where T: new()
{
    var data = await Database.Table<T>().ToListAsync();
    return data;
    //return Database.Table<TodoItem>().ToListAsync();
}