- 1 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:44:27 ]
- このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 ふらっとC#,C♯,C#(初心者用) Part23 pc11.2ch.net/test/read.cgi/tech/1200033660/
- 237 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 07:28:13 ]
- stringは参照渡しだからrefなんざつけんでいい
stringの代入はコピーではなくポインタを代入してるだけ
- 238 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 07:40:12 ]
- >>232
stringを渡すときrefつけるのとつけないので結果が変わる場合があるのはわかってる?
- 239 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 08:23:49 ]
- >>234
参照型を値で渡すのと参照渡しは違うよ。 揚げ足取りじゃなくて全然違う。
- 240 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 09:26:56 ]
- なぜ説明を書かないのだろう。
- 241 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 09:59:58 ]
- 揚げ足取りだから
- 242 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 10:34:02 ]
- MSDNでrefで検索して最初に出て来るページにすっかり書いてあるだろJK
- 243 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 11:03:23 ]
- メソッド内で生成された参照型のインスタンスへの参照を、呼び出し元で受け取るには、refなりoutなりを使って参照の参照を渡す必要がある。(returnは別として)
呼び出し元で作成したインスタンスを操作するなら、インスタンスの参照を渡せばいいから、refはいらない。 引数をメソッド内で変更したい場合、Stringみたいに操作する度に新しいインスタンスが生成されるタイプのクラスは前者。StringBuilderみたいに新たなインスタンスを生成せずに操作できるタイプのは後者。
- 244 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 11:16:06 ]
- 読み返してみるとくどくて意味不明だな。すまん。
徹夜明けだからもう寝るわ。
- 245 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 14:51:23 ]
- using System;
using System.Text; namespace ConsoleApplication1{ class Program { static void Main(string[] args) { StringBuilder strbld = new StringBuilder("Start"); EditValue(strbld); Console.WriteLine(strbld.ToString()); //出力:Start+Edit ChangeValue(ref strbld); Console.WriteLine(strbld.ToString()); //出力:Changed NotChangeValue(strbld); Console.WriteLine(strbld.ToString()); //出力:Changed Console.ReadKey(true); } static void EditValue(StringBuilder value) { value.Append("+Edit"); } static void ChangeValue(ref StringBuilder value) { value = new StringBuilder("Changed"); } static void NotChangeValue(StringBuilder value) { value = new StringBuilder("NotChanged"); } }} こういうことか。勉強になった。Thx
- 246 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:00:13 ]
- 違うだろ
- 247 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:06:43 ]
- 参照型の参照渡しはポインタtoポインタ(**object)だな
まぁ,C風に覚えてもかまわないと思われ
- 248 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:16:11 ]
- >>246
どう違うの? 出力結果を見ると違わないんだけど。 アホにも分かるように教えてくれ。
- 249 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:22:19 ]
- >>248
>>246 ではないが NotChangeValue の後が違うかと。
- 250 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:29:56 ]
- ん?stringもref stringも
関数内で引数を書き換えなきゃ変わらんだろ
- 251 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:48:50 ]
- あーそうか、ChangeValueとかNotChangeValueとかいう関数名が分かってないようにとられた原因か。
ChangePtrとNotChangePtrに名前を変更して読んでちょうだい。 上記二つのメソッドは参照の参照を変更しようとしているから、 参照渡しをしないNotChangePtrの方は当然参照が変更されない EditValueというメソッドは、参照型を値渡しで受け取り、それのインスタンスメソッドによって インスタンス自身が変化する。 こういう認識でいいんだよね?
- 252 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:51:24 ]
- >>250
意味分からん。 コードで書くとどういうこと?
- 253 名前:デフォルトの名無しさん [2008/02/06(水) 15:52:24 ]
- 他Formから値を参照したいのだがわからないww
初心者過ぎて笑われそうだが… Form1,2で 1に設置しているRadiobuttonをCheckすることで 2に値の変化を与えたい。 わかりにくい説明ではあるが誰か教えてくださいな^ω^
- 254 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:53:18 ]
- >>249
コンパイルして走らせてみた? 出力結果は間違いないよ?
- 255 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:53:45 ]
- >>253
C#の基礎というかプログラミングの基礎のページ見て来い
- 256 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:55:22 ]
- >>253
"デリゲート"でググれ
- 257 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 15:59:35 ]
- すまんID出ないんだったな。
>>245 >>248 >>251 >>254 全部同一人物です。 以後コテハン245になるとしよう。
- 258 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:00:24 ]
- >>250
static void Main( string[] args ) { string str = "250 は"; Manuke( str ); Console.WriteLine( str ); Teinou( ref str ); Console.WriteLine( str ); Console.ReadKey(); } static void Manuke( string s ) { s = "間抜け"; } static void Teinou( ref string s ) { s = "低能"; }
- 259 名前:坊 [2008/02/06(水) 16:03:50 ]
- ありがとっす^ω^
- 260 名前:坊 [2008/02/06(水) 16:05:29 ]
- あっ
>>253 ですww 困ったらまたきますんでw
- 261 名前:254 mailto:sage [2008/02/06(水) 16:05:47 ]
- >>258
禿同。 参照渡しと値渡しの違いって中級者でも分かってない人が多いって記事をどっかで見たことある。
- 262 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:06:01 ]
- >>258
そんなレベルの話してたのか?
- 263 名前:262 mailto:sage [2008/02/06(水) 16:07:05 ]
- あ、値渡しはともかく参照渡しってCのアドレス(ポインタ)渡しと結局同じだと思ってたけど違うの?って意味な
- 264 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:08:55 ]
- >>258
だからそうやって引数を書き換えなきゃ同じだろ
- 265 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:11:19 ]
- >>264
彼らは参照渡しは知ってても使い方を知らないんだろう
- 266 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:13:00 ]
- >>258が話の流れと日本語を読めないってことだけは分かった
- 267 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:14:53 ]
- >>263
まあ凡そ。 それを大前提に進んでた話なんだけど>>258が爆発した
- 268 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:16:08 ]
- かわいそうな>>258がいるスレ
- 269 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:27:43 ]
- で、話の大元の>>222に立ち返ったとして何を議論してたんだっけ?
- 270 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:32:29 ]
- >>222は前者でいいってことじゃね
余計な副作用を与えないために
- 271 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 18:05:58 ]
- >>247
というか、むしろそのほうが分かりやすいような気が 「参照情報」なんて回りくどい言い方せずに、「アドレス」って言ったほうがイメージが伝わりやすいような
- 272 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 18:36:51 ]
- >>271
根本に返って冷静に考えてみ。 アドレスの方が本来間接的な表現な上に間違ってるでしょ。 参照をもし言い換えるのなら、俺なら「位置情報」と言うな。
- 273 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 18:37:58 ]
- いやそりゃアドレスじゃん、英語のアドレスが住所としか略されないとでも思ってるのか?
- 274 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 18:38:52 ]
- 位置情報を英語に置き換えりゃアドレスになんだろ
機械翻訳で訳される2単語が実用される英語だとでも思ってんのかね
- 275 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 18:40:47 ]
- >>272
厳密な意味ではいろいろあるだろうけど、初心者にとっては直感的にはアドレスが一番しっくりくると思うが
- 276 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 18:41:26 ]
- 最近はスレタイも読めないバカが増えたな
- 277 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 18:43:29 ]
- >>273
住所にすら略されないが?
- 278 名前:275 mailto:sage [2008/02/06(水) 18:44:59 ]
- ×初心者
○日本人の初心者 まぁ瑣末事だけどw
- 279 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 18:51:16 ]
- >>274
言葉にはそれぞれ意味上のふり幅ってものがあるんだよ。 特に英語のような多義的な言葉を文脈によって使い分ける傾向が高い言語ではね。 "address"は多義的過ぎる上に、コンピュータの世界では別の抽象レベルで 既に別の意味で使われているから望ましくない。 もっと意味のふり幅が少ない言い方を工夫すべき。 ……ここまで補足しないとわからないかねえしかし。。
- 280 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 18:53:19 ]
- エイリアスでええやん
- 281 名前:デフォルトの名無しさん [2008/02/06(水) 19:00:55 ]
- アプリケーション設定を暗号化して保存したいんですが、いまいち
system.comnfigurationクラスの使い方がよくわかりません。 どっか良いサンプルないですか? MSDN読んでもいまいちよくわかりません。
- 282 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 19:34:25 ]
- 暗号化は変なサンプルも多いから気をつけろよ
- 283 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 21:00:59 ]
- ポインタの参照渡し
- 284 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 21:27:31 ]
- 最近のスレの内容・・・予想以上に.NET普及は早そうだな
>>281 BinaryFormatterとかでは駄目なの?
- 285 名前:デフォルトの名無しさん [2008/02/06(水) 22:37:14 ]
- メソッドに渡す引数の属性で[in]や[out]があるんですが、
これはC#のrefやoutとは違うものなんでしょうか
- 286 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:41:38 ]
- そいつはマーシャラに対する指令
- 287 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:41:57 ]
- [Out]はoutと同じ。
refは[In][Out]相当。 [In]単独は、アンマネージとの相互運用で使うことがある。
- 288 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:45:50 ]
- C#の中だけで完結する限りは[in]や[out]は無意味
- 289 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:47:46 ]
- C/C++で作ったコードをC#で使えるようなラッパーを作りたいんですが
参考になるようなHPとか本あったら教えてください
- 290 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:48:35 ]
- 俺も知りたい
- 291 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:48:49 ]
- C++/CLIでいいじゃないか。
- 292 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:51:14 ]
- >>289
本は知らんが、このあたりのキーワードでMSDNとか 探してみればなんかヒントあるんじゃね。 * COM Interop * P/Invoke * C++/CLI
- 293 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:54:18 ]
- VC#2008対応の解説本早く出せよ。
- 294 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:57:05 ]
- 誰に言ってるのw
君統合失調の初期症状じゃないのマジで
- 295 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:59:48 ]
- 確かにアンマネージドとの連携について詳しい本があったら欲しいな
Win32API叩く度に検索して調べるの面倒になってきた
- 296 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 23:00:45 ]
- つMSDN
- 297 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 23:08:54 ]
- >>295
Win32API使うだけなら、P/Invoke.netとかでいいだろ。
- 298 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 23:10:21 ]
- >C#の中だけで完結する限りは[in]や[out]は無意味
そうでもない。
- 299 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 23:16:48 ]
- >>298
具体的にkwsk
- 300 名前:デフォルトの名無しさん [2008/02/06(水) 23:18:40 ]
- WebBrowserコントロールでブラウザ作ってるんですが、yahoo.co.jpを開いて閉じるとフリーズしてしまいます。
Googleとかだと大丈夫なのですが。 なんででしょうか? バグってるんでしょうか?
- 301 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 23:20:26 ]
- 説明にもなってない
それで解決できるはずも無い まあ確かにWebBrowserは色々胡散臭いが
- 302 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 23:24:52 ]
- あなたのコードがバグってるんでしょうね
- 303 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 23:33:14 ]
- WebBrowserはJavaScript周りがバグりまくっている。
JavaScript以外にもFlashを使っているサイトを表示した直後も半フリーズ状態になる。 で、結論は「使うな」。 IEコンポーネントで全て置き換えろ
- 304 名前:デフォルトの名無しさん [2008/02/06(水) 23:46:28 ]
- 新規プロジェクト作ってWebBrowser貼り付けて、下記の1行を追加しただけで終了時に固まる。
public Form1() { InitializeComponent(); webBrowser1.Url = new Uri("www.yahoo.co.jp"); } で、原因はWebBrowserは開いたページの内容によっては内部で立ち上がった謎のスレッドが終わらなくなる 直る見込みはない 諦めろ
- 305 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 23:50:33 ]
- >直る見込みはない
何故ですかね?MSにやる気がないから?
- 306 名前:デフォルトの名無しさん [2008/02/06(水) 23:55:02 ]
- >>305
WebBrowser Controlが登場して何年経ったと思ってるんだ 海外の方でも2年近く前から話題になっているくらいの問題だぞ www.eggheadcafe.com/aspnet_answers/NETFrameworkNETWindowsForms/Apr2006/post26457510.asp 直るならとっくの昔に直ってる
- 307 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:09:08 ]
- >>304
固まらなかったよ
- 308 名前:デフォルトの名無しさん [2008/02/07(木) 00:29:46 ]
- >>304
VS2005 Win2003R2x64 固まる
- 309 名前:デフォルトの名無しさん [2008/02/07(木) 00:34:05 ]
- >>304
固まるというか、ウィンドウは閉じてるのにVS2005がデバッグ実行中のままになった
- 310 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:42:20 ]
- >>304
XP VS2008 .NET Framework3.5 固まらない
- 311 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:42:25 ]
- WebBrowser使ったこと無いからよく分からんが
スレッドがバックグラウンドになってないんじゃないか?
- 312 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:44:07 ]
- WebBrowserと名前のつくコントロールは、
大昔のVBやDelphiからあったが、 どれもこれもまともに使える代物じゃなかったな。
- 313 名前:307 mailto:sage [2008/02/07(木) 00:44:20 ]
- VS2005Pro
XPx64SP2 IE:7.0.5730.11 Flash:9.0.115.0 プラットフォーム:x86 固まらない
- 314 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:47:52 ]
- コンストラクタ内で実行しなけりゃいいんじゃね?
- 315 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 00:48:36 ]
- >固まる環境の人
Navigateメソッドでもなる?
- 316 名前:デフォルトの名無しさん [2008/02/07(木) 00:58:16 ]
- >>315
なった コンソール用のテストコード書いてみたが、こちらも見事に固まる ちなみに終了シグナルは飛んできて一見終わった様に見えるが、 残骸が残っていて悪さしているようだ class test { ManualResetEvent _mre = new ManualResetEvent(false); public void run() { Thread thread = null; try { _mre.Reset(); thread = new Thread(new ThreadStart(entry)); thread.SetApartmentState(ApartmentState.STA); thread.Start(); } finally { _mre.WaitOne(); } } void entry() { WebBrowser bra = new WebBrowser(); browser.Navigate("www.yahoo.co.jp/"); while (_browser.ReadyState != WebBrowserReadyState.Complete) { // 省略 } _mre.Reset(); } }
- 317 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 01:02:56 ]
- >>306
海外とか知らねえよバカ
- 318 名前:デフォルトの名無しさん [2008/02/07(木) 01:29:08 ]
- テストプログラム
www2.uploda.org/uporg1237632.zip.html
- 319 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 01:37:03 ]
- >>318は www.google.co.jp になっているから、www.yahoo.co.jp に変更して試して見るべし
- 320 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 01:40:36 ]
- >>316
ちなみにIEのバージョンは?
- 321 名前:デフォルトの名無しさん [2008/02/07(木) 01:43:14 ]
- >>320
Windows Server 2003R2 x64 IE 6.0.3790.1830 SP1 .NET3.0は入れてない
- 322 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 01:52:31 ]
- 家のパソコンにIE6が入ってるから試そうと思ったけど繋がらないや
帰るか
- 323 名前:デフォルトの名無しさん [2008/02/07(木) 02:15:42 ]
- >>318-319
このエラーでた 意味はわからん msdn2.microsoft.com/ja-jp/library/ms172219.aspx
- 324 名前:デフォルトの名無しさん [2008/02/07(木) 08:25:57 ]
- >>284
binaryformatterは暗号化していないので解析しようと思えば すぐできてしまうから、パスワードなんかは保存したくないわけです。 system.security.cryptographyのクラス群で暗号化してから保存すれば 同じことなんですが…。 アプリケーション設定が.net2.0以降すごく使いやすくなっているみたいなので、 そちらで暗号化できるならそっちを使いたいなあと思った次第です。 設定クラスの定義、設定ファイルの読み出し、保存を毎回毎回アプリ作るたびに 実装するのって、エラー処理なんかまで含めて考えると意外と面倒くさいもんで。。
- 325 名前:デフォルトの名無しさん [2008/02/07(木) 12:58:22 ]
- またWebBrowser被害者か
- 326 名前:デフォルトの名無しさん [2008/02/07(木) 14:16:27 ]
- loaderLock マネージ デバッグ アシスタント (MDA: Managed Debugging Assistant) は、Microsoft Windows
オペレーティング システムのローダー ロックを保持するスレッドでマネージ コードを実行しようとする試みを 検出します。 このような実行は不正であり、デッドロックの発生につながり、DLL がオペレーティング システムのローダーに よって初期化される前に使用される可能性があります。
- 327 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 15:00:57 ]
- >>323
IEのアドイン全部停止して試してみるとかどう?
- 328 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 15:19:01 ]
- 質問です。
インターネット上にあるpng形式のファイルを取得して保存したいと考えています。 そこで、 Stream objStream; objStream = wrGETURL.GetResponse().GetResponseStream(); StreamReader objReader = new StreamReader(objStream); string filepath; filepath = "C:\\hoge\\hoge.png"; if (File.Exists(filepath)) { File.Delete(filepath); } StreamWriter w = new StreamWriter(filepath); w.Write(objReader.ReadToEnd()); w.Close(); objStream.Close(); とやりましたが、保存できないようです。 StreamReaderのどのメソッドを使えば、インターネット上の画像ファイルの読み込みを一括でおこなえるのでしょうか?
- 329 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 15:20:48 ]
- どこでおかしくなってるのかちゃんと調べろよ。
- 330 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 15:26:48 ]
- StreamReader/StreamWriterはストリームを文字列で扱うクラス。
画像みたいなバイナリファイルに使っちゃ駄目。
- 331 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 15:28:07 ]
- File.Copy()でファイルをコピーする場合、
途中で止めるにはどうすればいいですか? プログラムを強制終了しても、止まらないようなのですが・・・
- 332 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 15:42:42 ]
- File.Copyだと止められないんじゃない
SHFileOperation使えば
- 333 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 15:55:34 ]
- >>332
ダイアログがうざいから SHFileOperation使いたくなくてFile.Copy()にしたんですが やっぱり止める方法はないんですかね・・・ FileStreamでnバイトずつ読み込み→書き込み→停止信号監視 とやれば止められそうですが遅くなりそうで
- 334 名前:デフォルトの名無しさん [2008/02/07(木) 16:19:46 ]
- >>327
変化なし
- 335 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 16:39:19 ]
- >>331
Windows APIのCopyFileExだと コールバック付きで途中中断もできる。 こっちはだめ?
- 336 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 16:47:50 ]
- >>335
ありがとうございます そんなのがあるんですか Win32APIだとVISTAへの対応が心配ですが試してみます
- 337 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 17:18:48 ]
- CopyFileExだとファイル単位でコールバックだね
|

|