c# – Foreach – 根据List中项目的类型不同的说明
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – Foreach – 根据List中项目的类型不同的说明,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1435字,纯文字阅读大概需要3分钟。
内容图文
![c# – Foreach – 根据List中项目的类型不同的说明](/upload/InfoBanner/zyjiaocheng/811/32e675beb0644f0981e0f19a63f51774.jpg)
我有一个接口类FooBar和两个具体的类,Foo和Bar.
如果我在FooBar中使用,我如何根据我的项目是Foo还是Bar来使用不同的指令集? (例如,因为Foo和Bar没有相同的属性).
解决方法:
三种选择.
如果可能的话,Foo和Bar应该有一个公共基类FooBarBase – 或者实现一个通用接口,你的FooBar – 它定义了一些虚拟方法,比如DoStuff(). Foo和Bar各自适当地实现DoStuff().
由于你已经有了一个界面,你基本上就在那里.
public interface FooBar {
void DoStuff(SomeFrameworkThing x);
}
…
List<FooBar> myFooAndBarList = new myFooAndBarList() { ... };
var thing = new SomeFrameworkThing(/* long list of murky parameters, all different */);
foreach (var fb in myFooAndBarList) {
fb.DoStuff(thing);
}
但如果这不可能,或者你正在做的具体细节使它变得非常复杂(例如,你想让它们做完全不相关的东西),你就可以这样做.只需查看代码,您就可以了解为何选择上述版本.在C#7中,有更好的语法,但我还没有安装它来测试(1).
foreach (var o in myFooAndBarList) {
if (o is Foo) {
var f = o as Foo;
f.FooMethod();
f.FooProperty = "lol";
}
else if (o is Bar) {
var b = o as Bar;
b.BarMethod(234, 345);
b.BarProp = new Dictionary<Foo, List<Bar>>();
}
}
最后,你可以用动态的奇怪,深奥,奇异的方式做到这一点:
public void DoStuff(Foo f) {
// stuff
}
public void DoStuff(Bar b) {
// other stuff
}
…
foreach (dynamic d in myFoAndBarList) {
DoStuff(d);
}
Try it. I’m not pulling your leg.我不推荐这种方法;我建议使用第一种方法,如果您坚持使用第二种方法,可能会推荐第二种方法.
(1)我坐在这里观看Visual Studio安装程序一小时.目前,状态文本显示“NO SYNTAX FOR YOU”.
内容总结
以上是互联网集市为您收集整理的c# – Foreach – 根据List中项目的类型不同的说明全部内容,希望文章能够帮你解决c# – Foreach – 根据List中项目的类型不同的说明所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。