- 開発技術
C#でよくある、見落とされがちだけど起きやすい2つの間違い
- C#
はじめに
【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc. 詳細はこちらから>
C#という言語は、活用の場が豊富にあります。エンジニアの方なら、仕事でも学術的な場でも、C#によって開発されたプログラムを見る機会も多いのではないでしょうか。
しかし、C#は便利な反面、ミスや間違いが頻発しやすい言語の1つでもあります。パッと見ですぐにわかるものは良いですが、実際に問題になりやすいのは、一見すると問題がなさそうに見えて、欠陥が見落とされやすいものです。
今回は、その中でもC#でよくある2つの間違いやすい点を紹介します。
C#でよくある、見落とされがちだけど起きやすい2つの間違い
1.プロパティの定義
まずは何も考えせず、下記のコードを一緒に見てみてください。
1 2 3 4 5 |
private int myFoo; public int MyFoo { get { return MyFoo; } } |
上記のコードは普通にプロパティを定義して、そのままコードを実行すると、ビルドエラーも無く実行します。しかし、もう少し待てば、そのクラスをインスタンス化するとき、異常終了になります、そして、追跡情報も一切ありません。
既に一部の方はミスを見つけられたかもしれませんが、この変な障害が出るのは、戻り値のところ、myFooとMyFooを間違えたからです。正しくのはreturn myFooです。
2.日付について
1 2 |
DateTime dt = DateTime.Now; dt.AddDays(1); |
上記のコードは、現在の時刻を生成し、一日を足し、その変数を返すものです。ビルドエラー無く、実行できます。しかし、戻り値を確認すると、翌日の時間ではなく、当日の時間になっています。
また一つおかしなことが起こりました。なぜ思った通りに動いていないのでしょうか。今回はメソッドAddDaysを調べると、その答えが出ます。上記のメソッドは、新しいDateTimeインスタンスを作り、一日を足し、そのインスタンスを返しています。これが原因です。元の変数dtはまったく変えていないのです。
まとめ
上記二つの例は後から見ると簡単ですが、障害が出るとき、とても見つかりにくいものです。仕事を順調にさせるために、できる限りいろんな間違いやすい点を集めておくと良いでしょう。
【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>