C#通过显示选择进行迭代的更简单方法

C#通过显示选择进行迭代的更简单方法,c#,class,loops,methods,C#,Class,Loops,Methods,这里的新手请求帮助 目前我正在处理类,为此,我使用类根据我的产品类对象打印出5个直接对象 这是打印我的项目的代码: Console.WriteLine("1." + prod1.GetDetails() + "\n\n"); Console.WriteLine("2." + prod2.GetDetails() + "\n\n"); Console.WriteLine("3." + prod3.GetDetails() + "\n\n"); Console.WriteLine("4." + pr

这里的新手请求帮助

目前我正在处理类,为此,我使用类根据我的产品类对象打印出5个直接对象

这是打印我的项目的代码:

Console.WriteLine("1." + prod1.GetDetails() + "\n\n");
Console.WriteLine("2." + prod2.GetDetails() + "\n\n");
Console.WriteLine("3." + prod3.GetDetails() + "\n\n");
Console.WriteLine("4." + prod4.GetDetails() + "\n\n");
Console.WriteLine("5." + prod5.GetDetails() + "\n\n");
看看我的代码,它感觉非常多余,因为只有两个字符会改变:第一个双引号中显示的项目编号,然后是区分我用我的产品类对象打印的“产品”的编号(我是一个新手,希望我能正确地传达这一点)

我试图创建一个方法来迭代,因为这样会更干净、更具可伸缩性,但我的方法无法正常工作

我最新的尝试:

public void DisplayOfferings()
{
    for (int i = 1; i < 6; i++ )//prints items 1 to 5 
    {
      Console.WriteLine(i + ". " + prod(i).GetDetails() + "\n\n"); 
    }  //iterate number      
}

您可以尝试将实例存储到
列表中

var list = new List<YourType> { prod1, prod2, prod3, prod4,prod5 };
如果要为此定义方法,可以这样定义:

public void DisplayOfferings(List<Product> products)
{ 
    int i = 1;
    foreach(var product in products)
    { 
        Console.WriteLine(i + ". " + product.GetDetails() + "\n\n"); 
        i++;
    }
}
public void DisplayOfferings(params Product[] products)
您可以在不定义列表的情况下调用它:

DisplayOfferings(prod1, prod2, prod3, prod4,prod5);
公共产品(产品[]产品)
{

对于(int i=1;i这些单独的产品对象是如何得到的?我假设您正在创建这5个对象并测试GetDetails()方法?为了使它更简洁,您可以始终创建一个数组/列表“产品”对象,并按如下所述调用该方法;同样,如果您没有足够的数据,我无法计算1)您是如何获得这些产品的,以及2)您打算如何使用它们:-)-->


类程序{
静态void Main(字符串[]参数){
列出产品=新列表
{   
新产品(“产品1”),
新产品(“产品2”),
新产品(“产品3”),
新产品(“产品4”),
新产品(“产品5”)
};
/**在这一部分做更多的工作*/
//现在以更好的面向对象(主观)方式调用GetDetails()方法

对于(int i=0;i您可以始终沿着LINQ路径:

var list = new List<YourType>
{
    prod1, prod2, prod3, prod4, prod5
};

list
    .Select((prod, i) => String.Format("{0}. {1}\n\n", i, prod.GetDetails()))
    .ToList()
    .ForEach(Console.WriteLine);
var list=新列表
{
产品1、产品2、产品3、产品4、产品5
};
列表
.Select((prod,i)=>String.Format(“{0}.{1}\n\n”,i,prod.GetDetails()))
托利斯先生()
.ForEach(控制台写入线);

你的意思是
产品[i-1]
?谢谢你的帮助-你帮助我以一些非常好的方式脱颖而出。谢谢。如果你必须使用变量来增加(i),我宁愿使用经典的
方法。我尝试了这个方法,但我放弃了。我列出了方法调用,如“DisplayOffices(Product[])然后对方法“public void displayOffices(Product[]products){var list=new list(Product[]){prod1,prod2,prod3,prod4,prod5};int i=1;foreach(var prod in list){Console.WriteLine(i+“+prod.GetDetails()+”\n\n)我做错了一些事,不知道是什么。我是个新手,但我很高兴看到这件事可以做到,即使我还不能做到it@Chezshire首先创建列表,然后按如下方式传递方法:
displayOffices(productList);
如果列表定义错误,请不要使用括号list(Product[])相反,请使用
新列表
谢谢,查看这里的一切帮助我认识到在数组中弹出我的垃圾,然后执行“for(int i=0;ipublic void DisplayOfferings(params Product[] products)
DisplayOfferings(prod1, prod2, prod3, prod4,prod5);
public void DisplayOfferings(Product[] products)
{
    for (int i = 1; i <= products.length; i++ ) 
    {
      Console.WriteLine(i + ". " + products[i - 1].GetDetails() + "\n\n"); 
    }      
}
class Program {
    static void Main(string[] args) {
        List<Product> products = new List<Product> 
                                        {   
                                            new Product("product 1"),
                                            new Product("product 2"),
                                            new Product("product 3"),
                                            new Product("product 4"),
                                            new Product("product 5")
                                        };
        /** do some more work here in this segment */

        // now call your GetDetails() method in a nicer Object Oriented (subjective) manner
        for(int i=0; i<5; i++) {
            Console.WriteLine("\"" + (i+1) + ".\"" + products[i].GetDetails() + "\n\n");
        }
        Console.ReadLine();
    }

    private class Product {
        public Product(string data) {
            Data = data;
        }

        public string Data { get; set; }

        public string GetDetails() {
            return "The initial data string is:\t" + Data;
        }
    }
}
var list = new List<YourType>
{
    prod1, prod2, prod3, prod4, prod5
};

list
    .Select((prod, i) => String.Format("{0}. {1}\n\n", i, prod.GetDetails()))
    .ToList()
    .ForEach(Console.WriteLine);