gpt4 book ai didi

C# 避免多个 SWITCH 语句 .net

转载 作者:太空狗 更新时间:2023-10-29 19:26:53 25 4
gpt4 key购买 nike

请原谅我学习 C#/.NET 的复杂性时的愚蠢行为

假设我有三个具有多个静态属性的类(多于三个但为了参数......)

 CLASS FOO

public static A
{
get / set A;
}
public static B
{
get / set B;
}
public static C
{
get / set C;
}

CLASS BAR
{
get / set A;
}
public static B
{
get / set B;
}
public static C
{
get / set C;
}

CLASS YOO
{
get / set A;
}
public static B
{
get / set B;
}
public static C
{
get / set C;
}

从另一个类开始,我需要多次更新每个类中的一个或多个静态属性...如何避免像这样编写多个 SWITCH 语句...

 public void updateVarx(string class, string varx)
{
string y = 'class'
SWITCH (y)
{
case FOO:
FOO.A = Varx;
break;
case BAR:
BAR.A = Varx;
break;
case YOO:
YOO.A = Varx;
break;
}
}

然后当我想更新 B varY 时另一个:

 public void updateVary(string class, string vary)
{
string y = 'class'
SWITCH (y)
{
case FOO:
FOO.B = Vary;
break;
case BAR:
BAR.B = Vary;
break;
case YOO:
YOO.B = Vary;
break;
}
}

最佳答案

既然你正在学习 .net/c#,我想我应该警告你,使用静态属性可能不是面向对象编程的方式。

静态是全局状态并且是危险的。如果您最终使用多线程代码,则必须格外小心。如果您只需要一个实例,只需实例化一个,但不要在类上创建静态属性,除非您有充分的理由添加它们(我现在想不出任何理由)。

事实上,在设计良好的面向对象代码中,您可能不会有很多 if、switch、getter 或 setter。

假设您的类需要不同的行为,您可以这样做。

Interface ISecurity {
void UpdateVarX(int value);
void UpdateVarY(int value);
int GetValueX();
int GetValueX();
}

class Foo:ISecurity {
// Implement methods of the interface
}

class Bar:ISecurity {
// Implement methods of the interface
}

class Yoo:ISecurity {
// Implement methods of the interface
}

// This class is the class that uses your other classes
class Consumer
{
private ISecurity sec;

public Consumer(ISecurity sec) {
sec.UpdateVarX(25);
}
}

或者如果在您的示例中,所有静态类都具有相同的属性:

public class Settings {
public int A {get; set;}
public int B {get; set;}
public int C {get; set;}
}

public class NeedsToUseOtherClass {
public NeedsToUseOtherClass() {
Settings foo = new Settings();
Settings bar = new Settings();
Settings yoo = new Settings();

foo.setA(25);
}
}

关于C# 避免多个 SWITCH 语句 .net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5426774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com