gpt4 book ai didi

c# - 为什么我不能将 Guid 用作泛型类型约束?

转载 作者:行者123 更新时间:2023-11-30 19:59:00 25 4
gpt4 key购买 nike

我有如下这个通用方法,我想将 T 限制为仅 Guid 类型:

public static EntityFindApiResponse EntityFind<T>(
Credential cred, EntitiesApiClient entitiesApiClient, string clrType,
string propertyName, T searchKey)
where T: Guid
{
// ...
}

编译器告诉我

'System.Guid' is not a valid constraint. A type used as a constraint must be an interface, a non-sealed class or a type parameter.

那么,为什么这不起作用?

最佳答案

首先,Guid 是一个struct。您不能为 struct 设置通用约束,因为 struct 不能派生自(意味着您不能从 struct 继承)。

进一步说 where T: Guid 实际上是“where T is of type Guid or a type that derived from Guid”,因为什么都不能从 struct 派生,这就像说“其中 T 是 Guid 类型”,这违背了泛型的初衷。

关于c# - 为什么我不能将 Guid 用作泛型类型约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25270494/

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