C# 字符串和列表的通用方法<;列表(对象)>;

C# 字符串和列表的通用方法<;列表(对象)>;,c#,generics,C#,Generics,我是C#泛型新手,对它了解不多,还在学习。我想为这两个方法编写一个通用方法。但是,由于方法1接收列表,因此不应在此处使用泛型方法。当您的方法可以处理任何类型(满足某些约束)时,应该使用泛型。如果您的方法只能处理两种类型:string和List,那么应该将其保留为两个重载 不过,您可以减少代码重复。请注意,第二种方法的主体是第一种方法的“内部”。您可以使用对第二个方法的调用替换第一个方法第二行之后的所有内容: public static void WriteReports(string expec

我是C#泛型新手,对它了解不多,还在学习。我想为这两个方法编写一个通用方法。但是,由于方法1接收列表,因此不应在此处使用泛型方法。当您的方法可以处理任何类型(满足某些约束)时,应该使用泛型。如果您的方法只能处理两种类型:
string
List
,那么应该将其保留为两个重载

不过,您可以减少代码重复。请注意,第二种方法的主体是第一种方法的“内部”。您可以使用对第二个方法的调用替换第一个方法第二行之后的所有内容:

public static void WriteReports(string expectedDailyData, string actualDailyData, string fileName)
{
    var baseline = FormatData(expectedDailyData);
    var actual = FormatData(actualDailyData);
    WriteReports(baseline, actual, filename);
}

这里不应该使用泛型方法。当您的方法可以处理任何类型(满足某些约束)时,应该使用泛型。如果您的方法只能处理两种类型:
string
List
,那么应该将其保留为两个重载

不过,您可以减少代码重复。请注意,第二种方法的主体是第一种方法的“内部”。您可以使用对第二个方法的调用替换第一个方法第二行之后的所有内容:

public static void WriteReports(string expectedDailyData, string actualDailyData, string fileName)
{
    var baseline = FormatData(expectedDailyData);
    var actual = FormatData(actualDailyData);
    WriteReports(baseline, actual, filename);
}

这可能不太适合泛型,而更适合方法重载。@Abion47但基本上两种方法都在做相同的事情,就像冗余代码一样,所以我想如果有办法优化代码,很难给你一些具体的代码,除非我们知道
FormatData
返回的类型-你刚刚离开了它作为
var
。理想情况下,您应该发布一个。这可能不是泛型的情况,而是方法重载的情况。@Abion47但基本上这两个方法都在做相同的事情,就像冗余代码一样,所以我们想如果有办法优化代码,很难给您一些具体的代码,除非我们知道返回的类型
FormatData
-您刚刚将其保留为
var
。理想情况下,你应该发布一个。但问题是在某些情况下,我已经收到格式化的结果,但在某些情况下,我必须格式化结果got@PeterJackson是的,这就是为什么你有两种方法,对吗?啊,对。是的,我明白你的意思。非常感谢:“PeterJackson,如果你认为我的答案能回答你的问题,请考虑通过点击那个标记来接受它!”彼得·杰克森,你为什么不把答案标记为正确,有什么特别的原因吗?我看你有很多问题,没有一个答案是正确的。如果你觉得答案解决了你的问题,你必须选择问题左侧的灰色勾号,使其变为绿色,这意味着解决方案解决了你的问题。但在某些情况下,我已经收到格式化的结果,但在某些情况下,我必须格式化结果got@PeterJackson是的,这就是为什么你有两种方法,对吗?啊对。是的,我明白你的意思。非常感谢:“PeterJackson,如果你认为我的答案能回答你的问题,请考虑通过点击那个标记来接受它!”彼得·杰克森,你为什么不把答案标记为正确,有什么特别的原因吗?我看你有很多问题,没有一个答案是正确的。如果您觉得答案解决了您的问题,您必须选择问题左侧的灰色勾号,使其变为绿色,这意味着解决方案解决了您的问题。
public static void WriteReports(string expectedDailyData, string actualDailyData, string fileName)
{
    var baseline = FormatData(expectedDailyData);
    var actual = FormatData(actualDailyData);
    WriteReports(baseline, actual, filename);
}