C# 打印列表问题
C# print list issue
我正在使用 GUI 作为客户端执行 WCF 服务,但是我在打印当前添加的项目列表时遇到问题。我有一个代码可以将新条目添加到列表中:
public bool Add_Data(Data sample)
{
container.Add(sample);
Console.WriteLine("New record added!");
return true;
}
它正在运行,但是当我第一次尝试查看添加的记录时它可以运行,但是如果我想再次查看它,列表正在添加相同的元素。向您展示它是如何工作的:
- 我正在添加新条目,我 "print" 列表:
IMAGE CLICK [工作正常]
- 但是我想再次看到它,所以我在我的表单中按了同一个按钮,结果如下:IMAGE CLICK 如您所见,我们有我们的列表 + 额外的相同记录,如果我将再次按下按钮,我将有 3 个相同的记录。
这是我的 "show records" 代码:
public string Show_Data()
{
Console.WriteLine("Printing records");
foreach (Data record in container)
{
string final_result = ("\nID: "+ + record.ID + " " + "product: " + record.product + " " + "category: " + record.category + " " + "price: " + record.price + " " + "quantity: " + record.quantity + " " + "\n ");
result += final_result;
}
return result;
}
如果你知道如何解决,请告诉我。
您需要查看变量作用域。您在 Show_Data()
方法之外声明了结果。每次调用该方法时,您都在做 result += final_result;
,这会添加到结果中。试试下面的代码,你会得到不同的结果。
public string Show_Data()
{
Console.WriteLine("Printing records");
var output = string.Empty;
foreach (Data record in container)
{
string final_result = ("\nID: "+ + record.ID + " " + "product: " + record.product + " " + "category: " + record.category + " " + "price: " + record.price + " " + "quantity: " + record.quantity + " " + "\n ");
output += final_result;
}
return output;
}
另外,我也会考虑使用字符串生成器和字符串格式。
public string Show_Data()
{
Console.WriteLine("Printing records");
var output = new StringBuilder();
foreach (Data record in container)
{
string final_result = string.Format("ID: {0} product: {1} category: {2} price: {3} quantity: {4}", record.ID, record.product, record.category, record.price, record.quantity);
// if using C# 6
// string final_result = string.Format($"ID: {record.ID} product: {record.product} category: {record.category} price: {record.price} quantity: {record.quantity)}";
output.AppendLine(final_result);
}
return output.ToString();
}
我正在使用 GUI 作为客户端执行 WCF 服务,但是我在打印当前添加的项目列表时遇到问题。我有一个代码可以将新条目添加到列表中:
public bool Add_Data(Data sample)
{
container.Add(sample);
Console.WriteLine("New record added!");
return true;
}
它正在运行,但是当我第一次尝试查看添加的记录时它可以运行,但是如果我想再次查看它,列表正在添加相同的元素。向您展示它是如何工作的:
- 我正在添加新条目,我 "print" 列表: IMAGE CLICK [工作正常]
- 但是我想再次看到它,所以我在我的表单中按了同一个按钮,结果如下:IMAGE CLICK 如您所见,我们有我们的列表 + 额外的相同记录,如果我将再次按下按钮,我将有 3 个相同的记录。
这是我的 "show records" 代码:
public string Show_Data()
{
Console.WriteLine("Printing records");
foreach (Data record in container)
{
string final_result = ("\nID: "+ + record.ID + " " + "product: " + record.product + " " + "category: " + record.category + " " + "price: " + record.price + " " + "quantity: " + record.quantity + " " + "\n ");
result += final_result;
}
return result;
}
如果你知道如何解决,请告诉我。
您需要查看变量作用域。您在 Show_Data()
方法之外声明了结果。每次调用该方法时,您都在做 result += final_result;
,这会添加到结果中。试试下面的代码,你会得到不同的结果。
public string Show_Data()
{
Console.WriteLine("Printing records");
var output = string.Empty;
foreach (Data record in container)
{
string final_result = ("\nID: "+ + record.ID + " " + "product: " + record.product + " " + "category: " + record.category + " " + "price: " + record.price + " " + "quantity: " + record.quantity + " " + "\n ");
output += final_result;
}
return output;
}
另外,我也会考虑使用字符串生成器和字符串格式。
public string Show_Data()
{
Console.WriteLine("Printing records");
var output = new StringBuilder();
foreach (Data record in container)
{
string final_result = string.Format("ID: {0} product: {1} category: {2} price: {3} quantity: {4}", record.ID, record.product, record.category, record.price, record.quantity);
// if using C# 6
// string final_result = string.Format($"ID: {record.ID} product: {record.product} category: {record.category} price: {record.price} quantity: {record.quantity)}";
output.AppendLine(final_result);
}
return output.ToString();
}