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

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

C#でgotoの使い方

forステートメント

C#でforの2重ループから抜けたい時、gotoステートメントを使って次のような書き方ができるみたいです。

サンプルコード

using System;

public class Example
{
  static public void Main ()
  {
    for (int i = 0; i < 5; ++i)
    {
      for (int j = 0; j < 5; ++j)
      {
        Console.WriteLine($"i={i}, j={j}");
        if (i + j > 5) goto Finish;
      }
    }

    Finish:
      Console.WriteLine("Finish");
  }
}

実行結果

i=0, j=0
i=0, j=1
i=0, j=2
i=0, j=3
i=0, j=4
i=1, j=0
i=1, j=1
i=1, j=2
i=1, j=3
i=1, j=4
i=2, j=0
i=2, j=1
i=2, j=2
i=2, j=3
i=2, j=4
Finish

switchステートメント

他にも、switchステートメントで

switch (n)
{
  case 1:
    // 実行したい内容1
    break;
  case 2:
    // 実行したい内容2
    goto case 1;
  default
    break;
}

のような書き方もできるみたいです。

慣れないと戸惑いそうですが、覚えておくと便利そうな気がします。

リンク

goto statement – C# Reference | Microsoft Docs
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/goto

C#でグローバルな定数を扱いたい時

C#でグローバルな定数を扱いたい時、いろいろな方法があると思いますが、static classusing staticを使うという方法があります。

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

定数の定義

static class Value
{
  public const int size = 10;
}

定数の使い方

using System;
using static Value;

class Example
{
  static public void Main ()
  {
    Console.WriteLine($"size = {size}");
  }
}

using staticを使うとクラス名.の部分が省略でき、見やすくなるので便利です。

リンク

using static directive – C# Reference | Microsoft Docs
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/using-static

Enum.Parseの使い方

C#ではint.Parsefloat.Parseを使って文字列型から数値型への変換ができます。これと同じような感じで文字列型からenum型に変換する方法がないかなと思って調べてみました。

ということで、SystemにあるEnum.ParseEnum.TryParseを使うと良いみたいです。

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

enum Example { Apple, Orange, Grape }

Enum.Parse

try {
  var value = (Example)Enum.Parse(typeof(Example), "Apple");
  // 実行したい処理
}
catch (ArgumentException) {
  // エラー処理
}

Enum.TryParse

Example value;

if (Enum.TryParse("Apple", out value)) {
  // 実行したい処理
}

大文字・小文字を無視して変換したい場合はignoreCase=falseとしてみてください。

リンク

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

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