【型を読む力を育てよう】Visual Studio のオブジェクトブラウザーで DateTime を分析する

C# を学び始めると、こう思うことはありませんか?

DateTime って、結局何ができるの?

実はその答えは、Visual Studio の中に全部書いてあります。

今日は

オブジェクトブラウザーを使って DateTime 型を分解してみましょう。


1. オブジェクトブラウザーを開こう

Visual Studio 上部メニューから

表示 → オブジェクト ブラウザー

をクリックします。

左にツリー、右にメンバー一覧が出てきます。

上の検索欄に

DateTime

と入力してください。

そして

System.DateTime

を選択します。


2. まず見るべきポイント①「これは何者?」

表示の一番上にこう書いてあります。

public struct DateTime

ここが超重要です。

DateTime は

struct(構造体)=値型

です。


どういう意味?

  • class → 参照型
  • struct → 値型

DateTime は「値」なんです。

つまり、

DateTime a = DateTime.Now;
DateTime b = a;

とすると、

a と b は別物になります。

ここから分かること:

DateTime は軽量な値として設計されている

ということです。


3. 次に見るべきポイント②「入り口(static)」

右側のメンバー一覧を見てみましょう。

探してみてください。

  • Now
  • Today
  • UtcNow

これらには

static

と書いてあります。

static とは?

インスタンスを作らなくても使えるもの

つまり、

DateTime.Now

new DateTime()

をしなくても使えます。

ここから分かること:

DateTime は「今の時刻をすぐ取れる型」として設計されている


4. 次に見るべきポイント③「持っている情報」

インスタンスプロパティを見てみましょう。

例えば:

  • Year
  • Month
  • Day
  • Hour
  • Minute
  • Second
  • DayOfWeek

これはつまり、

DateTime は「年月日や時刻の部品を取り出せる」型

ということです。

例:

DateTime now = DateTime.Now;
Console.WriteLine(now.Year);

5. 作り方(コンストラクタ)を見てみよう

「Constructors」を開いてみましょう。

たくさんあります。

例えば:

  • DateTime(int year, int month, int day)
  • DateTime(int year, int month, int day, int hour, int minute, int second)

ここから読み取れること:

DateTime はいろいろな作り方が用意されている

用途が多いからです。


6. 足し算がどうなっているか見てみよう

次に探してください。

  • AddDays
  • AddHours
  • AddMonths
  • AddYears

ここで大事なのは

戻り値が DateTime になっていること

例えば:

public DateTime AddDays(double value)

つまり、

DateTime tomorrow = DateTime.Now.AddDays(1);

これは

「元の値を変更している」のではなく

新しい DateTime を返している

ということです。

値型らしい設計ですね。


7. 表示(ToString)を見てみよう

ToString を探してください。

複数あります。

ToString()
ToString(string format)
ToString(string format, IFormatProvider provider)

ここから分かること:

DateTime は表示形式を変えることが前提の型

だから

now.ToString("yyyy/MM/dd")

のような書き方ができるのです。


8. 差を求めるとどうなる?

Subtract を探してください。

戻り値は

TimeSpan

になっています。

ここが設計の美しいところです。

  • 日付そのもの → DateTime
  • 時間の長さ → TimeSpan

役割を分けているのです。


9. ここまでで何が分かる?

オブジェクトブラウザーを見るだけで、

DateTime は

  • struct(値型)
  • 今の時刻をすぐ取れる
  • 年月日を分解できる
  • 足し算すると新しい値を返す
  • 表示形式を変えられる
  • 差分は TimeSpan で扱う

という設計思想が読み取れます。


まとめ

C# が上達する人は、

「型を暗記する人」ではありません。

型を IDE から読み取れる人

です。

オブジェクトブラウザーは、

「Microsoft が書いた設計書」です。

分からない型が出てきたら:

  1. 検索する
  2. struct か class か見る
  3. static を探す
  4. 戻り値を見る

これだけで、かなり理解が深まります。


訪問数 5 回, 今日の訪問数 5回

C#,VisualStudio

Posted by hidepon