- 1 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 10:15:52 ]
- (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。
前スレ C#, C♯, C#相談室 Part51 pc12.2ch.net/test/read.cgi/tech/1233757615/ Visual C# 2008 Express Edition 日本語版 www.microsoft.com/japan/msdn/vstudio/express/vcsharp/ その他テンプレ>>2-5くらい
- 246 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:58:26 ]
- >>239
初心者は恐ろしいことするよなぁ
- 247 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 00:00:32 ]
- セグメントエラーです。。。
- 248 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 00:37:30 ]
- C#はC言語の標準関数を使えないんだろ。
ぼろい言語だな。.Netでしか通用しないノウハウだな。 C++ならC言語のノウハウは生かせるから、VC++やC++Builderで、MFCやVCLの知識は無いけども、 イベントハンドラにC言語のコードを差し込んで、単にGUIの画面を借りるだけのスタイルで、 普段コマンドプロンプトのプログラムしか作らない俺でも、Windowsプログラムを作れたぞ。
- 249 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 00:49:14 ]
- 釣りたいならもっと勉強してから出直してきな
- 250 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:10:24 ]
- >>243 と >>248 は逆に、C/C++ への皮肉だと思う。
- 251 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:14:24 ]
- C#でC言語の標準関数を使った事がある俺は神か
- 252 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:14:35 ]
- ある意味釣られたってわけだなw
- 253 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:17:50 ]
- ああ、msvcrt*.dllの関数も呼べるよな
- 254 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:39:12 ]
- C++人はマネージ拡張C++に手を伸ばせば同じことができるし、
VB6人やMS-Office VBA人は差分学習ですぐにVB.netやれるし、 (中途半端に似ててかえって混乱するとかいうのはデマ) .Netしか通用しないノウハウのC#を学習する意味不明。
- 255 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:42:37 ]
- C互換ライブラリとかどこかにあったりしないかな。
C.StdIO.Printf() とか用意してある
- 256 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:42:57 ]
- 第二段来ました
- 257 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 02:07:22 ]
- >>254
ところがどっこい。 .NETのサンプルがC#だけで出て来る例というのがよくあるため、 VBの人もC++の人もC#のサンプルを見て自分の言語に移す羽目に。 ここから蛇足。一昔前だったら、Cで書かれたWinAPIのサンプルを VBへ移したり、C++ならクラスでラップしてみたりしていたわけで、 時代が移ってもやっていることに変わりはないのさ_| ̄|○
- 258 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 02:09:54 ]
- しっ、話しかけちゃいけません!
- 259 名前:デフォルトの名無しさん [2009/04/19(日) 02:10:41 ]
- >>254
じゃあdelphiしか選択肢がないな
- 260 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 02:14:42 ]
- kylixってどこいったん?
- 261 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 03:24:35 ]
- >>257
要は君はコピペグラマってこと? だったら.NETの問題っていうより君自身の問題なんじゃないの? 普通はサンプルの考え方を拝借することはあってもコードをそのまま引っ張る なんてしないよ。
- 262 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 03:47:00 ]
- そりゃそうだ。だいたい、C#に癖のある構文なんてそんなに無いから、
サンプルを理解するくらいなら特にC#の知識を持ち合わせていなくても問題ないだろう。 もっとも、VB.NETやC++/CLIからもうちょっと手を伸ばせばC#にも手が届くだろうとは思う。 手が届くというだけではC#を学習する理由にはならないから、254への答えでは無いけどな。
- 263 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 08:38:49 ]
- >>239が一瞬HLSLに見えた
- 264 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 08:53:42 ]
- あんな見え見えの構ってちゃんの相手してやるんなら>>239に答えてやればよかった
もういないだろうけどscanfの引数は取得したい値を格納する変数のポインタを入れなきゃだめだよん
- 265 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 10:09:38 ]
- 一章とかでscanf()してる入門書とかあるからなあ
- 266 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 10:47:06 ]
- いまだにCやるときはscanfを使う俺
なんで一行読み込みがgnuのgetlineしかねーんだよ・・・標準で作れよ メモリ確保こわい って感じ
- 267 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 18:12:40 ]
- fgets して sscanf するのが面倒だから
getopt に頑張ってもらうか適当な設定ファイル読ませるようにしちゃうなぁ。 つか C# 関係ないな。
- 268 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 02:23:31 ]
- たまに使うVC++でgetline()を使おうとして、「あれ?」と思う俺。
- 269 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 11:37:48 ]
- Collection系(例えばQueue)でロックされた状態で処理を行いたいとき
1.lock(独自のロックオブジェクト) 2.lock(対象.SyncRoot) 3.Queue.Synchronized(対象) とか考えられるんですが 使い分けの方法がわからない 1・・・コレクションだけではなくその他の変数やオブジェクトもロックしたいときにまとめて一回でやりたいから使うかなと 2、3 この違いは一体何なのか教えてほしいです。 そして Queue.Synchronized でMSDN調べたら 同期されている (スレッド セーフな) Queue ラッパーを返します とありますが、型が同じということだけはわかりますがこれはコピーされたオブジェクトなのかそれとも元の本体そのものなのか・・・ 予想すると 3のラッパーはオブジェクトのディープコピーをかえしてきて読み取り専用的に扱う 削除なんかは3の操作ではできないから1,2の方法を使って要素を削除したり こんな考え方でいいのでしょうか?
- 270 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 21:40:44 ]
- >>269
.Net Reflector
- 271 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 22:08:11 ]
- ソース公開されてるからReflector使わんでもええやん
- 272 名前:デフォルトの名無しさん [2009/04/21(火) 05:09:56 ]
- ReflectorとReflectionは違うものですか?
- 273 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 05:15:22 ]
- >>272
うん
- 274 名前:デフォルトの名無しさん [2009/04/21(火) 05:20:35 ]
- ツールか。新しい機能かとオモタ
- 275 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 08:45:40 ]
- >>269
どっちかっていうと1.2.が似てて、3.が違うよ 3はクラスメソッドがスレッドセーフになったコレクション。 Dequeue()やEnqueue()はスレッドセーフで実行できるけど、 列挙処理中はSyncRoot等でロックしないと別スレッドでの変更に対応できない あとラッパーっていうのは元のオブジェクトに 新しい機能をかぶせるテクニックの総称だから元の本体だね 削除も普通にできる
- 276 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 08:49:30 ]
- object ICollection.SyncRoot
{ get { if (this._syncRoot == null) { Interlocked.CompareExchange(ref this._syncRoot, new object(), null); } return this._syncRoot; } }
- 277 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 11:09:13 ]
- 説明ありがとうございます。
>>275 列挙している間に別スレッドからの追加・削除処理が入る場合は基本ロックが必要そうですね・・・ そこまで処理速度が必要そうなわけでもないので、ひとまずロックさせて使ってみようと思います。 >>276 結局は内部で専用のロックオブジェクトを提供してくれているだけという感じでしょうか
- 278 名前:デフォルトの名無しさん [2009/04/21(火) 13:29:20 ]
- Shared code , Shared source といった類のキーワードでgoogle先生に聞けば以前はあっさり見つかっていたのに・・・
どこにいったんだろう? VisualStudioのライブラリソースコード表示の説明リンクを次から1の直下に張り付けておいたら良いと思う。 誰か場所知っていたらリンク張って欲しいです。 >>277 実はソースコードみた方が圧倒的に正確だしてっとりばやい、凄い単純な実装なんで。 www.microsoft.com/downloads/details.aspx?FamilyID=8c09fd61-3f26-4555-ae17-3121b4f51d4d&DisplayLang=en とりあえず VisualStudio からではないですが、ソースコードです。 ダウンロードしてgrepして探してみてください。
- 279 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 18:40:07 ]
- 条件によって異なる複数の変数(string或いはint)を
配列化して(一列に並べて)、各変数に代入するメソッドを変数の個数だけ実行したいのですが、 デリゲートを使うとオーバーロードできないため、Object型を渡して判別するという事も考えたのですが納得できません。 unsafeのポインタを使うべきなのでしょうか。
- 280 名前:279 mailto:sage [2009/04/21(火) 18:52:28 ]
- すみません。具体的に言うと
foreach (string tmp in bufStr) { str = DataTypeCheck(tmp); if (str == null) { //・・ここでメソッドを呼び出してそれぞれ代入 } else if (str == "case1") { //・・代入する変数のリストを作成 } else if (str == "case2") { } } データ(string[])は以下のようになっており case1 a b case2 ・・・ この場合はa,bをcaseに応じた変数に格納します。
- 281 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 19:23:47 ]
- 具体的といいつつ酷く分かりづらいな
Func<T>でも使えばいいんじゃね privateなメソッドなら型制約とかもいらんっしょ
- 282 名前:279 mailto:sage [2009/04/21(火) 19:53:25 ]
- >>281
説明下手で、すみません。 ググりましたが、おそらくお察しの通りです。 感謝いたします。m(_ _)m
- 283 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 19:00:44 ]
- Dispose()のCLRにマネージされていないデータを解放するという説明を読んで思ったのだけど、
CLRにマネージされてるかどうかってのはつまりどういう事なの?
- 284 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 19:12:25 ]
- ざっくりいってIDisposableがマネージド、IntPtrがアンマネージド
- 285 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 19:23:50 ]
- >>283
C++なんかだと、COMやスマートポインタを使って、リファレンスカウンタで生存管理をしているんだが この方式だと、参照がなくなると同時に解放処理がされる。 対して、ガベージコレクタを使った.NETでは解放処理はメモリーが尽きたとき。 で、C++では参照がなくなると同時に解放処理を行う事を前提に組んであるケースが多いんだ。 だからC++の場合ちゃんとリファレンスカウンタで管理されているファイルシステムオブジェクトなどはこのタイミングでClose処理もされるのでCloseを忘れていても大丈夫 アンマネージをラップしたクラスを作るとこれが問題になることがある、これ明示的に開放する関数がDisposeだよという意味。 あくまでもラップした先のオブジェクトの解法、ラッパ事態はマネージドなので、ガベージコレクタで解放される。 たとえば.NETでStream系のオブジェクトでこれを忘れていると、Closeしわすれているとガベージコレクタで回収されるまでOpenされっぱなし。
- 286 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 19:42:28 ]
- >>283
CLRの関与していないところで確保したもの。主にWin32ハンドルとか。
- 287 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 13:27:12 ]
- IntPtrにAPIで取得したハンドルなんかもIntPtr.Zeroとかやった方が
いいんですかね…。基本的にマネージド以外の方法で取得したものは 全て何かしらの処理を加えた方がいいんでしょうか。
- 288 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 13:35:57 ]
- 意味が分からん
アンマネージドリソースの解放ってのはIntPtr.Zeroを変数に代入することじゃないぞ CloseHandleとかDeleteObjectとかのAPI関数呼び出しのことだぞ 処理した方がいいかどうかじゃない、必要な手順で解放する必要がある もちろんシステムグローバルな値とかでその必要が無いものもあるがな、ウィンドウハンドルみたいな
- 289 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 14:14:38 ]
- 請求書捨てても借金ちゃらにならない感じ
- 290 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 22:32:21 ]
- あとIntPtrを生で使うんじゃなくてSafeHandle使え
- 291 名前:デフォルトの名無しさん [2009/04/23(木) 22:37:01 ]
- VisualStudio2008のツールボックスで使われているみたいな、プッシュピンで表示/非表示を切り替えられるGUIは、.
Netの標準コントロールとしては提供されていないのでしょうか? 市販コントロールには似たようなものがあるようなのですが。 よろしくお願いします。
- 292 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 22:48:19 ]
- 標準には無い
- 293 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 23:42:08 ]
- オレそれ市販の買おうか真剣に悩んでる。
devexpressの試用版DLしたとこ。
- 294 名前:デフォルトの名無しさん [2009/04/24(金) 00:05:34 ]
- >>292,293
残念です。Microsoftも便利な部品はどんどん使えるようにして欲しいですね。
- 295 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 00:11:37 ]
- >>294
どんどんしてるんだけど、今、SilverlightとかASP.NETとかの優先順位がむちゃくちゃ高いから、 VS風ドックコントロールは、ちょっとやそっとの要望あっても当分後回しになると思う。
- 296 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 08:36:28 ]
- >>287
API直接操作するなら、APIの仕様通りに使わないとアカンで マネージド側の特徴もちゃんと考慮して、アンマネージドの処理がアンマネージドの仕様に合うように。
- 297 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 09:05:35 ]
- 【知的財産】中国:ITソースコード強制開示強行へ・制度を5月に発足…国際問題化の懸念 [09/04/24]
anchorage.2ch.net/test/read.cgi/bizplus/1240524654/
- 298 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 16:20:35 ]
- 質問ですが、Flashのムービークリップの様に、
同じ性質を持ったオブジェクトの中にオブジェクトを上限なく動的に入れる方法はありませんか?
- 299 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 16:29:21 ]
- List<T> じゃあかんの?
- 300 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 16:32:52 ]
- 表示上のオブジェクトという話かな?XAMLでどうよ。
- 301 名前:298 mailto:sage [2009/04/26(日) 16:56:29 ]
- >299-300
ありがとうございます。そこまで複雑な事ではないです。
- 302 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 17:06:03 ]
- じゃあどういうことよ、なのよ
- 303 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 17:09:44 ]
- int[] array = new int[999999];
とでもやって多めに確保しとけ
- 304 名前:デフォルトの名無しさん [2009/04/26(日) 17:11:07 ]
- >>301
むしろ>>298の説明のほうがそれいじょうに複雑なことではあります
- 305 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 18:35:03 ]
- Compositパターンのことを言ってるんじゃないの?
- 306 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 18:35:51 ]
- 「コンポジットパターン」と言いたいんじゃないかな?
ということで、これでぐぐってみてください。
- 307 名前:デフォルトの名無しさん mailto:sage [2009/04/27(月) 08:52:01 ]
- このスレはやさしいエスパーが多いな
- 308 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 00:51:39 ]
- FormBorderStyle.Noneにして標準のタイトルバーとか表示させないで独自のものを表示したりしています。
タスクバーの右クリックでのシステムメニューは下のURL等を見て表示できるようになったんですが、最小化などが無効になったままです。 これは何かメッセージを処理したりすれば有効にさせることなど出来るのでしょうか? 最大化などもFormのWindowStateをNormalのまま最大化らしくふるまうように無理くりやっています。 もしくはこんな風な独自のウィンドウを作る時の従うべき方針などあれば是非是非エロイ人
- 309 名前:308 mailto:sage [2009/04/28(火) 01:11:26 ]
- さーせん、const int WS_MINIMIZEBOX = 0x20000;
とかをCreateParamsのStyleに追加したら最小化も表示されたっす。
- 310 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 01:39:19 ]
- Graphicsに任意のControlを描画することって出来ます?
var webControl=new WebControl() webControl.Draw(graphics); みたいな感じで。
- 311 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 01:44:28 ]
- Excel 2003 vbaの関数をC#から呼んでるんですが
実行時にvba内のブレークポイントで処理を止めるには どうしたらいいんでしょうか。
- 312 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 02:05:10 ]
- >>310
でやってみていかがでしたか?
- 313 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 18:41:06 ]
- public partial class Form1 : Form
{ [DllImport("libmecab.dll")] extern static int mecab_new2(string arg); [DllImport("libmecab.dll")] extern static string mecab_sparse_tostr(int m, string str); [DllImport("libmecab.dll")] extern static void mecab_destroy(int m); public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { int mecab = mecab_new2(""); string s = mecab_sparse_tostr(mecab,textBox1.Text); mecab_destroy(mecab); textBox2.Text = s; } } これがXPでは動くのだけど、Vistaでは動かない。 mecab_sparse_tostr(mecab,textBox1.Text); で System.AccessViolationException はハンドルされませんでした。 Message="保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。" がでる。 意味がわからない。なぜ?
- 314 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 18:51:15 ]
- そのメカブってどこからもってきてんのよ
- 315 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 18:55:02 ]
- これ。
mecab.sourceforge.net/libmecab.html
- 316 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 18:55:19 ]
- オレも何かメカブそば食いたくなったわw
- 317 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 18:58:36 ]
- 実はVista x64版だったというオチ、とか
- 318 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 20:04:16 ]
- >>317
それはさすがに大丈夫だった。 また、Mecabインストール時についてくるEXEは、普通に動きます。
- 319 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 20:06:30 ]
- とりあえずpInvoke行って宣言正しいかみてこようず
- 320 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 20:37:13 ]
- >>313
いま実際に動かしてみた 返値がStringだとマーシャラがギブアップするみたい IntPtrで受けてMarshal.PtrToStringAnsiとかで文字列変換すべし
- 321 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 21:21:30 ]
- ref string でもいけそうな気がする。
- 322 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 21:28:24 ]
- 返値にrefは使えない
エラーが出る原因だけど、あくまで推測レベルだが 返値にStringを指定した場合UnmanagedType.BStrならSysFreeStringが、 それ以外ならLocalFreeだかCoTaskMemFreeだかが自動的に呼び出されたはずなんで メモリ周りの保護の強化との兼ね合いと思われる
- 323 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 22:10:13 ]
- >>320 >>322
ありがとう。XP、Vista両方動いた。
- 324 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 09:23:57 ]
- DataGridviewって動的列つかったCross集計もできないし機能ショボスギですね 代わりにMSレポートのマトリックス使ってますが将来DataGridviewにGrapeCityのGridみたいな機能が付加されることはないでしょうか
- 325 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 11:46:10 ]
- 高機能すぎると独禁法が面倒なんだ
- 326 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 14:35:30 ]
- コンポーネントは機能が少ないほど良い。
- 327 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 19:31:39 ]
- ×コンポーネントは機能が少ないほど良い。
○コンポーネントは機能が洗練されているほど良い。
- 328 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 21:23:18 ]
- >>326機能ゼロが最高だよね。
- 329 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 21:52:40 ]
- せめてAlt+F4で終了する機能ぐらいはつけてくれ
- 330 名前:デフォルトの名無しさん [2009/04/30(木) 22:54:12 ]
- ListView を View == Details で使っていて、
選択された行をタブ区切りでクリップボードに転送してみようと思っているのですが 簡単な方法もしくは、一般にListViewからクリップボードへの定型的なやり方ってありますか?
- 331 名前:デフォルトの名無しさん mailto:sage [2009/04/30(木) 23:02:53 ]
- 1パターンしかないと思うが 細かい差異はあるかも知れんけど
- 332 名前:デフォルトの名無しさん [2009/05/01(金) 02:27:08 ]
- C++で
const int data[] = {1, 2, 3, 4}; のようにやっていたのを C#で書き直したいんだけど、 const int[] data = {1, 2, 3, 4}; とか const int[] data = new int[]{1, 2, 3, 4}; って書くと文句言われる。 int[] data = {1, 2, 3, 4}; なら、文句言われなくなるんだけど、 C#でconst配列の初期化ってどうすればいいの?
- 333 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 02:29:31 ]
- そんなもの無い
dataそのものへの代入不可ならreadonly 要素の変更不可ならReadOnlyCollection<T>でラップ
- 334 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 02:31:20 ]
- private readonly int[] data = new int[] {1,2,3,4};
- 335 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 11:22:09 ]
- >>334
配列の要素に書き込めます
- 336 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 11:37:53 ]
- >C++で
>const int data[] = {1, 2, 3, 4}; は要素の書き換え可なの?
- 337 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 12:22:30 ]
- >>336
それは int const data[] = ... と同義だから、constはintに掛かってて、要素は書き換えられない。
- 338 名前:デフォルトの名無しさん [2009/05/01(金) 13:03:46 ]
- スレ違いだが、
>>336 要素の書き換えは不可。 >>337 前半がウソ。それは同義ではない。
- 339 名前:337 mailto:sage [2009/05/01(金) 13:40:55 ]
- ごめん適当に書いたんだけど、C++とCで違いがあるの?
リンケージ変わったりとか?
- 340 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 14:16:41 ]
- static または auto に宣言しているなら変わらないかと、つか C# スレですが
専門のスレで聞いた方が良いで
- 341 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 14:21:46 ]
- >>335
readonly System.Collections.ObjectModel.ReadOnlyCollection<int> data = Array.AsReadOnly(new int[] { 1, 2, 3 }); こうかな、使ったことないんで自分で確かめてくれ。
- 342 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 14:23:28 ]
- 読み取り専用その他、各種アダプタ類は、class に static 関数として定義されている事が多いんで、いろいろ見てくらはい。
- 343 名前:デフォルトの名無しさん [2009/05/01(金) 16:36:37 ]
- メインのフォームから別スレッドを起動して、そのスレッドからフォームのテキストボックスにアクセスすると
CrossThreadMessagingExceptionが投げられるのですが、どのように回避するのが良いでしょうか?
- 344 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 16:42:06 ]
- コントロール スレッド でぐぐれ
- 345 名前:デフォルトの名無しさん [2009/05/01(金) 17:48:18 ]
- スレッドをAbort()した後に、同じスレッドをStart()すると、
ThreadStateException {"スレッドが実行中か、または終了しています。再起動できません。"} が投げられます。 一度Abort()したスレッドを再開するにはどうすればよいでしょうか? 毎回new Threadをし直す必要があるのでしょうか? できれば、new Threadはアプリ起動時に1度だけで済ませたいです。
- 346 名前:デフォルトの名無しさん mailto:sage [2009/05/01(金) 18:00:27 ]
- メッセージどおり、Abortしたら再起動はできない
つーかAbortなんか使っちゃダメ SuspendとかResumeとかも禁止 フラグとかでスレッド自身が自分の状態を管理するようにする 別にThread作りなおしてもかまわんとは思うが
|

|