gpt4 book ai didi

c# - 返回不同类型时是否建议使用多种方法?

转载 作者:行者123 更新时间:2023-12-02 05:15:14 24 4
gpt4 key购买 nike

我从 Entity 返回值目的。其中一些是 String打字,有些不是。现在,我做了如下快速解决方案。

private String GetStringValue(Entity entity, String attribute, String substitute = "")
{
if(entity.Contains(attribute)
return entity[attribute] as String;
return substitute;
}

private String GetIntValue(Entity entity, String attribute, int substitute = 0)
{
if(entity.Contains(attribute)
return entity[attribute] as int;
return substitute;
}

然后我想起了通用类型的语法(类似于 <TypeX> )。但是,我的问题是,是否有必要开始更改现有代码。我需要在两个地方(返回类型和替代类型)更改方法的签名,但我担心我还需要在方法内部做一些复杂的编码。

另一方面,我有一个很好的方法来处理所有可能的类型(而且我有预感我们将处理的不仅仅是字符串和整数。

最佳答案

您必须在三个 处更改方法的签名,因为您还必须添加通用参数:

private T GetValue<T>(Entity entity, String attribute, T substitute)

方法中,实际上不需要任何复杂的编码;将当前出现的 stringint 分别替换为 T 应该就足够了。 (请注意,as 运算符只能在您将 T 限制为引用类型时应用 - 您可能不想这样做,因为 int 是一个值类型)。

请注意,此方法有两个问题,您可能会认为这是缺点:

  • 这个泛型方法将支持“所有可能的类型”,但它也将支持任何不可能的类型(用户可以自由地为T指定他们喜欢的任何类型,并且在仍然支持 stringint 的同时,无法限制 T
  • 您不能为每种类型指定任意默认替代值。你可以做的是为substitute声明一个默认值,即default(T),但至少对于string,这不是空的字符串,但 null

关于c# - 返回不同类型时是否建议使用多种方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14768434/

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