列表未初始化c#

use*_*762 0 c# static initialization list

对于下面的代码,main()方法中的foreach循环不显示任何值.即我的列表没有初始化显示.请帮我.提前致谢.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Sample
{
public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
} 
public class Program
{
    public static List<Product> allProducts;

    public static void InitialiseMyProducts(List<Product> allProducts)
    {
        allProducts = new List<Product>
        {
            new Product(){Id=1,Name="TV"},
            new Product(){Id=2,Name="Bat"},
            new Product(){Id=3,Name="Ball"},
            new Product(){Id=4,Name="Chair"},
        };
    }       

    public static void Main(string[] args)
    {
        List<Product> allProducts = new List<Product>();
        allProducts = new List<Product>();
        InitialiseProductList(allProducts);
        foreach (Product res in allProducts)
        {
            Console.WriteLine("ID:" + " " + res.Id + " " + "Name:" + " " + res.Name);
        }
        Console.ReadKey();
    }
    }
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 6

你有几个变量都被称为allProducts:

  • 静态变量
  • 中的参数 InitialiseMyProducts
  • 中的局部变量 Main

你正在Main两次初始化局部变量,然后将其传递给InitialiseMyProducts(或InitialiseProductList- 你已经将名称改为中途).但是,该方法然后忽略先前的值并更改参数以引用另一个列表.这是无关紧要的Main,因为参数已经通过值传递.

我会建议两种不同的选择之一:

  • static完全删除变量,然后InitialiseProductList 返回 aList<Product>
  • 返回除静态变量之外的所有声明; InitialiseProductList应该没有参数

最重要的是首先要了解为什么现有代码不起作用.确保上述所有描述都有意义,并随时提出问题以获得额外的解释.