【发布时间】:2018-06-22 05:45:07
【问题描述】:
如果你知道的话,我有一个 ProjectEuler 的 C# 项目。
为此,我使用了一个抽象类,我们称之为“X”
public abstract class X {
protected abstract void SomeFunction()
}
这个项目有 600 多个问题需要解决。对于每一个问题,我都会创建一个继承自 X 的类。类的名称始终是 'Baseclassname' 后跟一个数字
例子:
public class X2 : X {
public override void SomeFunction()
}
在运行时,我通过控制台输入选择一个问题,输入一个有效的整数。如果 '_problem' 不等于 null,这个整数会进入一个 switch 并创建相应的问题并执行 someFunction。
X _problem = null;
int someInput; //any valid input readin via Console
switch(someInput)
{
case 1:
_problem = new X1();
break;
case 2:
_problem = new X2();
break;
.
.
.
case 610:
_problem = new X610();
break;
}
_promblem?.someFunction();
所以我向社区提出的问题是如何避免出现超过 600 个案例的 switch case。有更好的解决方案吗?
我希望这个问题写得很好,因为这是我的第一个问题。 :)
编辑:只有在编译期间自动添加所有现有对时,某些“键、值”对数组才是理想的。
【问题讨论】:
-
欢迎来到 SO 社区!您是否考虑过使用反射并实例化类,按名称将其调用为字符串?
-
cos it's my first.这不完全正确,是吗?您拥有 Peer Pressure 徽章,这意味着您已经删除了大量 DV 的帖子。阅读(并关注)How to Ask 并使用tour 来避免这种情况 -
@DiegoRafaelSouza 谢谢,应该可以。只需了解反射是如何工作的。
-
@Plutonix 确实,我曾经有一个问题写得不好。当我试图改写它时,我被告知要等待 7 天。到那时我自己解决了这个问题。说谎不是我的本意。对不起。
标签: c# class dynamic switch-statement runtime