我只是好奇如何在命令中创建新对象。 (当然为了节省空间并学习它)。
只是将命令组合在一起,并且在额外的行上没有picturebox abc = new picturebox,如下所示:
this.Form.Controls.Add(new Picturebox abc) //something like that?
您必须实例化对象并将其作为参数传递给另一个对象。
例如,您可以在两行代码中编写它
Picturebox.TEST myPictureBox = new Picturebox.TEST();
Form.Controls.Add(myPictureBox);
您只是将对象传递给Form.Controls.Add的方法。所以要在一行做...
Form.Controls.Add(new Picturebox.TEST());
第一个示例更具可读性,并允许您在该方法块中使用myPictureBox实例。
在C#3中,您可以使用对象初始值设定项在单个语句中实例化和填充对象,如下所示:
var obj = new MyObject { MyProperty = "Foo", MyOtherProperty = 42 };
你是这个意思吗?
也许你正在寻找这样的东西?
this.Controls.Add(new PictureBox() { Image = myImage, Dock = DockStyle.Fill });
我不太确定你追求的是什么,但我有一种感觉,你要做的是链接表达式,这样你就不必创建新的变量来保存你的实例。
我在想你要替换这个:
Thingy thing = new Thingy("This is a constructor call")
this.myObject.Add(thing);
这样:
this.myObject.Add(new Thingy("This is a constructor call"));
正如您所看到的,唯一的区别是,在第一种情况下,您将获得您创建的Thingy实例的句柄,称为“事物”,然后您可以使用它来调用方法,而在另一个案例中case不要将此实例存储在变量中。
如果这是你遇到的问题我建议你从了解构造函数开始,因为如果不了解它们的作用,那么编写简短紧凑的代码几乎没有什么好处。
祝你好运。
在c#中,通过命令创建对象效率不高,因为其他程序员很难理解,并且不会节省更多空间。我们按照这样的方式创建对象:
MyClass abc =new MyClass();
您可以通过此对象添加属性,如下所示:
abc.Name="Sukanta";
abc.City="Dhaka";
等等...如果你想在一行中初始化对象属性,那么这样就可以高效了..
MyClass obj=new MyClass{ Name="Sukanta" , City="Dhaka"};
它比你的要求更可取..
Petr,您可以像这样指定新对象的属性值:
this.Form.Controls.Add(new PictureBox() { Image = XYZ, AnotherProperty = 123 });
这可以节省您执行以下操作:
PictureBox abc = new PictureBox();
abc.Image = XYZ;
abc.AnotherPropery = 123;
this.Form.Controls.Add(abc);
new就像一个赋值运算符,它将右侧操作数的值赋给左侧操作数。