Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 减少C语言中的代码冗余#_C# - Fatal编程技术网

C# 减少C语言中的代码冗余#

C# 减少C语言中的代码冗余#,c#,C#,我对修补C#还不熟悉,到目前为止,这就是它的范围。我只是在为我的一个小项目修修补补 不过,裁员让我发疯。写一长串类似的代码占据了一行又一行,这对我来说并不合适 我有一些带有复选框和单选按钮的标签,这是我注意到重复最多的地方。不幸的是我。。。我还没有完全掌握C#的每一个方面。所以我希望向你们学习 例如: //setup checkbox checkBox1.AutoSize = true; checkBox1.Checked = false; checkBox1.Check

我对修补C#还不熟悉,到目前为止,这就是它的范围。我只是在为我的一个小项目修修补补

不过,裁员让我发疯。写一长串类似的代码占据了一行又一行,这对我来说并不合适

我有一些带有复选框和单选按钮的标签,这是我注意到重复最多的地方。不幸的是我。。。我还没有完全掌握C#的每一个方面。所以我希望向你们学习

例如:

//setup checkbox
    checkBox1.AutoSize = true;
    checkBox1.Checked = false;
    checkBox1.CheckState = CheckState.Unchecked;
    checkBox1.Location = new Point(5, 102);
    checkBox1.Text = "Check Box 1!";
    checkBox1.UseVisualStyleBackColor = true;

//set radio 1
    radio1.AutoSize = true;
    radio1.Checked = true;
    radio1.Location = new Point(5, 33);
    radio1.Size = new Size(20, 20);
    radio1.Text = "Radio-e-o-e-o";
    radio1.UseVisualStyleBackColor = true;
//set radio 2
    radio2.AutoSize = true;
    radio2.Checked = false;
    radio2.Location = new Point(5, 56);
    radio2.Size = new Size(18, 20);
    radio2.Text = "Option 2!";
    radio2.UseVisualStyleBackColor = true;

我的直觉是用变量数据设置一些数组,比如名称和不同的数据。但正如我所说,我是个新手,我只是在修修补补。。。而且我遇到的资源往往与我正在寻找的不匹配,或者添加了我可能还没有准备好的复杂层次。

那么…你想重构Form1.designer.cs文件吗

为了“清理代码”,您所做的任何“清理”操作都会给CPU带来不必要的负担。就让设计者去吧(除非你说的是重复设计,在这种情况下,用户控件可能是最好的选择)


这些是我对这件事的印象,不管怎样,如果我答对了你的问题:你可以做一个方法:

private CheckBox DoSomethingWith(CheckBox checkBox, Point location, string text)
{
    checkBox.AutoSize = true; 
    checkBox.Checked = false; 
    checkBox.CheckState = CheckState.Unchecked; 
    checkBox.Location = location;
    checkBox.Text = text; 
    checkBox.UseVisualStyleBackColor = true;

    return checkBox;    
}

然后将复选框传递给它
checkBox1=DoSomethingWith(复选框1,新点(10,10),“我的文本”)

您可以创建自己的类,该类继承自
RadioButton
,设置默认设置并使用它

public class MyRadioButton : public RadioButton
{
   MyRadioButton() 
   {
       UseVisualStyleBackColor = true;
       AutoSize = true;
   }
}

然后,您只需添加此控件而不是单选按钮,如果您只是尝试修补,而不是设置整个应用程序体系结构,并且您自己编写此控件,而不是尝试将设计器生成的代码弄乱,那么使用某种可以循环的结构可能是最佳选择。LINQ有一些非常好的操作符来做这样的简单转换

比如说,

var formElements = myArrayofElementInfo.Select(e => CheckBox(e.Point, e.Text))

这还假设您正在使用@Sean87提供的CheckBox方法来整合构造。

也许您可以通过创建方法来初始化控件,将控件作为参数传递,从而减少冗余(您也可以在方法本身内部创建控件)。例如:

public void setupCheckbox (Checkbox checkbox, boolean autoSize, boolean checked, etc.)
public void setupRadioButton (RadioButton radiobutton, boolean autoSize, boolean checked, etc.)
然后使用上述方法创建控件:

setupCheckbox (checkBox1, true, false, etc.)
setupRadioButton (radio1, true, false, etc)
setupRadioButton (radio2, true, false, etc)

无论如何,您通常引用的类的可视属性是在IDE中定义的(例如VisualStudio),因此您通常不关心它们。也许你可以考虑将文本存储在一个数组中,如果你发现它有用的话,可以初始化不同的控件。p> WPF,Winforms,ASP-是哪一个?是的,上下文在这里非常重要。我把所有的UI内容留给GUI生成器(假设您使用Visual Studio或类似的工具)。这是自动生成的代码吗?还是你自己打的?而且,正如@capture已经问到的,您使用的是哪种UI框架?这无疑是朝着我想要的方向迈出的一大步。非常感谢你。xDI将不得不玩这个。谢谢。:)我很快就试过了,但我觉得现在对我来说有点太简捷了。xD这个理论和我想说的差不多。所以谢谢你