gpt4 book ai didi

C# - 切换泛型

转载 作者:行者123 更新时间:2023-11-30 13:37:07 24 4
gpt4 key购买 nike

我试图在泛型方法中比较泛型参数和开关。这对我的解决方案不起作用。原因:参数必须是特定类型(bool、char、string、integral、enum)。

    public T testfunction<T, U>(U numb)
{
switch(numb){ //<-- error

}
....
}

但这背后的意义是什么?如果参数是通用的,我想做一个比较,为什么它必须是一个类型定义的变量?

最佳答案

您要在 switch 语句中测试什么?您肯定对传入的对象类型有所了解。

考虑:当您可以在您的方法中接受 Product 或 Customer 类型时,您将如何构建 switch 语句?您希望编译器为您做出的合理选择是什么?如果您希望编译器根据产品价格选择操作,那么这对 Customer 对象不起作用。但是,如果 Products 和 Customers 都有一个您想要转换的 CreateDate 字段,您可以将其提取到一个接口(interface)中并将其用作该方法的通用约束。

向您的泛型方法签名添加一个适当的约束,封装您所知道的关于您期望的类型的信息,然后您将能够切换:

public interface ICreateDate {

public DateTime CreateDate { get; set; }

}

public T testfunction<T, U>(U numb) where U : ICreateDate
{
switch(numb.CreateDate.DayOfWeek){

case DayOfWeek.Monday:

}
....
}

关于C# - 切换泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25747633/

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