C#」カテゴリーアーカイブ

プログラミング言語「C#」に関するカテゴリーです。

C#で配列や構造体の初期化方法

C#で使える便利な初期化方法を調べてみました。

配列の初期化

int[] example1 = new int[] { 3, 1, 4, 1, 5 };

ジャグ配列、多次元配列の初期化

int[][] example2 = new int[][] {
  new int[] { 3, 1, 4 },
  new int[] { 1, 5, 9 }
};

int[,] example3 = new int[,] {
  { 3, 1, 4 },
  { 1, 5, 9 }
};

構造体の初期化

public struct Example
{
  public string name;
  public int value;
}
Example example4 = new Example { name = "name", value = 1 };

Example[] example5 = new Example[] {
  new Example { name = "name1", value = 2 },
  new Example { name = "name2", value = 3 }
};

List<T>やDictionary<T>も次のようにして使えるそうです。

List<int> example6 = new List<int> { 3, 1, 4, 1, 5 };

Dictionary<string, int> example7 = new Dictionary<string, int> {
  { "name3", 4 },
  { "name4", 5 }
}

リンク

構造体の使用 (C# プログラミング ガイド) | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/using-structs

C#のコードを書くときに参考になる公式リンク

IEnumerable<T>のインターフェイス

IEnumerable(T) Interface (System.Collections.Generic)
https://msdn.microsoft.com/en-us/library/9eekhta0(v=vs.110).aspx

LINQ standard query operators

Standard Query Operators Overview (C#) | Microsoft Docs
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/standard-query-operators-overview

<summary>などのDocumentation Commentsタグ

Recommended Tags for Documentation Comments (C# Programming Guide) | Microsoft Docs
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/xmldoc/recommended-tags-for-documentation-comments

C#のList.Find/List.FindIndexについて

List<T>.FindList<T>.FindIndexの使い方はこんな感じです。

using System;
using System.Collections.Generic;

public class Example
{
  static public void Main ()
  {
    List<int> example = new List<int>{ 3, 1, 4, 1, 5  };
    Console.WriteLine("Find: " + example.Find((e) => { return e % 2 == 0; }));
    Console.WriteLine("FindIndex: " + example.FindIndex((e) => { return e % 2 == 0; }));
  }
}

実行結果

Find: 4
FindIndex: 2

気になるポイントは一致するものがなかった場合の戻り値です。

Find: 型Tの既定値
FindIndex: -1

よく忘れるのでメモしてみました。

動作サンプルは次のような感じです。

using System;
using System.Collections.Generic;

public class Example
{
  static public void Main ()
  {
    List<int> example = new List<int>{ 3, 1, 4, 1, 5, 9, 2 };
    Console.WriteLine("Find: " + example.Find((e) => { return e == 6; }));
    Console.WriteLine("FindIndex: " + example.FindIndex((e) => { return e == 6; }));
  }
}

実行結果

Find: 0
FindIndex: -1

リンク

List(T).Find メソッド (Predicate(T)) (System.Collections.Generic)
https://msdn.microsoft.com/ja-jp/library/x0b5b5bc(v=vs.110).aspx

List(T).FindIndex メソッド (Int32, Int32, Predicate(T)) (System.Collections.Generic)
https://msdn.microsoft.com/ja-jp/library/7eb596wz(v=vs.110).aspx