- 1 名前:デフォルトの名無しさん mailto:sage [2010/02/28(日) 18:13:21 ]
- このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。 なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。 >>980を踏んだ人は新スレを建てて下さい。 >>980が無理な場合、話し合って新スレを建てる人を決めて下さい。 ふらっとC#,C♯,C#(初心者用) Part55 pc12.2ch.net/test/read.cgi/tech/1265288563/1 関連スレ C#, C♯, C#相談室 Part55(実質56) pc12.2ch.net/test/read.cgi/tech/1260111240/1 VB.NET質問スレ(Part33) pc12.2ch.net/test/read.cgi/tech/1263738929/1 C++/CLI part3 pc12.2ch.net/test/read.cgi/tech/1206447234/1
- 75 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 23:58:27 ]
- >>33
それはただのフィールドの隠蔽化。カプセル化はもっと深い。
- 76 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 00:02:22 ]
- >>71
プロパティ、中身がシンプルなものは JIT 時にインライン化される。 プロパティにすることで、フィールドをpublicにするよりも変更に強くなる。
- 77 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 00:04:39 ]
- >>75
いやいや>>33の言うとおりでしょ。 (OOPの真髄が多態という見解には異論があるが) カプセル化なんてOOPよりずっと昔からある概念なんだけど。
- 78 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 00:06:54 ]
- インライン化されてもコピーが入るからまったくコストが無くなるわけじゃないよ
- 79 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 00:23:52 ]
- へえ
- 80 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 00:24:15 ]
- >>23
まあごく例外的な場合とか「フィールドは公開すべきでない」という精神論を別にすれば、 プロパティにする必要性が出た時点でプロパティにする、という方針でも 別に悪くはないと個人的には思う。別にたいした手間でもないし。 ただ、今時プロパティ書くのもフィールド書くのも手間はあまり違わないわけで、 そういう現状を前提にすると「なぜ<あえて>プロパティなのか」っていう疑問は あまり自明じゃなくなって来てるな。
- 81 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 00:31:26 ]
- >>78
コピーって何?
- 82 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 01:30:41 ]
- >>77
オブジェクト指向のこころを読めば世界が広がるよ。
- 83 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 03:44:00 ]
- クラスの内部から、フィールドには直接アクセスすることもプロパティが実装されていれば
プロパティからフィールドにアクセスすることもできますが、プロパティが 実装されている場合、積極的にプロパティを使ってフィールドにアクセスすべきですか? Javaのアクセッサ(getter/setter)では記述のコストが高くてやってられないのですが、 C#ではどうなんでしょうか?
- 84 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 03:47:22 ]
- 自分でテストコード書けばいいじゃねえか
- 85 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 04:05:28 ]
- >>84
速度だけの話じゃないです。 クラスの内部からフィールドへのアクセスもプロパティを通すことで、 カプセルとその他もろもろの恩恵を受けられると思ったんだけど、 そういった形でプロパティを使うってありですか?
- 86 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 04:08:28 ]
- 自分でテストコード書けばいいじゃねえか
- 87 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 04:12:48 ]
- いや、あんたに聞いてない
- 88 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 04:17:18 ]
- ママにでも聞けばいいじゃねえか
- 89 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 04:28:11 ]
- 論外さようなら
- 90 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 04:29:53 ]
- 二度と来るなよ
- 91 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 04:32:50 ]
- 日本語分かる?ちんぱん
- 92 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 06:14:19 ]
- webbrowser
<input type="image" onclick="hoge" name="homo"> GetAttribute("onclick")でonclickの値(hoge)が取得できないのですが、普通はできるのでしょうか? 値は"System.__ComObject"というのが返ってくるだけです 同じやり方でtypeの値はちゃんと取得できます
- 93 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 06:19:16 ]
- vc# 2005使い始めたんだけど、
デフォルトのインデントがタブじゃなくて、スペースなのね。 c#ではこれが流儀? これに慣れた方がいい? 行をBSで逆インデントする時に、 BSを連打しないといけないのが、苦痛。 Shift+tabは面倒。
- 94 名前:デフォルトの名無しさん [2010/03/04(木) 06:26:08 ]
- >>92
その周辺のコードは晒せる? >>93 設定で切替できなければタブとスペースの切替はできないってことだろ それにVC#の場合オートインデントなのでガシガシ打ってもどうにかなるだろ
- 95 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 06:30:13 ]
- トイレに行ってきます(´・ω・`)
- 96 名前:94 mailto:sage [2010/03/04(木) 06:31:20 ]
- どこでもいいので
{ int aaaa = 10; aaaa++; } を書いた上で //{ int aaaa = 10; aaaa++; //} という感じでネストをいじった上で 上記4行を一旦切り取って同じ位置に貼り付けてみると勝手にインデント調整してくれるよ
- 97 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 06:32:16 ]
- C#で生ソケットについて経験者いたら教えてください。
下記のコーディングで間違いとか、抜けとか、ありますか? Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Tcp); TCPヘッダ作成 IPヘッダ作成 ヘッダ連結 チェックサム int nBytes = socket.SendTo(sendbuf, sendbuf.Length, SocketFlags.None, endpoint); SendToメソッドの箇所でエラーが発生します エラーコード:10022 エラーメッセージ:無効な引数が提供されました 原因分かる方、教えてください。
- 98 名前:デフォルトの名無しさん [2010/03/04(木) 06:34:13 ]
- >>97
デバックでとまった際に引数みてみなよ
- 99 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 06:37:08 ]
- >>98
といいますと?
- 100 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 06:38:19 ]
- TCPヘッダ作成
IPヘッダ作成 ヘッダ連結 チェックサム あと可能な限りここも書きなよ 固有情報は適当に書き換えて
- 101 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 06:45:31 ]
- TCPヘッダ作成は下記の通りです。
/******************************************************************************** * TCPヘッダ取得 *******************************************************************************/ public byte[] getTcpHeader(Int16 selfport, Int16 destport) { TcpHeader header = new TcpHeader(); header.selfport = (UInt16)IPAddress.HostToNetworkOrder(selfport); header.destport = (UInt16)IPAddress.HostToNetworkOrder(destport); header.seq_num = 1; header.ack_num = 0; header.offset_and_reserved_and_flags = 5; // offset header.offset_and_reserved_and_flags <<= 6; // reserved header.offset_and_reserved_and_flags |= 0; header.offset_and_reserved_and_flags <<= 1; // URG header.offset_and_reserved_and_flags <<= 1; // ACK header.offset_and_reserved_and_flags <<= 1; // PSH header.offset_and_reserved_and_flags <<= 1; // RST header.offset_and_reserved_and_flags <<= 1; // SYN header.offset_and_reserved_and_flags |= 1; header.offset_and_reserved_and_flags <<= 1; // FIN header.window = (UInt16)IPAddress.HostToNetworkOrder((Int16)32767); header.checksum = 0; header.urgent_pointer = 0; return header.getBytes(); }
- 102 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 06:49:03 ]
- IPヘッダ作成は下記の通りです(パート1)
/******************************************************************************** * IPヘッダ取得 *******************************************************************************/ public byte[] getIpHeader(byte[] databuf, string selfAddress, string destAddress, byte protocol) { Ipv4Header header = new Ipv4Header(); header.version_and_length = 69; header.service_type = 0; if (protocol == 4) { header.packet_length = 20; } else { header.packet_length = 40; } Random rand = new Random(); header.identifier = (short)rand.Next(32767); header.flagment_offset = 0; header.ttl = 64; header.protocol_no = protocol; header.checksum = 0;
- 103 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 06:50:08 ]
- IPヘッダ作成は下記の通りです(パート2)
int startpoint = 0; int endpoint = selfAddress.IndexOf("."); header.self_ip1 = byte.Parse(selfAddress.Substring(startpoint, (endpoint-startpoint))); startpoint = endpoint + 1; endpoint = selfAddress.IndexOf(".", startpoint); header.self_ip2 = byte.Parse(selfAddress.Substring(startpoint, (endpoint - startpoint))); startpoint = endpoint + 1; endpoint = selfAddress.IndexOf(".", startpoint); header.self_ip3 = byte.Parse(selfAddress.Substring(startpoint, (endpoint - startpoint))); startpoint = endpoint + 1; endpoint = selfAddress.IndexOf(".", startpoint); header.self_ip4 = byte.Parse(selfAddress.Substring(startpoint, (selfAddress.Length - startpoint))); startpoint = 0; endpoint = destAddress.IndexOf("."); header.dest_ip1 = byte.Parse(destAddress.Substring(startpoint, (endpoint - startpoint))); startpoint = endpoint + 1; endpoint = destAddress.IndexOf(".", startpoint); header.dest_ip2 = byte.Parse(destAddress.Substring(startpoint, (endpoint - startpoint))); startpoint = endpoint + 1; endpoint = destAddress.IndexOf(".", startpoint); header.dest_ip3 = byte.Parse(destAddress.Substring(startpoint, (endpoint - startpoint))); startpoint = endpoint + 1; endpoint = destAddress.IndexOf(".", startpoint); header.dest_ip4 = byte.Parse(destAddress.Substring(startpoint, (selfAddress.Length - startpoint)));
- 104 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 06:52:03 ]
- IPヘッダ作成は下記の通りです(パート3)
if (protocol == 4) { header.checksum = this.calcCheckSum(header.getBytes()); } else { header.checksum = this.calcCheckSum(header.getBytes().Concat(databuf).ToArray()); } return header.getBytes(); }
- 105 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 06:53:41 ]
- チェックサム計算は下記の通りです。
/******************************************************************************** * チェックサム計算 *******************************************************************************/ public short calcCheckSum(byte[] buf) { Int32 checksum = 0; byte[] wrkbyte; if (buf.Length == 1) { checksum += buf[0]; } else if (buf.Length >= 2) { for (int i = 0; i < buf.Length; i += 2) { if ((i + 1) == buf.Length) { checksum += buf[i]; } else { wrkbyte = new byte[] { 0, 0 }; Array.Copy(buf, i, wrkbyte, 0, 2); checksum += Convert.ToInt32(BitConverter.ToInt16(wrkbyte, 0)); } } } checksum = (checksum >> 16) + (checksum & 0xFFFF); return (short)((~checksum) & 0xFFFF); }
- 106 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 07:32:22 ]
- 処理の流れは下記の通りです。
// Initialize a Socket of Type TCP socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Tcp); byte[] tcpheaderbuf = Common.getInstance().getTcpHeader(Int16.Parse(this.selfPort), Int16.Parse(this.destPort)); byte[] ipheaderbuf = Common.getInstance().getIpHeader(tcpheaderbuf, this.selfAddress, this.destAddress, 6); byte[] sendbuf = ipheaderbuf.Concat(tcpheaderbuf).ToArray(); // Send the Packet over the socket IPEndPoint ipendpoint = new IPEndPoint(IPAddress.Parse(this.destAddress), UInt16.Parse(this.destPort)); EndPoint endpoint = (ipendpoint); this.iStartTime = Environment.TickCount; socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, 1); int nBytes = socket.SendTo(sendbuf, sendbuf.Length, SocketFlags.None, endpoint); if (nBytes == -1) { return false; } return true;
- 107 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 07:33:42 ]
- 書き込み制限食らってました^^;
以上がソースですが、まだネットワーク系を勉強中なため、基本的なことが抜けてたらご指摘ください。
- 108 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 07:44:23 ]
- SocketType.Rawは使ったこと無いけどConnectしてないのが悪いみたいだな
変更後の例でもsocket.Connectをコメントにするとエラーになるし Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Tcp); TCPヘッダ作成 IPヘッダ作成 ヘッダ連結 チェックサム int nBytes = socket.SendTo(sendbuf, sendbuf.Length, SocketFlags.None, endpoint); ↓ Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); TCPヘッダ作成 IPヘッダ作成 ヘッダ連結 チェックサム socket.Connect(endpoint); //int nBytes = socket.SendTo(sendbuf, sendbuf.Length, SocketFlags.None, endpoint); //ソースみたら内部でoffset指定タイプを呼んでるだけだった int nBytes = socket.SendTo(sendbuf, 0,sendbuf.Length, SocketFlags.None, endpoint);
- 109 名前:デフォルトの名無しさん [2010/03/04(木) 07:46:10 ]
- EEじゃないのならMSからソースなどを入手して
自分のプログラムと一緒にトレースしてみた方がいいかもね
- 110 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 08:01:14 ]
- 2chに貼られても読む気がしねー
うpろだに丸々うpしる!
- 111 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 08:26:39 ]
- >>92
onclickのスクリプトコードそのものが欲しいのならOuterHtmlから切り出すくらいしかないはず コード手に入れて何したいのか知らんけど
- 112 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 08:37:02 ]
- 関係ないけど、offset_and_reserved_and_flagsはflagsなenumか定数にでもしとけ
- 113 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 15:08:35 ]
- >>111
そこにクリック後のURLの一部が書いてあって それを使えばわざわざクリックしてページを開かなくてもいいことに気づいたので 利用しようと思っていたのです OuterHtmlでいけました ありがとうございます
- 114 名前:デフォルトの名無しさん [2010/03/04(木) 16:36:28 ]
- デザイナーで配置したコントロールのNameを一括変換とかする方法はありますか?
プロパティ開いてNameをシコシコ書き換え?
- 115 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 17:08:36 ]
- もとの名前に何かルールがあるなら
フォーム名.csとフォーム名.Designer.csを正規表現置換 ないなら一括変換機能がもし仮にあったとしても無理だと思うよ
- 116 名前:デフォルトの名無しさん [2010/03/04(木) 17:11:25 ]
- >>115
レスありがとうございます。 やっぱり外部ツールとかで正規表現かけるかデザイナーのプロパティのところでNameを変更して デザイナーに関連項目の名称置換を行ってもらうとかになりますかね・・・
- 117 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 17:19:36 ]
- >>72なんですが
ドロップダウンで選択するものは全部すぐ閉じます あと、スニペット挿入時で出るウィンドウを一瞬で閉じます どなたかこの対処法ご存じないでしょうか?
- 118 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 17:48:49 ]
- どこかキーボード押しっぱなしになってない?
- 119 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 17:49:38 ]
- っマウスを買い換える
- 120 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 17:50:32 ]
- >>116
いや普通に>>115の2つのファイルをエディタで開いて VSの置換機能で置換するだけ ただしコントロールのアクセスレベルがprivateの場合に限る
- 121 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 19:47:48 ]
- >>118
特に何もしてないdす 久しぶり起動してそれまでにいくつか常駐ソフトやいろいろなソフトいれたので それが影響してるのかもしれないが、一応常駐しているのはすべて切ったけどだめだった コンテキストメニューはちゃんと開くんだけど、スニペットのウィンドウだけ違う方法で開いているのかな >>119 買ったばかりです・・ スニペット挿入はどういう操作で閉じるか教えていただけませんか?
- 122 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 22:36:27 ]
- C#4.0ではExcel2007みたいなリボンとか作れるようになるけど
どうせある程度慣れたらCtrl+Dみたいなキーボード操作しかしなくなるからでっかいボタン表示してもうざいだけだな・・・ リボンとか意味のない機能だ
- 123 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 22:40:58 ]
- Officeくらい機能盛りだくさんでないとあんまり使い道ないわねぇ、リボン。
- 124 名前:デフォルトの名無しさん [2010/03/04(木) 22:43:46 ]
- >>123
候補はある>2chブラウザ あとwindowsを搭載したタッチパネル系デバイスがイマイチ普及しないのは windowsの基本UIが小さすぎるのでペンなどの先が細い物じゃないと使いにくい というところがあったからなんだよね・・ タッチ前提になると変わると思うよ ただおofficeはそもそもタッチで使うことはないので意味ないだろうけどw エンターテイメント要素がある物には有効だよ
- 125 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 23:26:31 ]
- いやリボンはタッチパネルを想定してアイコンでかくなってるわけではないでしょ。
っていうか、汎用OS上のアプリに限れば、タッチパネルは指をポインティングデバイスに しようって発想じゃなくて、むしろマウスジェスチャー的な補助的操作の 延長線上のものでしかないと思うけど。 あと、リボンは、たとえカスタマイズ可能になっても作業領域や表示領域を 広くとりたい用途(例えばワード)には全然向かないね。
- 126 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 00:06:23 ]
- ケチくせーこと言うなよ。
じきにモニターの解像度が20000*10000とかになるって
- 127 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 00:18:52 ]
- 使う前は叩いてたけど、実際に触ってみたら結構快適で気に入った。
作業領域を広くしたい時は隠せばいいじゃん。
- 128 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 00:26:07 ]
- >>126
解像度上げてもフォントが読めるサイズでないと話にならないから モニターのインチが大きくならんと意味なかろう 俺のはすでに24なんだが、この数倍のモニターは部屋に置けねーよw
- 129 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 00:43:14 ]
- >>126
モニタは今くらいでいい HMDをそれくらいにしてくれ
- 130 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 01:20:10 ]
- >>129
ケチ。
- 131 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 01:20:32 ]
- >>128
文字を大きくすると意味ないしなぁ。 必然的にモニタサイズ大きくする必要があるわけで、27インチが俺の射程距離内 に入ってきますた
- 132 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 01:53:39 ]
- マルチモニタおいしいです
- 133 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 06:10:53 ]
- うん
- 134 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 07:46:16 ]
- リファラ設定していろいろダウンロードできるようになったけど
MMSのストリーミング動画の落とし方がわからない・・・
- 135 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 07:56:16 ]
- GAS使っとけ
- 136 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 09:42:24 ]
- GASでできるけど
タイトル変えたりするのが面倒だから 自分で作ろうと奮闘してるんだが むりぽww
- 137 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 10:26:24 ]
- //////////////////////////////////////////////////
public void button1_Click(object sender, EventArgs e) { int y = int.Parse(textBox1.Text); int x = int.Parse(textBox2.Text); int _y = 520 * x / y; textBox3.Text = Convert.ToString(_y); } /////////////////////////////////////////////////// Form1の中なんですけど、デバッグ中にボタンおしてもtextBox3に変化がない どうすればいいんでしょうか? よろしくお願いします
- 138 名前:デフォルトの名無しさん [2010/03/05(金) 10:29:33 ]
- イベントハンドラが設定されてないとか?
buttonのclickイベントでその関数呼ばれるようにしてある?
- 139 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 10:29:43 ]
- public……そのメソッド手で直接追加した?
- 140 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 10:54:57 ]
- >>138
ちょこっと探してきたら,これがあったので大丈夫ですかね? this.textBox3.TextChanged += new System.EventHandler(this.button1_Click); >>139 見る人が見れば分かるんですね 元々はprivateで書かれてて、それでいろいろと試行錯誤をしてみたんですよ まぁ、それの跡ですねw 一応直しておきました
- 141 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 10:58:21 ]
- >>140
ちげーよw ボタンが押されてもbutton1_Click(object sender, EventArgs e)これが呼ばれてないから 変わらないんだろうw
- 142 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 10:59:48 ]
- メソッドの名前は便宜的なもので、button1_Clickという名前でもbutton1のクリックとは関係ない
で、明らかにtextBox3のTextChangedのときに呼び出されるようにしてるじゃん
- 143 名前:デフォルトの名無しさん [2010/03/05(金) 11:00:51 ]
- windowsでプログラム組む上での基本的な仕組みを分かってないのは痛いな
- 144 名前:デフォルトの名無しさん [2010/03/05(金) 11:03:28 ]
- というか分かっててあえて分からないフリして釣ってるようにも見える
- 145 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 11:04:32 ]
- >>141,142
フォームのデザイナでもう一回メッソド作り直したら、 正常に動きました >>143 おっしゃるとおりだと思います 勉強し直します ありがとうございました
- 146 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 12:23:03 ]
- >>136
そういう時はGASを制御するアプリを作るんだ
- 147 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 13:27:58 ]
- >>146
ダウンロードするリストだけ自前で作って MMSをダウンロードするソフトに読み込ませてdlした方が早そうですね
- 148 名前:デフォルトの名無しさん [2010/03/05(金) 16:34:44 ]
- ねえ。。俺もそれで(>>137)迷ってたんだけど・・・
解決方法がわからん・・誰か教えて。。 Form1_ClosingとnotifyIcon1_DoubleClickを手で直接入力しちゃったんだけど・・ たしか、VB6だと、オブジェクトをフォームデザイナの左のコンボボックスで選択して右のコンボボックスで 適したイベントハンドラを選択できるようになってたんだけど・・ VC#2005Expressだとやり方わかりません。すみません、誰か教えてください。。
- 149 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 16:37:34 ]
- 自動プロパティをして、後でフィールド変数が欲しくなった場合
すべての変数を書き換える作業をしないとダメなんですか? public string Name{get;set;} public void hoge() { Name="hage"; ←こういうの全部 _name に書きかけなきゃならないの? } だったらやっぱり、最初からフィールド変数使った方が楽な気がするんだけど
- 150 名前:デフォルトの名無しさん [2010/03/05(金) 16:39:02 ]
- >>148
uproda.2ch-library.com/219724IPC/lib219724.png 雷マークがイベントハンドラの設定 右下の赤枠のマークを押すと画像の場合はFormのLoadイベントのイベントハンドラを IDEが候補をだしてくれる
- 151 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 16:41:24 ]
- >>149
別に内部だからってプロパティに代入しちゃダメな訳じゃないが?
- 152 名前:150 [2010/03/05(金) 16:44:24 ]
- まだイベントハンドラが無い場合は作りたいイベントのところでダブルクリックすれば
勝手に作ってくれる
- 153 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 16:50:33 ]
- 内部も外部もプロパティで制御するのか・・・その方が便利か
- 154 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 17:36:22 ]
- >>153
ちげーよw
- 155 名前:デフォルトの名無しさん [2010/03/05(金) 17:48:01 ]
- クラスについて教えてください。
(1)クラスを呼び出すとき、別スレッドにするには、どうしたらよいですか。 おなじ名前空間にあるクラスを呼び出しています。 クラス名 名前 = new クラス名(); 名前.メソッド名(); で呼び出すときに、スレッドにするにはどうしたらよいですか? (2)この処理って、終わったら、呼び出したクラスに関するいろいろはぜんぶ自動的にdisposeされるんですか? それとも、 名前.Dispose(); と処理する必要があるのですか? 以上2点、よろしくお願いします。
- 156 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 17:51:11 ]
- >>155
おれより賢そうだから>>149の質問ズバリ教えて
- 157 名前:デフォルトの名無しさん [2010/03/05(金) 17:55:03 ]
- >>156
いや、ぜんぜん賢くないし。 get/setなんて使ったことないです。 ごめんなさい。
- 158 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 17:56:54 ]
- >>155
スレッドとクラスって関係ないし Disposeなんて所詮そう言う名前のメソッドに過ぎないんだからusingもせずに勝手に呼ばれるとかないし
- 159 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 17:57:24 ]
- はじめから
>public string Name{get;set;} こんなのしなければいいだけ
- 160 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 17:57:46 ]
- >>149
Nameプロパティをリファクタリングで_nameに名前変更 _nameプロパティの宣言をフィールドの宣言に変更 Nameプロパティを設けてgetとsetを書く
- 161 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 18:06:35 ]
- >>159
・・・え?
- 162 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 18:08:02 ]
- ん?
- 163 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 18:15:43 ]
- >>160
いやいや、それだと外部からそのプロパティを参照しているところも 全部_nameになるじゃない・・・
- 164 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 18:16:54 ]
- >>161
プログラマなんだから英数字や記号は半角にしか変換できないようにIMEセッティングすべき
- 165 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 18:23:10 ]
- >>163
じゃあクラス内の文字列置換なんかですればいい
- 166 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 18:41:50 ]
- public class StreamDataSet
{ public string URL = ""; public string Title = ""; } List<StreamDataSet> SrcList=new List<StreamDataSet>(); StreamDataSet src=new StreamDataSet(); src="ww.google.ne.jp"; if("-同じURLが既に追加していなければ-") SrcList.Add(src); if文の条件式にどのように書けばいいか迷ってます この場合SrcListに同じURLがあるか探すにはForeachで ひとつひとつ照らし合わすしかないですか? List<string>だと.Findメソッドなどで簡単にできるけど オブジェクトだった場合のやり方がわかりません よろしくおねがいします
- 167 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 18:48:04 ]
- >>155
[イベント ベースの非同期パターンを使用したマルチスレッド プログラミング] ttp://msdn.microsoft.com/ja-jp/library/hkasytyf.aspx [.NET ThreadPool の実行順序を制御する] ttp://msdn.microsoft.com/ja-jp/magazine/dd419664.aspx この辺を読むといい。本気で作るなら前者なんだが、おそらく挫折するw 次点のThreadPoolを利用する方法が簡単で、後者はその応用編
- 168 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 18:56:50 ]
- >>166
一般には if (!SrcList.Any(x => x.URL == src)) でも効率が悪いのでIComparer<T>を実装してBinarySearchを使うのがいいと思う
- 169 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 19:05:10 ]
- >>168
srcは多分StreamDataSetだと思う その次の、フィッシングサイトみたいなURLのあるコンパイルエラーになる行が気になるけどw あと、効率考えるならDictionaryを使うことを検討した方がいいと思う
- 170 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 19:16:00 ]
- >>166のケース限定であればListじゃなくてDictionary使うな。
- 171 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 19:23:34 ]
- すいません。書き間違えてました。
× src="ww.google.ne.jp"; ○ src.URL="ww.google.co.jp"; ID付きで追加削除したりするならはじめからDictionaryにしておくべきでしたね 使い勝手がいいからList<>を使っていたけど、データ構造はもうちょっと慎重にすべきでした ありがとうございました
- 172 名前:デフォルトの名無しさん [2010/03/05(金) 21:01:03 ]
- >>158
? (2)は自動的にDispose()はされないってことですか? >>167 ありがとうございます。 挫折しました。 まだぜんぜん読めるレベルでありませんでした。
- 173 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 21:07:54 ]
- されるかもしれないしされないかもしれない
それはクラスの実装次第 後処理が必ず必要になるようなクラスではGCされるときに自動的に後処理が行われるように 作ってあるはずだけど必ずしもそうだともかぎらない でもそれはクラスを書いた奴が悪いのでそこまで考えても意味がない
- 174 名前:148 mailto:sage [2010/03/05(金) 21:25:13 ]
- >>150さん
どうもありがとうございます。その方法でできました。。 助かった〜。ひさしぶりにプログラムやってみまして、 ウィンドウ右上の×印クリックしたときの挙動が違ったので 困っていました。 ちょっと所要で出かけていたので、お礼が遅くなりました。すみませんでした。 ありがとうございました。
- 175 名前:148 mailto:sage [2010/03/05(金) 21:28:25 ]
- 画像までキャプチャーしてアップしてくださり、どうもありがとうございました。
|

|