- PR -

DateTime型の定数

投稿者投稿内容
キョウ
常連さん
会議室デビュー日: 2003/04/30
投稿数: 49
投稿日時: 2003-06-30 10:14
DateTime型の定数を宣言したいのですが、どのようにしたらいいのでしょうか?

× const DateTime dtHoge = 2000:01:01:10:00:00;
× const DateTime dtHoge = (DateTime)"2000/01/01 10:00:00";
× const DateTime dtHoge = new DateTime(2000,1,1,10,0,0);
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-06-30 10:35
こんにちは。

const DateTime dtHoge = DateTime(2000,1,1,10,0,0);

newしなくていいです。
キョウ
常連さん
会議室デビュー日: 2003/04/30
投稿数: 49
投稿日時: 2003-06-30 11:15
なるほど〜ありがとうございました!
スミマセン、初歩的な質問で・・・
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2003-06-30 11:30
引用:

Jittaさんの書き込み (2003-06-30 10:35) より:
こんにちは。

const DateTime dtHoge = DateTime(2000,1,1,10,0,0);

newしなくていいです。


こんなことってできるんでしょうか?
実質的に、const には組込みでリテラルとして使える表現のある型しか
使用できないと思っています。
#表現があったからといって使用できるとは限らないかもしれませんが。

ドキュメントを読んだ感じだと、使用できるのは
byte、char、short、int、long、float、double、decimal、bool、string
および列挙体くらいっぽです。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-06-30 12:12
すみません、ちゃんと確認しないでポストしてました。

readonly a as datetime = datetime.parse("2000/01/01")
const b as date = date("2000/01/01")

 constは定数が必要で、初期化された変数でもかまいませんが、オブジェクトへの参照は指定できません。基本的にnewしなければいけないものはオブジェクト参照が変数に入っています。従って、constの右辺にはできません。DateがリテラルなのでDateTimeもだろうと思ったら、DateTimeは違っていました。

失礼いたしました。

[ メッセージ編集済み 編集者: Jitta 編集日時 2003-06-30 12:19 ]
キョウ
常連さん
会議室デビュー日: 2003/04/30
投稿数: 49
投稿日時: 2003-06-30 12:24
System.DateTimeは'クラス'を意味しますが、このコンテキストでは無効です。
というエラーがでてしまいました。

public static DateTime DATE_HOGE = new DateTime(9999,12,31,23,59,59);
で代用する事にしました。
いろいろありがとうございました〜〜〜〜〜

#出かける前に「とりあえずお礼をば〜」と思ったのが裏目でした。スミマセン。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2003-06-30 13:39
引用:

public static DateTime DATE_HOGE = new DateTime(9999,12,31,23,59,59);
で代用する事にしました。


定数として使用するのであれば、readony も指定した方が良いです。
# public にするのであればなおさらです。

ちなみに、DateTime の最大値をフラグ用値として使うのなら、
DateTime.MaxValue を使ってもいいと思います。
MSDN より、
> この定数の値は、10000 年 1 月 1 日の 00:00:00 よりちょうど
> 100 ナノ秒タイマ刻み前の 9999 年 12 月 31 日の 23:59:59.9999999
> に相当します。
# これも、static readonly な変数(定数)です。

コード中に MaxValue と出てくると意図を表せない場合は、
初期化用の式として使えばよいです。

たとえば、
public static readonly DateTime DATE_HOGE = DateTime.MaxValue;
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2003-06-30 13:42
引用:

 constは定数が必要で、初期化された変数でもかまいませんが、オブジェクトへの参照は指定できません。基本的にnewしなければいけないものはオブジェクト参照が変数に入っています。従って、constの右辺にはできません。DateがリテラルなのでDateTimeもだろうと思ったら、DateTimeは違っていました。


構造体などの場合もありますし、(正しく初期化するために)new しなければ
ならないものが、参照型というわけではないです。

# DateTime 型も参照型ではなく値型です。

スキルアップ/キャリアアップ(JOB@IT)