C♯の勉強

C♯4.0 で TopCoder の過去問を解きます。

TopCoder で使用できないクラスなど

以下は使用するとコンパイルでエラーが出る

  • System.Linq.AsParallel()
  • System.Linq.GroupBy()
  • System.Linq.ToLookup()
  • System.Tuple
  • yield return/break 構文

検証に使ったソースコード

public IEnumerable<int> YieldTest()
{
    yield return 0;
}

public void LinqTest()
{
    var list = new int[] { };
    list.Where(e => e == 0);
    list.Aggregate((a, b) => a + b);
    list.All(e => e == 0);
    list.Any(e => e == 0);
    list.AsEnumerable();
    list.AsParallel();
    list.Average();
    list.DefaultIfEmpty();
    list.Distinct();
    list.ElementAt(0);
    list.ElementAtOrDefault(0);
    list.Except(new int[]{0});
    list.First();
    list.FirstOrDefault();
    list.GroupBy(e => e);
    list.GroupJoin(new int[] { 0 }, e => e, e => e, (a,e) => a);
    list.Last();
    list.LastOrDefault();
    list.Max();
    list.Min();
    list.OfType<int>();
    list.OrderBy(e => e).ThenBy(e => e);
    list.OrderByDescending(e => e).ThenByDescending(e => e);
    list.Intersect(new int[] { 0 });
    list.Reverse();
    list.Select(s => s);
    list.SelectMany(e => new int[] { e });
    list.SequenceEqual(list);
    list.Single();
    list.SingleOrDefault();
    list.Take(1).Skip(1);
    list.TakeWhile(e => e == 0);
    list.SkipWhile(e => e == 0);
    list.ToArray();
    list.ToDictionary(e => e);
    list.ToList();
    list.ToLookup(e => e);
    list.Union(list);
    list.Zip(new int[] { 0 }, (a, b) => a + b);
    var c = Tuple.Create(0, 1);
}

結果

Your code did not compile:

Prohibited Class: System.Linq.ParallelQuery`1
Prohibited Class: System.Linq.ParallelEnumerable
Prohibited Class: System.Linq.IGrouping`2
Prohibited Class: System.Linq.ILookup`2
Prohibited Class: System.Tuple
Prohibited Method: System.Environment::get_CurrentManagedThreadId
Prohibited Method: System.Environment::get_CurrentManagedThreadId
Prohibited Method: System.Linq.ParallelEnumerable::AsParallel
Prohibited Method: System.Tuple::Create