我正试图将我的通用功能拉入基类,但不同的数据类型阻止我这样做。请参阅:
public class OutWriter
{
private readonly IEnumerable<long> series1;
private readonly IEnumerable<long> series2
private readonly IEnumerable<long> series3
private readonly IEnumerable<double> series4
private readonly double sum;
public OutWriter()
{
series1 = PopulateS1()
series2 = PopulateS2()
series3 = PopulateS3()
series4 = PopulateS4()
sum = series4.Aggregate((x,y)=>x+y);
}
}
public class PaperWriter
{
private readonly IEnumerable<BigInteger> series1;
private readonly IEnumerable<BigInteger> series2
private readonly IEnumerable<BigInteger> series3
private readonly IEnumerable<BigInteger> series4
private readonly BigInteger sum;
public PaperWriter()
{
series1 = PopulateS1()
series2 = PopulateS2()
series3 = PopulateS3()
series4 = PopulateS4()
sum = series4.Aggregate((x,y)=>x+y);
}
}
public class Base<T>()
{
????
}
我试图找出相似之处,但是涉及到 long
、double
和 BigInteger
。由于 + 操作,聚合也会抛出编译时错误。你能告诉我如何正确地做到这一点吗?
谢谢, -迈克
最佳答案
C# 中没有任何东西可以统一数学环。有一些解决方法,例如 MiscUtil包由臭名昭著的 Jon Skeet 维护,Operator 实用程序由另一位 StackOverflow 常客 Marc Gravel 编写,其使用说明可在 here 中找到.这个想法是将加法、乘法等操作提取为函数调用。该链接提供了一个 Operator
类,该类使用表达式来提供加法、乘法、除法、减法、小于、等于和其他运算符……而且它们都很容易扩展。
关于c# - 创建通用基础,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9405719/