- PR -

const指定の定数を引数に渡すとnullになる

1
投稿者投稿内容
へるまろ
ベテラン
会議室デビュー日: 2003/02/04
投稿数: 57
お住まい・勤務地: 東京
投稿日時: 2003-10-23 14:12
例えば以下のようのコードがあったとします。

pubilc ConstantClass
{
const string TEST_STR = "test";
}

string型の引数を受け取るメソッドTestFuncがあったとして
以下のように記述しました。

TestFunc( Constant.TEST_STR );

すると何故かConstant.TEST_STRにnullが入っていることが
あります・・
デバッグで追ってみるとやはり値がnullになっていました。

ただこれはnullが設定されている時と、"Test"が正常に設定
されている時があり、どうやって再現するのかも分からない状況
です。

回避策として
string str = Constant.TEST_STR;
TestFunc( str );
とローカル変数に渡してからだと正常に文字列が設定されているので
現状はこれで回避してますが、どうも釈然としません。

これは何が原因なのでしょうか?仕様でしょうか?
宜しくお願いいたします。

Win2003Server + VS.NET2003でASP.NETアプリを開発しております。


ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2003-10-23 15:55
ども、ほむらです。
staticなっていませんけど良いのでしょうか?

# C++のとき無茶なポインタの使い方したときにも
# 似たような現象はありましたが。。。(ポインタの参照方法のまちがい)
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2003-10-23 16:15
引用:

ほむらさんの書き込み (2003-10-23 15:55) より:
staticなっていませんけど良いのでしょうか?


const は自動的に static になります。
というか、static を付けたらエラーになると思います。

うーん、普通では考えられない気がしますが、なんなんでしょう?
へるまろ
ベテラン
会議室デビュー日: 2003/02/04
投稿数: 57
お住まい・勤務地: 東京
投稿日時: 2003-10-23 16:25
レスありがとうございます。
私もC++からC#へ来てるので、何も考えずに引数に直接const型の値を
渡しておりましたが、こういう症状に出くわしました・・

こちらのBBS又は他のサイトやMLでこれらの話を見たことがないので
環境依存なのでしょうか・・
弟子
会議室デビュー日: 2004/02/03
投稿数: 11
投稿日時: 2004-03-01 15:15
遅いレスですが、私の環境でもconstで指定した値がnullになる現象がおきます。
特に同じソリューション内の違うプロジェクトの値を参照した場合に現れます。
かと言って、必ずしもnullになるわけではなく再起動をかけたりすると直る場合があります。
どういった現象なのでしょうか。
環境:Windows2000Pro + VS.NET 2003
のりから弁当
会議室デビュー日: 2005/02/28
投稿数: 1
投稿日時: 2005-02-28 15:43
私も同じ現象で困っています。
環境は弟子さんと同じです。

再起動してもだめでした。

解決できた方はいるのでしょうか?
1

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