有没有办法让我的代码变得更短?C#初学者
我试图使4个图片框透明,以便背景显示。这就是我所拥有的:有没有办法让我的代码变得更短?C#初学者,c#,C#,我试图使4个图片框透明,以便背景显示。这就是我所拥有的: pbBordermain.Controls.Add(pb1); pbBordermain.Controls.Add(pb2); pbBordermain.Controls.Add(pb3); pbBordermain.Controls.Add(pb4); pb1.BackColor = Color.Transparent; pb2.BackColor = Color.Transparent; pb3.BackColor = Color.T
pbBordermain.Controls.Add(pb1);
pbBordermain.Controls.Add(pb2);
pbBordermain.Controls.Add(pb3);
pbBordermain.Controls.Add(pb4);
pb1.BackColor = Color.Transparent;
pb2.BackColor = Color.Transparent;
pb3.BackColor = Color.Transparent;
pb4.BackColor = Color.Transparent;
- 有没有办法把它缩短李>
- 我试着用逗号分隔图片框,但出现了错误。为什么呢
- 首先,短代码并不总是好代码。虽然可以用更少的行来表达某些东西,但并不总是更清晰——使用语言编码语言的全部意义在于清晰
在这种情况下,您可以重新排列代码,但在维护功能的同时很难缩短代码。假设add/transparent函数的顺序无关紧要,您可以始终按列排列,因为C#忽略额外的空格:
pbBordermain.Controls.Add(pb1); pb1.BackColor = Color.Transparent;
pbBordermain.Controls.Add(pb2); pb2.BackColor = Color.Transparent;
pbBordermain.Controls.Add(pb3); pb3.BackColor = Color.Transparent;
pbBordermain.Controls.Add(pb4); pb4.BackColor = Color.Transparent;
首先,短代码并不总是好代码。虽然可以用更少的行来表达某些东西,但并不总是更清晰——使用语言编码语言的全部意义在于清晰 在这种情况下,您可以重新排列代码,但在维护功能的同时很难缩短代码。假设add/transparent函数的顺序无关紧要,您可以始终按列排列,因为C#忽略额外的空格:
pbBordermain.Controls.Add(pb1); pb1.BackColor = Color.Transparent;
pbBordermain.Controls.Add(pb2); pb2.BackColor = Color.Transparent;
pbBordermain.Controls.Add(pb3); pb3.BackColor = Color.Transparent;
pbBordermain.Controls.Add(pb4); pb4.BackColor = Color.Transparent;
这个问题的重要部分是:您是否需要访问代码中的PictureBox?如果没有,您可以执行以下操作:
for (int=0;i<numberOfPictureBoxes;i++)
{
pbBorderMain.Controls.Add(new PictureBox() {
BackColor = Color.Transparent
});
}
for(int=0;i这个问题的重要部分是:您是否需要访问代码中的PictureBox?如果不需要,您可以这样做:
for (int=0;i<numberOfPictureBoxes;i++)
{
pbBorderMain.Controls.Add(new PictureBox() {
BackColor = Color.Transparent
});
}
for(int=0;i我不同意其他的答案,即你的代码很好
当你想添加或删除图片框时会发生什么?当你想通过改变大小、选择不同的背景颜色或做任何其他可以将这些项目作为一个组来使用的事情来更改设置例程时会发生什么?你必须到处更改代码,一次又一次地添加和删除一行内容。
不,你应该开始做一些函数。当你设置这些属性时,你在做什么。这是一种初始设置吗?好吧,做一个名为setup
的函数。为每个图片框调用它
// The setup routine that is the one place in your system that knows how to do this task
public void SetUpPictureBox(ControlCollection collectionParent, PictureBox pictureBox) {
collectionParent.Add(pictureBox);
pictureBox.BackColor = Color.Transparent;
}
// All your picture boxes that are important to you for whatever reason
// can now be worked with as a unit.
List<PictureBox> importantPictureBoxes = new list<PictureBox> { pb1, pb2, pb3, pb4 };
// Set up all the important PBs.
importantPictureBoxes.ForEach(pb => SetupPictureBox(pbBordermain.Controls, pb));
//系统中唯一知道如何执行此任务的设置例程
公共无效设置PictureBox(ControlCollection collectionParent,PictureBox PictureBox){
collectionParent.Add(pictureBox);
pictureBox.BackColor=颜色.透明;
}
//无论出于什么原因,你所有的图片框对你来说都很重要
//现在可以作为一个单元使用。
List ImportantPictureBoxs=新列表{pb1,pb2,pb3,pb4};
//设置所有重要的PBs。
ImportantPictureBoxs.ForEach(pb=>SetupPictureBox(pbBordermain.Controls,pb));
即使这只是一些原型代码,你不会对你的原型进行更改吗?难道你不想开始像专业程序员一样思考吗?我花了大约25秒的时间来输入这段代码-不要陷入意大利面条代码的境地。随时思考你在做什么,编写好代码
甚至变量名importantpictureboxs
也暗示了目的——它们是干什么用的?你为什么要使用它们?用一个清晰的名称来描述这个目的。这意味着你不必写注释!方法名和变量名为你记录了你的代码。太棒了。我不同意其他answ那些说你的代码很好的人
当你想添加或删除图片框时会发生什么?当你想通过改变大小、选择不同的背景颜色或做任何其他可以将这些项目作为一个组来使用的事情来更改设置例程时会发生什么?你必须到处更改代码,一次又一次地添加和删除一行内容。
不,你应该开始做一些函数。当你设置这些属性时,你在做什么。这是一种初始设置吗?好吧,做一个名为setup
的函数。为每个图片框调用它
// The setup routine that is the one place in your system that knows how to do this task
public void SetUpPictureBox(ControlCollection collectionParent, PictureBox pictureBox) {
collectionParent.Add(pictureBox);
pictureBox.BackColor = Color.Transparent;
}
// All your picture boxes that are important to you for whatever reason
// can now be worked with as a unit.
List<PictureBox> importantPictureBoxes = new list<PictureBox> { pb1, pb2, pb3, pb4 };
// Set up all the important PBs.
importantPictureBoxes.ForEach(pb => SetupPictureBox(pbBordermain.Controls, pb));
//系统中唯一知道如何执行此任务的设置例程
公共无效设置PictureBox(ControlCollection collectionParent,PictureBox PictureBox){
collectionParent.Add(pictureBox);
pictureBox.BackColor=颜色.透明;
}
//无论出于什么原因,你所有的图片框对你来说都很重要
//现在可以作为一个单元使用。
List ImportantPictureBoxs=新列表{pb1,pb2,pb3,pb4};
//设置所有重要的PBs。
ImportantPictureBoxs.ForEach(pb=>SetupPictureBox(pbBordermain.Controls,pb));
即使这只是一些原型代码,你不会对你的原型进行更改吗?难道你不想开始像专业程序员一样思考吗?我花了大约25秒的时间来输入这段代码-不要陷入意大利面条代码的境地。随时思考你在做什么,编写好代码
甚至变量名ImportantPictureBoxs
也暗示了目的——它们是干什么用的?你为什么要使用它们?用一个清晰的名称来描述这个目的。这意味着你不必写注释!方法名和变量名为你记录了你的代码。棒极了。重复的操作通常是很简单的st由循环处理。如果您有很多图片框,可以将它们添加到集合中,并循环浏览,将每个设置为Color.Transparent是否可以提供“逗号分隔”的示例现在还不太清楚你把哪个部分分开了,如果这实际上是四个pbs,那就好了。如果这是一个动态数字,把它们放在一个列表中,然后在上面循环。越短越好:列表越长越好。我试着把()例如.Add(pb1,pb2,pb3,pb4);我是