C# 如何在不使用匿名对象的情况下初始化列表初始值设定项中的对象?

C# 如何在不使用匿名对象的情况下初始化列表初始值设定项中的对象?,c#,list,C#,List,我有一个列表,我用一个初始值设定项列表初始化了它,在这个列表中我想创建一个新对象,我不想那个对象是匿名的。有人能帮我吗? 我的代码如下所示: Product product=new Product(){ OrderProductAttributes = new List<OrderProductAttribute> { //initialize an object(I do not want it to be anonymous) }

我有一个列表,我用一个初始值设定项列表初始化了它,在这个列表中我想创建一个新对象,我不想那个对象是匿名的。有人能帮我吗? 我的代码如下所示:

Product product=new Product(){
OrderProductAttributes = new List<OrderProductAttribute>
     {
         //initialize an object(I do not want it to be anonymous)
        }
    }
产品产品=新产品(){
OrderProductAttributes=新列表
{
//初始化对象(我不希望它是匿名的)
}
}

不确定这就是您所说的匿名,但您肯定可以在初始化期间进行具体的实例化

Product product=new Product(){
OrderProductAttributes = new List<OrderProductAttribute>()
     {
         //initialize an object(I do not want it to be anonymous)
         new OrderProductAttributes() { Property1 = 10, Property2 = false... },
         new OrderProductAttributes() { Property1 = 20 Property2 = false... },
    }};
产品产品=新产品(){
OrderProductAttributes=新列表()
{
//初始化对象(我不希望它是匿名的)
新的OrderProductAttributes(){Property1=10,Property2=false…},
new OrderProductAttributes(){Property1=20 Property2=false…},
}};
您还可以命名变量并添加它们:

OrderProductAttributes test = new ...;
OrderProdcutAttributes test2 = new ...;
Product product=new Product(){
OrderProductAttributes = new List<OrderProductAttribute>()
     {
         //initialize an object(I do not want it to be anonymous)
         test,
         test2,
    }};
OrderProductAttributes测试=新建。。。;
OrderProdcutAttributes test2=新。。。;
产品=新产品(){
OrderProductAttributes=新列表()
{
//初始化对象(我不希望它是匿名的)
测试,
测试2,
}};

注意此代码需要在实例化方法(比如构造函数)中,并且不会在成员声明中工作,除非
test
test2
以何种方式标记为
static

“非匿名”?除了集合初始值设定项之外,您将无法使用它(甚至无法定义变量)。我尝试了第二种方法,但出现了以下错误:错误14字段初始值设定项无法引用非静态字段、方法或属性“ProductMapping.Business.Controller.productAttribute”@Shary抱歉,我假设这是在函数中。是的,要执行第二种方法,您需要在实例方法中执行初始化,或者将变量标记为
静态
。在这种情况下,您通常只需在构造函数中进行初始化。我进行了初始化,但仍然会出现此错误。@Shary如果出现此错误,您将作为字段初始值设定项进行初始化,这意味着您引用的所有内容都必须是静态的。你能更好地描述一下你实际做了什么/改变了什么吗?@Shary是的,因为你初始化的东西必须是静态的。将
test
标记为static,它将工作。同样,这不是推荐的方法(如果您知道自己在做什么,您应该只使用
static
),但它会编译。