【型を読む力を育てよう】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 が書いた設計書」です。
分からない型が出てきたら:
- 検索する
- struct か class か見る
- static を探す
- 戻り値を見る
これだけで、かなり理解が深まります。




ディスカッション
コメント一覧
まだ、コメントがありません