我是列表/数组的新手,并且在我正在从事的项目中遇到了障碍。我正在开发一个具有两种不同方法的计算器,一种是将用户输入的内容添加到计算器中,另一种方法是计算 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/