Calendar.csを繰り返し文を1つに纏めてみました

By | Date : 2014/11/29 ( Last Update : 2016/04/30 ) | 81 views

Myoga-SB-SDF-A2

Hello~! ミョウガです!
今回は、「カレンダープログラミングにMyoga、抜錨します!」にある、Calendar.cs(GitHubでは「Calendarold.cs」)の2つの繰り返し文を1つに纏めた時のお話です。

 

1. 1日の曜日合わせのパディング処理と日付出力を統合してみました

「カレンダープログラミングにMyoga、抜錨します!」 で書いたプログラムを以下に示します。

 

ここで、12行目の1日の曜日合わせのパディング処理を、15~23行目の日付出力の処理のdo文に入れて、1つの繰り返し文に統合してみました。

なお、このプログラムはhttps://gist.github.com/Myoga1012/2a8bba2bbc850de06a90でも公開されています。
コンテストにはこのプログラムで応募しました。

まず、10行目でAddDaysメソッドを使って1日の曜日の分(DayOfWeekプロパティの値)だけ引きます。例えば2014年10月1日は水曜日なので、DayOfWeekプロパティの値は3、すなわち引いた後は2014年9月28日を表すDateTime構造体になります。

次に日付を出力するのですが、条件分岐を使ってcurDayが前月の時は日付の代わりに、半角スペース3つを出力します。こうすることで1日の曜日に合わせてオフセットすることができます。

cal-cs2

1日の曜日合わせのパディング処理と日付出力の統合

あとは19~20行目の土曜日の日付または当月末日を出力した後の改行処理と、23行目の繰り返し条件を最適化するだけです。
特に月末日の改行では、前月の末日で改行しないように、curDayとnow1のMonthプロパティの値を比較しています。

 

こうすることで、1つの繰り返し文でカレンダーを出力することができます。コード量的にはあまり変わってないですが・・・(;・∀・)

ではでは、See youですよっ♪

この記事をシェアする
Chronoir.netのRSSフィードを購読する

About : ミョウガ(Myoga)

Hello~! 「ミョウガ」です。よろしくお願いします!(≧▽≦)/ 主にC#/XAML/C++などをメインにプログラミングやアプリの開発をしています。好きな物はカフェラテとハーブティ、趣味は写真撮影と艦これです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*