C# 正确调用列表方法的问题

标签 c# list methods calculator

我是列表/数组的新手,并且在我正在从事的项目中遇到了障碍。我正在开发一个具有两种不同方法的计算器,一种是将用户输入的内容添加到计算器中,另一种方法是计算 add 方法的输入。我在使用添加方法输入的数据检索列表并将其用于计算方法来计算平均值/最小值/最大值时遇到问题。计算器有一个添加按钮和一个计算按钮。如何使用输入到计算方法的数据从添加方法正确调用列表?

公共(public)部分类frmRealEstateCollections:表单 { 公共(public) frmRealEstateCollections() { 初始化组件(); }

private void btnAdd_Click(object sender, EventArgs e)
{
    // declare variables
    decimal decPropertyValue = 0m;
    List<decimal> decValue = new List<decimal>(10);

    // Data Validation
    try
    {
        decPropertyValue = Convert.ToDecimal(txtPropertyValue.Text);
    }
    catch (FormatException)
    {
        MessageBox.Show("Please Input Numeric value",
            "Error",
            MessageBoxButtons.OK,
            MessageBoxIcon.Asterisk);
        txtPropertyValue.Focus();
    }

    // call list

    decValue = Valuelist(decValue, decPropertyValue);

    foreach (decimal decDisplay in Valuelist(decValue, decPropertyValue))
    {
        lstEnteredValues.Items.Add(decDisplay.ToString("C2"));
    }
}

public List<decimal> Valuelist(List<decimal> decValue, decimal decPropertyValue)
{
    // Create list elements unknown?
    decValue = new List<decimal>(10);

    // Add Value Entered by user to list
    decValue.Add(decPropertyValue);

    // return list
    return decValue;
}

private void btnCalculate_Click(object sender, EventArgs e)
{
    // Declared List/Variables to call list Method
    List<decimal> decValue = new List<decimal>(10);
    decimal decPropertyValue = 0m;
    decimal decAverage = 0m;

    // Call List
    decValue = Valuelist(decValue, decPropertyValue);
    decAverage = decValue.Average();

    foreach (decimal decDisplay in Valuelist(decValue, decPropertyValue))
    {
        lstAnalysis.Items.Add(decAverage
            }

}

}

最佳答案

您正在重新创建列表,因此会覆盖任何以前的值。您应该保留对该列表的引用并仅对该单个实例进行操作。

public partial class frmRealEstateCollections : Form
{
    private List<decimal> _decimalValues = new List<decimal>();

    public frmRealEstateCollections()
    {
        InitializeComponent();
    }

    private void btnAdd_Click(object sender, EventArgs e)
    {
        // declare variables
        decimal decPropertyValue = 0m;

        // Data Validation
        try
        {
            decPropertyValue = Convert.ToDecimal(txtPropertyValue.Text);
        }
        catch (FormatException)
        {
            MessageBox.Show("Please Input Numeric value",
                "Error",
                MessageBoxButtons.OK,
                MessageBoxIcon.Asterisk);
            txtPropertyValue.Focus();
        }

        // call list
        _decimalValues.Add(decPropertyValue);       

        lstEnteredValues.Items.Add(decPropertyValue.ToString("C2"));          
    }

    private void btnCalculate_Click(object sender, EventArgs e)
    {
        // Declared List/Variables to call list Method
        decimal decAverage = 0m;

        // Call List
        decAverage = _decimalValues.Average();

        lstAnalysis.Items.Add(decAverage);
    }
}

我建议您阅读 object instances更好地理解面向对象的代码。

关于C# 正确调用列表方法的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41254528/

相关文章:

java - 将变量调用回 main

C# Ping.Send 导致 GUI 卡住

php - CSS、PHP、HTML 事件下 zipper 接问题

html - 用数字格式化列表以及定义和解释

c++ - 在 C++ 中创建链表

objective-c - 如何返回两个值?

java - 我需要使用在不同类的类内的方法中创建的多个字符串

c# - SendKey 不会输入某些字符

c# - Farseer 物理... Hello World ...?

c# - 在 C# Winform 中获取货币汇率