web-dev-qa-db-ja.com

「メソッド 'ToString'のオーバーロードはありません '1'引数を取ります」エラーが発生する「dd-MM-yyyy」形式で日付フィールドを文字列にフォーマットします

私はasp.net 3.5に取り組んでいます。DateTimeデータをsqldatareaderから_"dd-MM-yyyy"_形式の文字列に変換したいです。しかし、"rdMonthlyLeave["LEAVE_DATE"].ToString("dd-MM-yyyy")"として_"dd-MM-yyyy"_フォーマットパラメータを使用すると、ブラウザは次のようなコンパイルエラーを返します。

コンパイラエラーメッセージ:CS1501:メソッド 'ToString'のオーバーロードは '1'引数を取ります

解決策はありますか?

22
netraThapa

最初にDateTimeにキャストする必要があります:

DateTime leave = (DateTime) rdMonthlyLeave["LEAVE_DATE"];
DoSomethingWith(leave.ToString("dd-MM-yyyy"));

あるいは単に

((DateTime)rdMonthlyLeave["LEAVE_DATE"]).ToString("dd-MM-yyyy")

DataReaderインデクサーの戻り値の型はobjectであり、objectには文字列を受け取るToStringのオーバーロードがありません。 overloadingはコンパイル時の決定であることを忘れないでください。コンパイラは互換性のあるシグネチャを持つ適切なメソッドを選択し、実行時のタイプに基づいてoverridingのみが発生します。この場合、is互換性のあるシグネチャを持つToStringのオーバーロードがないため、コンパイル時エラーが発生します。

44
Jon Skeet