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

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

Enumをforeachでループしたい場合

C#でEnumの各項目をforeachでループしたい場合、Enum.GetValuesを使うと簡単にできるみたいです。

使い方

using System;

public class Example
{
  enum Name { "aaa", "bbb", "ccc" };

  public static void Main()
  {
    foreach (int i in Enum.GetValues(typeof(Name)))
    {
      Console.WriteLine(i);
    }
  }
}

実行結果

aaa
bbb
ccc

リンク

Enum.GetValues(Type) Method (System) | Microsoft Docs
https://docs.microsoft.com/en-us/dotnet/api/system.enum.getvalues?view=netframework-4.8

C#で変数未初期化時の値

C#で変数を初期化しなかった場合、どのような値になるのか気になって初期値を調べてみました。

intなど0
floatなど0
boolfalse
nullがある型null
初期化しなかった場合の初期値

基本的には0になると思っていいのかなと思います。

構造体の場合は各メンバー変数が初期化された値で初期化されるみたいです。

リンク

Default values table – C# reference | Microsoft Docs
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/default-values-table

正規表現で文字列を分割したい場合はRegex.Split

C#で正規表現で文字列を分割したい場合はRegex.Splitが便利です。
使い方は次のような感じです。

数字で分割するサンプル

using System;
using System.Text.RegularExpressions;

public class Example1
{
  static public void Main ()
  {
    string pattern = "[0-9]+";
    string input = "abc123def456ghi";

    string[] result = Regex.Split(input, pattern);

    foreach(string s in result) Console.WriteLine(s);
  }
}

実行結果

abc
def
ghi

さらに、分割した文字列も表示したい場合は正規表現の( )を使います。

using System;
using System.Text.RegularExpressions;

public class Example2
{
  static public void Main ()
  {
    string pattern = "([0-9]+)";
    string input = "abc123def456ghi";

    string[] result = Regex.Split(input, pattern);

    foreach(string s in result) Console.WriteLine(s);
  }
}

実行結果

abc
123
def
456
ghi

正規表現が不要な場合はString.Splitも使えますので、いろいろ試してみてください。

リンク

Regex.Split Method (System.Text.RegularExpressions) | Microsoft Docs
https://docs.microsoft.com/en-us/dotnet/api/system.text.regularexpressions.regex.split?view=netframework-4.8

String.Split Method (System) | Microsoft Docs
https://docs.microsoft.com/en-us/dotnet/api/system.string.split?view=netframework-4.8