![](/img/trans.png)
[英]C# if else conditional inside of foreach loop possibly using count
[英]conditional foreach loop c#
我怎样才能做到这一点? (c#)基本上,我希望能够排序一下,在括号中注明。 但不是真的。 我想我想将方括号括起来。 那可能是不可能的。 我显然可以在完全独立的if子句中实现此功能,但这将大大减轻我的代码的负担。
PS:我试图根据条件将“ //做某事”代码放置在foreach循环中,或者将单个实例与不相关(与foreach循环的参数)相关联。 我希望这有助于清除它。
伪代码 ( 如果您无法按顺序将方括号括起来,我会尝试这样做 ):
我知道这附近没有有效的代码,正如我所说的是伪代码。
我还没有看过第二篇文章,但是第一篇文章(Sean Bright),谢谢,但是条件与条目数无关(无论我是否要执行循环,目录中总是有文件)
将// dosomething代码提取到函数中即可。 我不确定我怎么忽略了这一点。 我想我想知道是否有更简单的方法,但是您是正确的。 谢谢。
if (isTrue)
{
//START LOOP
string [] fileEntries = Directory.GetFiles(LogsDirectory, SystemLogFormat);
foreach(string fileName in fileEntries)
{
using (StreamReader r = new StreamReader(fileName))
{
/* The previous two blocks are not closed */
}
else
{
using (StreamReader r = new StreamReader(SingleFileName))
{
/* The previous block is not closed */
}
// do all sorts of things
if (isTrue)
{
/* Close the two unclosed blocks above */
}
}
}
else
{
/* Close the unclosed block above */
}
}
谢谢!
(缩进很奇怪,很抱歉,论坛正在这样做)
为什么不这样做:
string [] fileEntries = null;
if (isTrue) {
fileEntries = Directory.GetFiles(LogsDirectory, SystemLogFormat);
} else {
fileEntries = new string [] { SingleFileName };
}
foreach(string fileName in fileEntries) {
using (StreamReader r = new StreamReader(fileName)) {
/* Do whatever */
}
}
将文件处理部分重构为一个单独的函数:
public void OriginalFunction() {
if ( isTrue ) {
string [] fileEntries = Directory.GetFiles(LogsDirectory, SystemLogFormat);
foreach(string fileName in fileEntries) {
ProcessFile(fileName);
}
} else {
ProcessFile(SingleFileName);
}
}
public void ProcessFile( string name ) {
using (StreamReader r = new StreamReader(name))
{
// Do a bunch of stuff
}
}
使用条件来确定如何创建StreamReader,然后像平常一样在using()中传递它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.