2021年11月12日
川俣晶の縁側ソフトウェアnew_C#入門・全キーワード明快解説!total 644 count

型の基礎: 全てのデータには型がある

Written By: 川俣 晶連絡先

この章のテーマ §

 データの型についての基本的な考え方を説明します。型が違えばデータは違う性質を持ちます。思い通りデータを扱いたいなら、型を理解することは避けて通れません。

前提知識 §

Console.Writeメソッド, 文字列の基礎. メソッドの基礎, 変数の基礎

解説 §

 C#では全てのデータが型を持っています。

 プログラミング言語の種類によっては型がない場合もありますが、C#は全てのデータに型があります。

 型とは、たとえば、【整数(int)】であるとか【文字列(string)】であるとか、あるいはゲームなら【宇宙の帝王】であるとか、ビジネスアプリなら【弊社の事業所間通信システム】であるとか、様々です。システムに組み込まれたものもあれば、利用社側で自由に増やして使う型もあります。整数は普通利用者が自分で定義することはありませんが、【我が社のID】という型は我が社にしかなく、自ら定義して使うしかないのかもしれません。

 特定のデータがどんな型に対応しているのかは、GetTypeメソッドを使用すると型に対応する型オブジェクトを取得できるのですぐ分かります。型オブジェクトにFullNameプロパティを使用すると型のフルネームが分かります。

 サンプルソースではその方法で型の名前を取得しているので参考にして下さい。

 サンプルソースの出力結果に含まれる以下の型はC#に組み込まれた型(int,douboe,stringなど)の【真の名前】です。

  • System.Int32=int
  • System.Double=double
  • System.String=string

 【真の名前】を使ってプログラムを書くこともできますが、たいていは別名の短い名前(たとえばint)

を使って書きます。

 さて、具体的に型名はどんな点で役に立つのでしょうか。

 たとえば、整数型には表現可能な最大値を取得するMaxValueプロパティがありますが、文字列型にはありません。一方で、大文字小文字に変換するToUpper/ToLowerメソッドは文字列型にはありますが、整数型にはありません。

 こういう区別を明確に付けるために、型名は役に立ちます。おかげで、コンパイラが【そのデータのその機能はありませんよ】とバグを事前に教えてくれるようになります。

罠の数々 §

  • 型名が存在しない匿名の型も存在するが、これにはシステムが記号的な型名を自動的に補っていて、実体として型名がないわけではない。ソースコードに出てこないだけである
  • 型名を書く必要のないプログラミング言語が、【効率が良い】と持てはやされることも多いが、実際はデータの種類を明確に指定しないので、トラブルが起きやすい。C#も型名を指定する必要のないdynamic型があるが、使用頻度は多くない
  • ToStringメソッドを使うだけで多くの型のフルネームを取得できるが、この方法はたまたまToStringメソッドのデフォルト設定がそうなっているだけで、ToStringメソッドをオーバーライドしている型では使えない。確実に型名を知りたければ、GetType().FullName推奨

参考リンク §

C# の型システム

サンプルソース: typeBasic §

var a = 1;

var b = 1.1;

var c = "Hello";

Console.WriteLine($"{a}の型は{a.GetType().FullName}です。");

Console.WriteLine($"{b}の型は{b.GetType().FullName}です。");

Console.WriteLine($"{c}の型は{c.GetType().FullName}です。");

実行結果 §

1の型はSystem.Int32です。

1.1の型はSystem.Doubleです。

Helloの型はSystem.Stringです。

リポジトリ §

https://github.com/autumn009/CSharpPrimer2

練習問題 §

 "Console.WriteLine(1.GetType().FullName);"の出力結果を予測してみよう。

  1. コンパイル・エラー
  2. 実行時エラー
  3. 1
  4. int
  5. System.Int32

[[解答]]

Facebook

キーワード【 川俣晶の縁側ソフトウェアnew_C#入門・全キーワード明快解説!
【new_C#入門・全キーワード明快解説!】の次のコンテンツ
2021年
11月
14日
複文{}: 1つしか文を書けない場所に複数の文を書きたい
3days 0 count
total 856 count
【new_C#入門・全キーワード明快解説!】の前のコンテンツ
2021年
11月
11日
変数の基礎: データを入れておく小さな入れ物
3days 0 count
total 968 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20211112111351
サイトの表紙【new_C#入門・全キーワード明快解説!】の表紙【new_C#入門・全キーワード明快解説!】のコンテンツ全リスト 【new_C#入門・全キーワード明快解説!】の入手全リスト 【new_C#入門・全キーワード明快解説!】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.