TOP 
記事検索(複数ワードSP区切り)
ティアのホームページ☆ミ

 
ティアのホームページ 月依桜へようこそ☆ミ
フルhttps化したので、リンクを張り直してくれると嬉しいです☆

(2024年8月8日更新) ATOM 1.0
女装千年王国 2017年9月29日発売
チャンネル 茉奈香ちゃんねる
 
カテゴリ 自己の紹介 りんく 落書き帳 レガリヤ プログラム みちゃいやん グラフィック RTChart個人用
 
テーマ 日記(825)
たわごと(260)
BlogPet(168)
PSO2(117)
ゲーム(55)
こみけ(45)
PSO2 NGS(35)
番組表(35)
なし(32)
うさこ日記(27)
ココロ日記(20)
Windows10(11)
CG(7)
たるたる(6)
記念日(5)
アニメ(4)
Ys?(4)
あに(2)
拍手返事(2)
激痛(1)
 
旧カテゴリ たわごと
(引っ越し中)
 
カレンダー
<< 2009年02月 >>
Sun Mon Tue Wed Thu Fri Sat
             
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
             
2008年12月 2008年7月
2008年11月 2008年6月
2008年10月 2008年5月
2008年9月 2008年4月
2008年8月 2008年3月
     
 
フォローする?

女装千年王国 2017年9月29日発売
【プリズム◇リコレクション!】情報ページ公開中!
【プリズム◇リコレクション!】情報ページ公開中!
『大図書館の羊飼い』は2013年1月25日発売予定です。
『大図書館の羊飼い』は2013年1月25日発売予定です。

『えれくと!』を応援しています!
「キミとボクとエデンの林檎」花鏡院琴音を応援中☆ 公式サイトへ
ALcot ハニカム 『アネイロ』 瑛菜応援中!
【カミカゼ☆エクスプローラー!】風花を応援中!
【カミカゼ☆エクスプローラー!】沙織を応援中!
アネカノ 秘密の彼女はお姉ちゃんいちゃらぶADV 応援中!
ゴスデリ 7月23日発売予定
『とっぱら ~ざしきわらしのはなし~』2008年9月26日発売予定!
 
no prev page 1/1ページ(1件) no next page
To Close..C#的データ配列の宣言方法 2009年02月10日13時37分
最近のお仕事はC#で作っています。

何でこんなことになったのかは分かりませんが、まぁそういうことです。

で、これ

C++的にも、データ宣言をするときはnewを使ったりすることもありましたが、この場合はdeleteで必ず削除する必要が有りました。

実はあたし、new xxx[xx];で宣言したのはdelete [] xxx;で削除しなければいけないのをかなり長い間知りませんでした(笑

まぁそんなこともあり、c++にどっぷり感が出てきたあたしは、メモリの確保と、解放はかなり神経質になっていました。


しかしC#の一番はじめの挫折はdeleteが無いことでしたw

そんなことも乗り越え、そろそろ1ヶ月です?


あれもこれも、C#でできる方法がないかかなり探し回る日々でした。


で、ずっとぶち当たっていた問題の結果がこれ


c++というか・・・c的には

int a[10]={0,1,2,3,4,5,6,7,8,9};

で宣言すれば十分的な

いえね、配列を宣言するという意味合いじゃないんですよ。

静的データの宣言なのです。



アプリケーションには何をするにも、いろいろ初期値という物があります。
この初期値が正しく設定されていないと、思わぬ不具合が発生したり、動作が定まらなかったり大変なのです。

固定的に値を宣言しておけばそれで十分的な何かを、C#ではなかなかそうは行かなかったのです。

なぜかって??

それは、deleteが無いことに全ては起因しています。

ガベージコレクタが、自動的にメモリを整理してしまう構造のC#では、静的データでさえ、初期値込みのデータとして宣言することができないのです。

これは、調べ尽くした結果(というほどでもない)

staticのクラスを宣言し、staticで配列変数を宣言して、コンストラクタで配列をnewで初期値込みで割り当てる必要が有るみたいです?


まぁもしかしたらconst を宣言すれば、もうちょっと何かが変えられるかもしれませんが、でも静的クラスについての説明を読むと、


new等無しにクラスにアクセスができるようになり、該当メソッド、値等は必要になる前に自動的に初期化されて(コンストラクタが呼び出される)使用可能になり、それ以降は、固定的にメモリマッピングされ、他のDLLから呼び出す場合でも、無駄な初期化行為は全く行われない。
参照設定さえしておけば、どこからでも自由に読み書きができるわけです。

また、おもしろいことに初期化タイミング自体を設定することも不可能とか、それはそれでおもしろいと思いましたがw

breakを掛けてみると、一番はじめに値を参照するときに、コンストラクタが呼ばれました。
まぁこれは”たまたま”で、有ると同時に、必然でもありますね。


ちなみに

classにstatic 属性をつければそれでOK
配列を宣言するときは、コンストラクタにて正しく初期化しましょうね☆
コンストラクタで初期化していない物については、それ以降全く初期化が行われないために、値が不定になるんじゃないかな?C#的にはexceptionが発生するんじゃないかしら?

そのあたりも、テストしてみるとおもしろいかもしれません??
閉じる
テーマ:日記 URL:https://tsukiyori.sakura.ne.jp/index.cgi?ID=269
 
no prev page 1/1ページ(1件) no next page
このホームページでは一部、“PULLTOP” 製品の画像素材を加工・引用しています。
これらの素材を他へ転載することを禁じます。
(C)GUST CO.,LTD.
Copyright © 2009 C&C Media Co.,Ltd. All Rights Reserved.
Copyright ©  WeMade Entertainment Co.,Ltd. All Rights Reserved
Copyright ©  INTIVSOFT. All Rights Reserved.
『PHANTASY STAR ONLINE 2』公式サイト
http://pso2.jp/
■PULLTOP Official Website■ やりこみRPGアトリエシリーズ公式ページへ!
モバイル向けのページはこのQRコードを利用ください。
■PULLTOP Official Website■
 
以前のバナーはこちら パメラ七変化はこちら