简单的C#“新”问题 - 语法相关

时间:2009-12-07 08:49:16

标签: c# syntax

我只是好奇如何在命令中创建新对象。 (为了节省空间并学习当然)。

只是将命令组合在一起,并且在额外的行上没有picturebox abc = new picturebox, 像这样:

this.Form.Controls.Add(new Picturebox abc)  //something like that?

7 个答案:

答案 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就像赋值运算符一样,将右侧操作数的值分配给左侧操作数。