3

私はWPFC#にまったく慣れていないので、このばかげた質問をしたことで私を責めないでください。

私は 2 つのdatepickersを持つ WPF アプリを持っています。変更されたときに DateTime を取得し、それをアプリ内の他のものの変数として使用したいと考えています。だから私はそれらのそれぞれにこのようなものを持っています(メソッドはVSによって自動的に生成されました):

private void datePicker1_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
        {
            date1 = datePicker1.SelectedDate;
        }

問題は、datepicker の日付がDateTime の形式であることです。DateTimeではなく、その疑問符が何を意味し、なぜそこにあるのか本当にわかりません。私はいくつかの研究を試みましたが、私を助けるものは何も見つかりませんでした. その日付ピッカーから日付を取得するより良い方法を見つけたら、私もそれを手伝ってくれます。xamlではなくxaml.csコードで必要なだけで、バインディングの使用にあまり興味がないため、この場合に必要な方法で機能するかどうかわかりません。

回答ありがとうございます。

編集:このエラーが表示されるという情報を追加したいと思います:

タイプ 'System.DateTime?' を暗黙的に変換できませんか? 「System.DateTime」に。明示的な変換が存在します (キャストがありませんか?)

4

4 に答える 4

0

DateTime値なし (つまり、null) を作成することはできません。常にデフォルト値 ( DateTime.MinValue) があります。

DateTime?一方、Aは一種のラッパーであり、 undefinedDateTimeのままにしておくことができます。これは、たとえば、ユーザーが日付フィールドの 1 つを空白のままにしておきたい場合 (日付が選択されていない = ) に非常に便利です。Null

DateTime?ただし、これに関連する作業を行う必要があるメソッドのパラメーターの型として使用する必要があることに注意してください。他のライブラリに依存している場合、またはこのデータを他のコンポーネントに渡す必要がある場合など、厄介な状況に直面することがあります。

典型的な課題/決定:
私はDateTime?コンポーネントXで使用しています。これはコンポーネントYと対話します。これは、Yを handleDateTimeに書き換えるべきか、値がtoの-objectに変換する必要があります。選択されていない/無効な日付を表しますか?それとも、Yで例外をスローさせるべきでしょうか?DateTime?DateTime?NullDateTimeDateTime.MinValue

..で作業するときに知って考えるべきことDateTime?..

于 2013-05-06T11:15:21.940 に答える
0

null 許容の DateTime は null にすることができます。

構造体自体はDateTimenull オプションを提供しません。ただし、DateTime?null 許容型を使用すると、null リテラルをDateTime型に割り当てることができます。これは、オブジェクト モデルに別のレベルの間接性を提供します。

null DateTime 構造体を使用するプログラム: C#

using System;

class Program
{
    static void Main()
    {
    //
    // Declare a nullable DateTime instance and assign to null.
    // ... Change the DateTime and use the Test method (below).
    //
    DateTime? value = null;
    Test(value);
    value = DateTime.Now;
    Test(value);
    value = DateTime.Now.AddDays(1);
    Test(value);
    //
    // You can use the GetValueOrDefault method on nulls.
    //
    value = null;
    Console.WriteLine(value.GetValueOrDefault());
    }

    static void Test(DateTime? value)
    {
    //
    // This method uses the HasValue property.
    // ... If there is no value, the number zero is written.
    //
    if (value.HasValue)
    {
        Console.WriteLine(value.Value);
    }
    else
    {
        Console.WriteLine(0);
    }
    }
}

出力

0
9/29/2009 9:56:21 AM
9/30/2009 9:56:21 AM
1/1/0001 12:00:00 AM

最初に見つかったここ

幸運を!

于 2013-05-06T11:00:22.447 に答える
0

null 許容の DateTime は null にすることができます。DateTime 構造体自体は null オプションを提供しません。しかし、「DateTime?」nullable 型を使用すると、null リテラルを DateTime 型に割り当てることができます。これは、別のレベルの間接性を提供します。

于 2015-01-22T06:45:04.527 に答える