[C#] 5. データタイプ変換(キャスト:Cast)とコメント(Comment)


Study / C#    作成日付 : 2019/07/04 00:01:12   修正日付 : 2021/07/09 19:49:31

こんにちは。明月です。


この投稿はデータタイプ変換(キャスト:Cast)とコメント(Comment)に関する説明です。


データタイプ変換(キャスト:Cast)

以前の投稿でデータタイプに関して説明しました。

link - [C#] 04. データタイプとリテラル(literal)、 Nullable


プログラムで我々がすべてのデータタイプを合わせてデータを入力するし、その入力データにより計算することはできません。

例えば、我々はプログラムで実数のデータと整数のデータを受け取りました。

using System;
namespace Exception3
{
  class Program
  {
    // 実行関数
    static void Main(string[] args)
    {
      // 整数タイプの変数
      int a = 10;
      // 実数タイプの変数
      float b = 20.5f;
      // 足す
      int c = a + b;
      // コンソールに出力
      Console.WriteLine("c = " + c);
      // 任意のキーを押してください
      Console.WriteLine("Press any key...");
      Console.ReadLine();
    }
  }
}

上の例は整数タイプのa変数と実数タイプのb変数の値を足して整数タイプのcの変数に格納したいです。


デバッグでデータタイプが違うというエラーが発生します。


そうすると我々は実数タイプ(float)のデータを整数タイプ(int)に変換しなければならないです。そのことをデータイプ変換、つまりキャスト(Cast)と言います。

実数から整数、整数から実数の変換はただ括弧でキャストが可能です。

using System;
namespace Exception3
{
  class Program
  {
    // 実行関数
    static void Main(string[] args)
    {
      // 整数タイプの変数
      int a = 10;
      // 実数タイプの変数
      float b = 20.5f;
      // 実数タイプを整数にキャストする。実数から整数にキャストすると少数点は切り捨てになる。
      int c = a + (int)b;
      // コンソールに出力
      Console.WriteLine("c = " + c);
      // 任意のキーを押してください
      Console.WriteLine("Press any key...");
      Console.ReadLine();
    }
  }
}


この括弧でキャストすることは数のデータタイプだけです。つまり、整数タイプから実数タイプ、実数タイプから整数タイプだけです。


そうなら数タイプではない文字列(String)タイプはどうでしょう。

using System;
namespace Exception3
{
  class Program
  {
    // 実行関数
    static void Main(string[] args)
    {
      // 整数タイプの変数
      int a = 10;
      // 文字列タイプの変数
      string b = "20";
      // Int32クラスのParse関数を利用すればキャストが可能。
      int c = a + Int32.Parse(b);
      // コンソールに出力
      Console.WriteLine("c = " + c);
      // 任意のキーを押してください
      Console.WriteLine("Press any key...");
      Console.ReadLine();
    }
  }
}


Int32クラスのParse関数を利用すればキャストが可能です。

Parse関数はStringタイプだけではなく、実数タイプ(float、double)のキャストも可能です。


改めてまとめると、キャストする時には数の関係なデータは括弧でキャストが可能ですが、確実にキャストをするためにはInt32クラスのParse関数を利用する方が良いです。


また、文字列のタイプをキャストする時に文字列に数字だけあることではないです。文字がある可能性もありますね。

using System;
namespace Exception3
{
  class Program
  {
    // 実行関数
    static void Main(string[] args)
    {
      // 整数タイプの変数
      int a = 10;
      // 文字列タイプの変数(数字だけではなく、文字も含める)
      string b = "20a";
      // Int32クラスのParse関数を利用すればキャストが可能。
      int c = a + Int32.Parse(b);
      // コンソールに出力
      Console.WriteLine("c = " + c);
      // 任意のキーを押してください
      Console.WriteLine("Press any key...");
      Console.ReadLine();
    }
  }
}


実行中でエラーが発生します。当たり前の話ですが、文字は数字に変換ができないのでエラーが発生しますね。

でも、プログラム中でデータが間違いにある可能性があるので、エラーを発生することよりキャストができないデータならデータデフォルト値(0)に設定する方法があります。

using System;
namespace Exception3
{
  class Program
  {
    // 実行関数
    static void Main(string[] args)
    {
      // 整数タイプの変数
      int a = 10;
      // 整数タイプの変数
      int b = 10;
      // 入力するデータがキャストできないならbに0に設定する。
      Int32.TryParse("20a", out b);
      // 足す
      int c = a + b;
      // コンソールに出力
      Console.WriteLine("c = " + c);
      // 任意のキーを押してください
      Console.WriteLine("Press any key...");
      Console.ReadLine();
    }
  }
}


上の例は各データタイプのクラスを利用してキャストしました。


C#にはキャスト専用クラスがあります。

using System;
namespace Exception3
{
  class Program
  {
    // 実行関数
    static void Main(string[] args)
    {
      // 整数タイプの変数
      int a = 10;
      // 文字列のタイプから整数(int)タイプにキャスト
      int b = Convert.ToInt32("20");
      // 足す
      int c = a + b;
      // コンソールに出力
      Console.WriteLine("c = " + c);
      // 任意のキーを押してください
      Console.WriteLine("Press any key...");
      Console.ReadLine();
    }
  }
}


Convertクラスの場合はキャスト専用クラスです。つまり、実数から整数、文字列から整数などをキャストする関数があります。

メソッド 説明
Boolean.Parse, Boolean.TryParse, Convert.ToBoolean ブールタイプにキャスト
Byte.Parse, Byte.TryParse, Convert.ToByte バイナリタイプにキャスト
Char.Parse, Char.TryParse, Convert.ToChar ユニーコードタイプにキャスト
Decimal.Parse, Decimal.TryParse, Convert.ToDecimal 実数(decimal)タイプにキャスト
Double.Parse, Double.TryParse, Convert.ToDouble 実数(double)タイプにキャスト
Single.Parse, Single.TryParse, Convert.ToSingle 実数(float)タイプにキャスト
Int16.Parse, Int16.TryParse, Convert.ToInt16 符号がある整数(short)タイプにキャスト
Int32.Parse, Int32.TryParse, Convert.ToInt32 符号がある整数(int)タイプにキャスト
Int64.Parse, Int64.TryParse, Convert.ToInt64 符号がある整数(long)タイプにキャスト
SByte.Parse, SByte.TryParse, Convert.ToSbyte 符号がある整数(sbyte)タイプにキャスト
UInt16.Parse, UInt16.TryParse, Convert.ToUInt16 符号がない整数(ushort)タイプにキャスト
UInt32.Parse, UInt32.TryParse, Convert.ToUnit32 符号がない整数(uint)タイプにキャスト
UInt64.Parse, UInt64.TryParse, Convert.ToUnit64 符号がない整数(ulong)タイプにキャスト
String.Parse, String.TryParse, Convert.ToString 文字列にキャスト

コメント(Comment)

プログラムを作成する時(コーディング)にはソース上でメモが必要な時があります。

コメントというのことはソース上でメモや様々な情報を表示するための方法です。


C#のコメントは三つの種類があります。

一般コメントの一行コメントと多行コメント(複数行コメント)があり、ソース開発が終わった後、ドキュメント(XMLDoc)を作成することができるXMLコメントがあります。

/*
  多行コメント(複数行コメント)
  プロジェクト名: コメント練習
  開発者: 明月
  作業日付: 2021/07/09
  BLOG: www.nowonbun.com
*/
using System;
namespace Exception3
{
  class Program
  {
    /// <summary>
    /// XMLコメント
    /// </summary>
    /// <param name="args">パラメータ</param>
    static void Main(string[] args)
    {
      // 一行コメント
 
      // 任意のキーを押してください
      Console.WriteLine("Press any key...");
      Console.ReadLine();
    }
  }
}


コメントを利用してソース上でメモを作成することができます。つまり、コメントの内容はプログラムのビルドやコンパイルする時に全然影響されません。


XMLコメントの場合はプロジェクトが完了した後でドキュメントに出力が可能です。



上のプロジェクトのオプションにチェックするとデバッグ(F5)した後で、XMLファイルが生成されます。



XMLコメントは標準タグのXMLタイプの形式があります。それを従って作成することができます。

XMLコメントタグ 説明
summary 形式あるいは形式メンバ設定
remarks 詳細な説明
para remarksの追加説明
value プロパティの説明
example 使用例
list リストとテーブル生成
code 何行目のコードで表示する時に使用
see テキスト内部のリンク指定
seealso 参考部分に表せるテキスト指定
exception 例外説明
permision 接近権限説明
param メソッドのパラメター説明
return 返却値を説明
c 説明中で含めているコード

プログラミング(ソース作成)はソース整理とドキュメント作成から始まって、ソース整理とドキュメント作成で終わりますという話があります。

一応、ソースを規約やルール、デザインパターンなどを利用して綺麗に作成することも重要ですが、ソース読みやすい方法でコメントをよく作成する方法もあります。特にXMLコメントなどをよく作成して置いたら、プログラム作成終了後でAPIドキュメントなどを別途で作成する必要もありません。


ここまでデータタイプ変換(キャスト:Cast)とコメント(Comment)に関する説明でした。


ご不明なところや間違いところがあればコメントしてください。

#C#
最新投稿