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

Unityでマウスカーソルの画像を変更する方法

マウスカーソルの画像を(一時的に)変更したい場合はCursor.SetCursorを使うと実装できるみたいです。

使い方

例えば、カーソルが特定のエリアにある時にカーソル画像を変更したい場合は次のような感じです。

public class Example : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
  public Texture2D cursorTexture;

  public void OnPointerEnter(PointerEventData eventData)
  {
    Cursor.SetCursor(cursorTexture, Vector2.zero, CursorMode.Auto);
  }

  public void OnPointerExit(PointerEventData eventData)
  {
    Cursor.SetCursor(null, Vector2.zero, CursorMode.Auto);
  }
}

これとUI.Buttonを組み合わせれば、ボタン上にカーソルが来た時にカーソル画像を変更したりできるみたいです。

リンク

Unity – Scripting API: Cursor.SetCursor(Texture2D,CursorMode)
https://docs.unity3d.com/ScriptReference/Cursor.SetCursor.html