首页 / C# / 在C#中处理交换机案例的更好方法
在C#中处理交换机案例的更好方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在C#中处理交换机案例的更好方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1896字,纯文字阅读大概需要3分钟。
内容图文
![在C#中处理交换机案例的更好方法](/upload/InfoBanner/zyjiaocheng/759/fdceedf9ab704d6aa7275dd460a2bfc1.jpg)
如果我的问题看起来很愚蠢,我会提前道歉,但由于某种原因,我无法通过更优雅的解决方案来解决问题.所以我有一个利用switch-case块的方法,类似于下面的代码块:
public enum Items
{
item_1, item_2, item_3, .... item_N
};
private string String_1 {get; set;}
private string String_2 {get; set;}
private string String_3 {get; set;}
// ...
private string String_N {get; set;}
public void DoSomething(Items item){
switch(item){
case item_1:
MethodNumberOne();
MethodNumberTwo();
MethodNumberThree();
Console.WriteLine($"{0} is displayed on the page", String_1);
break;
case item_2:
MethodNumberOne();
MethodNumberTwo();
MethodNumberThree();
Console.WriteLine($"{0} is displayed on the page", String_2);
break;
case item_3:
MethodNumberOne();
MethodNumberTwo();
MethodNumberThree();
Console.WriteLine($"{0} is displayed on the page", String_3);
break;
// ...
case item_N:
MethodNumberOne();
MethodNumberTwo();
MethodNumberThree();
Console.WriteLine($"{0} is displayed on the page", String_N);
从上面的示例可以看出,switch语句调用相同的方法,唯一的区别是最后一次Console调用.
我的问题:是否有一种更优雅的方式来处理这种情况,因为我不喜欢代码的重复.到目前为止,我尝试执行Items枚举来分隔类并将其作为参数传递,但这种方法不起作用,因为静态类不能作为参数在C#中传递
public static class Items {
public string String_1 {get; set;}
public string String_2 {get; set;}
public string String_3 {get; set;}
// ...
private string String_N {get; set;}
}
// ....
public void DoSomething(Items item)
>不允许声明此方法
任何建议都非常感谢..
解决方法:
您可以将枚举项目存储到字典中的String_X映射中,而不是依赖于交换机.
private IDictionary<Items, string> _itemStringMap = new Dicitionary<Items, string>()
{
{ Items.item_1, String_1 },
//Other items here
};
public void DoSomething(Items item)
{
var s = _itemStringMap[item];
MethodNumberOne();
MethodNumberTwo();
MethodNumberThree();
Console.WriteLine($"{0} is displayed on the page", s);
}
您可能想要检查item参数是否具有有效映射,如果不使用默认字符串.
内容总结
以上是互联网集市为您收集整理的在C#中处理交换机案例的更好方法全部内容,希望文章能够帮你解决在C#中处理交换机案例的更好方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。