c# - 如何重构这些重载的类构造函数? (C#)

标签 c# .net refactoring

我不想在重载的构造函数之间复制代码,如下所示。我该如何重构它?

/// <summary>
/// Represents a pseudo-random number generator, a device that
/// produces a sequence of numbers that are normally distributed.
/// </summary>
public class NormalDeviate : UniformDeviate
{
    double mean;
    double standardDeviation;
    double storedValue = 0d;

    /// <summary>
    /// Initializes a new instance of the <see cref="NormalDeviate"/> class.
    /// </summary>
    /// <param name="mean">The mean.</param>
    /// <param name="standardDeviation">The standard deviation.</param>
    /// <param name="seed">The seed.</param>
    public NormalDeviate(double mean, double standardDeviation, ulong seed)
        : base(seed)
    {
        this.mean = mean;
        this.standardDeviation = standardDeviation;
    }

    /// <summary>
    /// Initializes a new instance of the <see cref="NormalDeviate"/> class.
    /// </summary>
    /// <param name="mean">The mean.</param>
    /// <param name="standardDeviation">The standard deviation.</param>
    public NormalDeviate(double mean, double standardDeviation)
        : base()
    {
        this.mean = mean;
        this.standardDeviation = standardDeviation;
    }
}

最佳答案

鉴于在未提供种子时您无法向基本构造函数提供 0 种子,这将是您想要的:

/// <summary>
/// Represents a pseudo-random number generator, a device that
/// produces a sequence of numbers that are normally distributed.
/// </summary>
public class NormalDeviate : UniformDeviate
{
    double mean;
    double standardDeviation;
    double storedValue = 0d;

    /// <summary>
    /// Initializes a new instance of the <see cref="NormalDeviate"/> class.
    /// </summary>
    /// <param name="mean">The mean.</param>
    /// <param name="standardDeviation">The standard deviation.</param>
    /// <param name="seed">The seed.</param>
    public NormalDeviate(double mean, double standardDeviation, ulong seed)
        : base(seed)
    {
        CommonInitialization(mean, standardDeviation);
    }

    /// <summary>
    /// Initializes a new instance of the <see cref="NormalDeviate"/> class.
    /// </summary>
    /// <param name="mean">The mean.</param>
    /// <param name="standardDeviation">The standard deviation.</param>
    public NormalDeviate(double mean, double standardDeviation)
        : base()
    {
        CommonInitialization(mean, standardDeviation);
    }

    private void CommonInitialization(double mean, double standardDeviation)
    {
        this.mean = mean;
        this.standardDeviation = standardDeviation;
    }
}

关于c# - 如何重构这些重载的类构造函数? (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1135022/

相关文章:

c# - MDI 窗体中的子窗口停靠

.net - 什么是 GenericParameterHelper,它是如何使用的?

c++ - 编程范式;想知道是否需要重写/重构

c# - 使用自定义功能覆盖 MVC 模型显示名称注释

c# - 无法通过 ManagementObjectCollection 进行 foreach,引发 "This method is not implemented in any class"异常

c# - 如何在不导致无限循环的情况下向 XML 文件添加数据

c# - 在 .Net 中将 Html 转换为 Word

.net - xpath:先行兄弟或 self

ruby-on-rails - 我们如何避免 Controller 中方法的重复/重复 - RAILS 3+

ms-access - Access 查询中的重构