C#排除数组对象

3

我对这段代码有些小问题:

string[] sWords = {"Word 1", "Word2"}
foreach (string sWord in sWords)
{
  Console.WriteLine(sWord);
}

如果我想要打印每个对象,那么这很好用。

我想知道是否可以排除数组中的第一个项目?这样它只会输出“Word 2”。我知道显而易见的解决方案是不包括第一个项目,但在这种情况下我不能这样做。

4个回答

8

使用LINQ to Objects,你可以只需使用Skip

foreach (string word in words.Skip(1))
{
    Console.WriteLine(word);
}

8

在 .Net 3.5 及以上版本中使用 LINQ:

string[] words = {"Word 1", "Word2"}
foreach (string word in words.Skip(1))
{  
    Console.WriteLine(word);
}

请注意,在文件顶部必须有一个using System.Linq;语句,因为Skip是一个扩展方法。
另一种选择是使用常规的for循环:
for( int x = 1; x < words.Length; ++x )
    Console.WriteLine(words[x]);

我也强烈反对.Net中变量名使用匈牙利式前缀。


好的,谢谢。您为什么建议不使用这些变量名? - Bali C
@Bali:它们没有增加任何价值(变量类型表明它是一个字符串数组),只会让代码更难阅读。 - Jon Skeet
@Bali C: 为什么不应该使用匈牙利命名法 - Yuck
1
因为C#的常见样式指南鼓励您不要使用匈牙利标记。匈牙利标记有时还会在名称中编码不必要的类型信息,这可能会使重构代码更加困难(因为如果更改类型,则必须更改名称)。 - Sven

7
您可以使用for循环代替:

string[] sWords = {"Word 1", "Word2"};
var len = sWords.Length;

for (int i = 1; i < len; i++)
{
  Console.WriteLine(sWords[i]);
}

3
你可以做以下事情。
string[] sWords = {"Word 1", "Word2"};

 for(int i=1; i<sWords.Length; i++) 
 {   
   Console.WriteLine(sWord[i]); 
 } 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接