C#如何减少重复代码?

xSC*_*SCM 1 c#

我在很大程度上自学了C#代码,我在大学里上了一堂课并没有多大帮助......确实学会了如何学习如何学习.所以我在这里和那里创建了工具,在线学习.Stackoverflow是我最喜欢的网站,通常社区很有帮助......

无论如何我的问题是这个,即时创建一个WPF程序,对多个小数进行多次计算,我已经通过重复使用相同的代码计算得到了,它工作正常,但我知道有一种更简单的方法用更多,更少的线来做这件事.我好像缺少那些知识.

这是我如何做事的一个例子.

int int1 = 4;
int int2 = 2;
int int3 = 6;
int int4 = 8;
int calc1 = 0;
int calc2 = 0;
int calc3 = 0;

calc = int1 * int4
calc2 = int1 * int2
calc3 = int3 * int3

if (calc >= calc3)
{
do something;
}
else
{
calc = 33
}

if (calc2 >= calc3)
{
do something;
}
else
{
calc2 = 33
}

if (calc3 >= calc2)
{
do something;
}
else
{
calc3 = 33
}

if (calc3 >= calc)
{
do something;
}
else
{
calc2 = 33
}
Run Code Online (Sandbox Code Playgroud)

我希望这很清楚..我可以重复代码,但我只是不确定如何更好地使用C#,我知道它已经内置了减少重复代码的方法,只是不知道如何找到它们.

任何帮助或示例表示赞赏.

Jus*_*ony 7

突然出现给我的最简单的解决方案是将其变成一种方法.(我将把函数访问修饰符留给 ...这取决于你将重用这段代码的位置)

int CustomCompare(int leftHandSide, int rightHandSide)
{
int calc;
 if (leftHandSide >= rightHandside)
 {
  do something;
 }
 else
 {
  leftHandSide= 33
 }
return leftHandSide
}
Run Code Online (Sandbox Code Playgroud)

你只需传入你的变量:

calc = CustomCompare(calc, calc3)
Run Code Online (Sandbox Code Playgroud)

如果需要,您甚至可以将do something部分更改为您传入的自定义操作.看看MSDN中的Action

int CustomCompare(int leftHandSide, int rightHandSide, Action doSomething)
{
int calc;
 if (leftHandSide >= rightHandside)
 {
  doSomething();
 }
 else
 {
  leftHandSide= 33
 }
return leftHandSide
}

...

calc = CustomCompare(calc, calc3, 
    ()=>{do some stuff that will be executed inside the method});
Run Code Online (Sandbox Code Playgroud)

并且Func可以允许您从该doSomething操作返回一个值

  • 对于匿名的downvoter,你能解释一下这个建议有什么问题吗? (4认同)