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