c# - 创建通用基础

标签 c# c#-4.0 refactoring

我正试图将我的通用功能拉入基类,但不同的数据类型阻止我这样做。请参阅:

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>()
{
    ????
}

我试图找出相似之处,但是涉及到 longdoubleBigInteger。由于 + 操作,聚合也会抛出编译时错误。你能告诉我如何正确地做到这一点吗?

谢谢, -迈克

最佳答案

C# 中没有任何东西可以统一数学环。有一些解决方法,例如 MiscUtil包由臭名昭著的 Jon Skeet 维护,Operator 实用程序由另一位 StackOverflow 常客 Marc Gravel 编写,其使用说明可在 here 中找到.这个想法是将加法、乘法等操作提取为函数调用。该链接提供了一个 Operator 类,该类使用表达式来提供加法、乘法、除法、减法、小于、等于和其他运算符……而且它们都很容易扩展。

关于c# - 创建通用基础,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9405719/

相关文章:

c# - 如何删除默认的 ASP.NET Core Identity 端点?

c# - TestCleanup() 实现

c# - 如何设置可用于 ResourceDictionary 中背景属性的原色

java - 具有多项检查的 void 方法重构

java - 如何重构这段代码

c# - ASP.NET MVC 中的 session 变量

c# - 使用 xml 文件的数据访问层

c# - 对列表中的值进行分组并使用 C# 将输出转换为 JSON

windows - 如何将位图图像保存到本地文件夹 Windows 应用商店应用程序

java - Eclipse - 提取局部变量仅替换范围内的所有出现