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

问题描述 投票:0回答:7

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

只是将命令组合在一起,并且在额外的行上没有picturebox abc = new picturebox,如下所示:

this.Form.Controls.Add(new Picturebox abc)  //something like that?
c# syntax
7个回答
4
投票

您必须实例化对象并将其作为参数传递给另一个对象。

例如,您可以在两行代码中编写它

Picturebox.TEST myPictureBox = new Picturebox.TEST();
Form.Controls.Add(myPictureBox);

您只是将对象传递给Form.Controls.Add的方法。所以要在一行做...

Form.Controls.Add(new Picturebox.TEST());

第一个示例更具可读性,并允许您在该方法块中使用myPictureBox实例。


3
投票

在C#3中,您可以使用对象初始值设定项在单个语句中实例化和填充对象,如下所示:

var obj = new MyObject { MyProperty = "Foo", MyOtherProperty = 42 };

你是这个意思吗?


1
投票

也许你正在寻找这样的东西?

this.Controls.Add(new PictureBox() { Image = myImage, Dock = DockStyle.Fill });

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实例的句柄,称为“事物”,然后您可以使用它来调用方法,而在另一个案例中case不要将此实例存储在变量中。

如果这是你遇到的问题我建议你从了解构造函数开始,因为如果不了解它们的作用,那么编写简短紧凑的代码几乎没有什么好处。

祝你好运。


1
投票

在c#中,通过命令创建对象效率不高,因为其他程序员很难理解,并且不会节省更多空间。我们按照这样的方式创建对象:

MyClass abc =new MyClass();

您可以通过此对象添加属性,如下所示:

abc.Name="Sukanta";
abc.City="Dhaka";

等等...如果你想在一行中初始化对象属性,那么这样就可以高效了..

MyClass obj=new MyClass{ Name="Sukanta" , City="Dhaka"};

它比你的要求更可取..


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);

-1
投票

new就像一个赋值运算符,它将右侧操作数的值赋给左侧操作数。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.