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

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

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

C#でプロパティーを使ったinterfaceの使い方

C#でプロパティーを使ったinterfaceの使い方をよく忘れてしまうので、メモしておこうかなと思います。

使い方は次のような感じです。

インターフェース

public interface IExample
{
  string Name
  {
    get;
    set;
  }
}

使っているところ

using System;

public class Example : IExample
{
  string _name = "";

  public string Name
  {
    get { return _name; }
    set { _name = value; }
  }

  public Example(string name)
  {
    _name = name;
  }
}

public class TestExample
{
  static public void Main ()
  {
    IExample example = new Example("name");

    Console.WriteLine($"example.name = {example.Name}");

    example.Name = "new name";
    Console.WriteLine($"example.name = {example.Name}");
  }
}

実行結果

example.name = name
example.name = new name

何故かよく忘れてしまいます。

リンク

Interface Properties – C# Programming Guide | Microsoft Docs
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/interface-properties