ふらっとC#,C♯,C#(初心者用) Part90
1 :
デフォルトの名無しさん :
2012/04/14(土) 14:21:21.83
Streamを介すると1バイトずつしか読めないって何言ってるのアレは
ジョークだろ まともに相手するなよ
基本クラスにキャストすると基本クラスのメソッドが呼ばれるとか思ってんじゃねえかなー。
基本クラスの実装つってもabstractなのはReadByteじゃなくてReadの方だからなあ Streamはバッファでまとめて読み書きするのが基本であり普通
Streamにもbyte[]にコピーするメソッドがあるのね でそれをunsafeでint*にキャストかなんかして読むわけ? GCで移動されないようにロックして? ちょっと考えられませんねえ 実質使えないに等しいでしょう
っ BitConverter
9 :
デフォルトの名無しさん :2012/04/14(土) 15:04:36.65
>>7 気になるならソース公開されてるんだし中身みてこいよw
内部の細かい実装はどうでもよくてHDDで読み書きするよりは高速だからってことで使う程度だし
今時1バイトアクセスが遅いとかいうのはアセンブラでしこしこ書いてたおっさんくらいだろう
BinaryReader BitConverter Buffer
どうせまた「やっぱ慇懃に煽るとたくさん釣れるわ」みたいな奴だろ 触るな触るな
12 :
デフォルトの名無しさん :2012/04/14(土) 15:09:26.28
乙
触ると秋が〜
>Streamにもbyte[]にコピーするメソッドがあるのね なんてレベルに語られても…って感じだよね お前いままで何を前提に喋っていたんだと
unsafeでキャスト可能ってことは内部的には同じものとして扱えるってことでして パフォーマンスが必要ならそういうのを利用した設計にしますし、BinaryReaderのような奴は実際そうなってます
いやBinaryReaderは普通にビット演算で配列の要素を繋げてるよ エンディアンの問題があるからC/C++でも普通そうする
>>16 俺みたいなヘタレなプログラマが自前で実装するより速いわ。
それに、今の実装がそうなんであってブレークスルーがあった時にはお任せしてあったほうがメリット有るぜ。
19 :
デフォルトの名無しさん :2012/04/14(土) 15:27:30.34
Graphics.DrawImageで描画速度上げるコツおしえろ
どんな糞コードなんだよ
じゃあ無理だな
拡大縮小しなければ普通にそこそこ速いんじゃないか
糞コードも晒せないこんなやつじゃあポイズン
どう頑張ってもGPUアクセラレーションの足元にも及ばないから 速度が重要なら素直にDirect3DかWPF
ここの皆さんだけに教えますけど、 描画速度上げるコツは描画しないことです
必要な部分だけ再描画するとか古典的なテクニックはいろいろあるけど GPUパワーでピクセルシェーダで派手なエフェクト付けながら毎フレーム全書き換えの方が 圧倒的に速い事実…
1枚の画像の輝度を変更しようとしたらバイト配列をループで回して 各ドットに対してRGBをそれぞれ取得してHSVに変換して値変更してRGBに戻して格納とかアホくさい GPUに任せれば動画でも再生中に変更できるというのに
アナログだけどわかりやすい DirextXは難しい
DIBの遅さはどうにもならんな
RGBをHSVに変換するのって.netのframeworkにあったっけ?自作メソッド書かなきゃ駄目?
計算ってそんなに大変だっけ?
34 :
デフォルトの名無しさん :2012/04/14(土) 19:55:26.73
35 :
デフォルトの名無しさん :2012/04/14(土) 22:16:00.10
DataGridViewのセルに入力された数値の計算を行いたいのですが よくわかりません。 dataGridView[0,0].Value + dataGridView[0,1].Valueなどではできませんし ToIntでint型にしようと思ってもできません。 どのようにすれば計算できますでしょうか?
int asdf = Convert.ToInt32(dataGridView1[0, 0].Value);
37 :
デフォルトの名無しさん :2012/04/14(土) 22:38:12.09
>>36 このようにすると
int asdf = Convert.ToInt32(dataGridView1[0, 2].Value);
としたところが
[警告]ArgumentOutOfRangeException
インデックスが範囲を超えています。負でない値で、コレクションのサイズよりも小さくなければなりません。
パラメーター名: index
デバック時にセルに入力した値は10です。
コード晒せよ
39 :
デフォルトの名無しさん :2012/04/14(土) 22:50:59.87
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { int asdf = Convert.ToInt32(dataGridView1[0, 2].Value); int asbf = Convert.ToInt32(dataGridView1[0, 3].Value); } } } 関係ない部分、まだ途中の部分もありますがこんな感じです。 data1とdata2の数値を計算したいのですが。 使っているのはMicrosoft Visual C# 2010 Express です
で、セルににはなんて入力してるの?
質問者の心得
・回答者はあなたの席の隣に居る会社の同僚や先輩、学校の先生や同級生ではありません。
どういう作業を行ってるかわかりませんのでなるべく出せる情報は出しましょう。
・情報を出すと言っても、長々と日本語で解説するのも問題外です。なるべくソースコードを出しましょう。部分的ではなくなるべく全体
・「ご教授ください」とかそんな意味不明な日本語で媚び諂う必要はありません。回答者が怒ってるのは情報が少ないからです。
・場合によってはOSなどに依存することもあるのでその場合は周辺情報も出しましょう。
・ソースコードを出す場合は
>>2 のサイトを使いましょう。
・
>>94 のような場合はあなたが思ってるイメージを質問者は知ることができません。
脳内を覗き見るエスパーは居ませんので私はこういうイメージにしたいけど実際はこうですと
理想と現実を比較できる画像も提供しましょう
・あとメニューというカタカナではなくコントロール名で質問するほうが早いです
・C#は次の物が開発可能です。ターゲットを明記しましょう。WinForm WPF SilverLight ASP.NET ASP.NET MVC
質問文に手を抜くような奴がそんなの読むかよ。 っていうかコピペ馬鹿もアホな質問者と同じ程度には鬱陶しい
43 :
デフォルトの名無しさん :2012/04/14(土) 22:59:49.13
>>40 [0,2][0,3]は実行時に自分で入力してます。10とか適当な数字です。
なのではじめからセルに数字が入ってるわけではありません。
いま考えてるのは会計ができるようなプログラムで
収入、支出を入力しそれを計算して収支を出したいんです。
>>41 わざわざありがとうございます。
以後気をつけます。
>>42 だってヒアリングしないと間抜け行為してるのかどうかの切り分けができないだものw
コピペ貼りたくなるよ
RowとColumnのインデックスが逆だったりして
>>46 スレチじゃないんだよなw
たぶんオチとしてはデータを入れたつもりなんだけど
インデックスを勘違いして設定してるのでデータが入ってないところから
データをひっぱろうとして
>>37 なんだと思うよ
でもデータを入力してるであろう部分は
>>39 にはないよね
情報を全部だしてくれればこんな憶測はしなくて済むのに
いちいち確認しないといけない糞さだよね
>>41 にまとめられてる通り
こちらで予測してコード書いてみた
インデックスを勘違いしていると想定してデータが入ってないところから
>>39 のような計算しようとするとデータねーよって怒られる
データが入ってるところであれば
>>39 のような計算ができる
dataGridView1[
ここまで入力してみてポップアップにどう表示されるか見てみ
順番はColumn,Rowだから
>>47 コード見なくても大体見当つくだろ
それにあのコピペはテンプレ違反
答えられないなら答えるな
ここはどんな質問にでも答えられる奴がいればいい
それ以外は相談室にいけ
51 :
デフォルトの名無しさん :2012/04/14(土) 23:34:26.23
>>48 データが公開されてないのでその予想はなかったw
0始まりではなく1始まりで勘違いしてるパターンか・・・
もうね
>>41 を守れよ
なんで横に居ないアホのためにあれこれエスパーしないといけないだ
52 :
デフォルトの名無しさん :2012/04/14(土) 23:35:13.94
>>50 検討つきませんってw
アホがやることなんてw
どういうデータを設定してるかがわからないかぎりw
はさみうちだ!
MVC ってなんですか?
C#やってみたいんだけど VCじゃないとダメ? monoとか言うやつあるらしいんだがこれって実用に耐える?? できればGTKあたりのGUIは動いて欲しい どないでしょ?
>>54 アホじゃないからこんなのではまらないしうっかりミスってしまっても
確認すればいいだけなので質問すらしませんからw
>>39 を見る限りでは問題ないので晒されてないところで何かやらかしてるか
勘違いさんなのでこの辺は隣にいるわけじゃないのでヒアリングしないと
把握できませんがな
エスパーじゃないし
Form1.Designer.csを公開してもらえば何をやらかしてるかわかるよ
元くだすれなんだからエスパーレベルを常駐させろよ
>>57 あなたのような未熟者はこのスレに必要としません
相談室へどうぞ
で、できたの?
相談室で好きなだけ暴れろよ あっちはもう過疎ってて誰も書き込んでないだろ こっちまできて暇つぶしで荒らしてるんじゃないよ
>>51 嫌なら答えなければいい
誰もお前に強制させていないんだがな
それと初心者をアホ呼ばわりする神経も理解できない
初心者なんだから知らなくて当然
無知であることがアホだと思うなら
お前はMSDNをすべてを暗記しているのか?
していなければお前もアホ
大手で働いている人間からしたらお前らなんてみんなアホ 初心者レベルを煽る程度の実力しかお前らにはないってことを 露呈しているだけにすぎない お前が世間から無能呼ばわりされているからって 初心者を煽って発散するなよ虫けら
すまん 熱くなってる所申し訳ないが 俺の質問にレスくれよ てかみんな結構熱いのなw
虫けら煽ってるレベルと言うのも高が知れてると思うのですが 藁葺きでカエル突いてる子供レベル
67 :
デフォルトの名無しさん :2012/04/15(日) 00:02:58.40
その空白に何か意味はございますか?
類は友を呼ぶ
70 :
デフォルトの名無しさん :2012/04/15(日) 00:06:24.58
>>65 datagridviewの人なら、dataGridView1[0.2]は3行目の1列目を示すが、縦横勘違いしていないか?
wwすまない俺は
>>56 だ
やってみたいんだよC#を
俺は熱くなってる人たちが好きだよ
72 :
デフォルトの名無しさん :2012/04/15(日) 00:09:40.48
Streamの無駄が多いしC言語がオススメ
>>72 わかったやってみるよw
ありがとう
俺も仲間になってはよ罵られたいよ
ほどほどに熱く住み着いててくださいw
便乗です。 Int32 data = Convert.ToInt32(dataGridView1.Rows[0].Cells[0].Value); これをBOX化解除したい時、Convert.ToInt32(使う以外の方法を教えてください。 Convert.ToInt32のヘルプ見ると 「戻り値は、value に対して Int32.Parse メソッドを呼び出した結果得られる値です。」 だそうですがIFormatProvider の指定の仕方が解らないや あとtryparseとかも使えたりするの? (int)dataGridView1はOKなのかな?と思ったらNGでした・・・
intに代入された段階でどういう状態であれボックス化は解除されてるはずなんだけど (int)でキャストが通らないのはテキストだからでしょ
WPFなどのバインディングのように双方向とかないんだっけ?
>>75 int result = Convert.ToInt32("123")
int result = int.Parse("123");
int result;
int.TryParse("123",out result))
こういったやり方がある
全部文字列を数値に直してるだけでBOX化解除とかじゃない
ちなみにintとInt32は同じもの
普通にintでキャストしたらいけたが だから問題の切り分けができてないだって
結局のところForm1.Designer.csを見ればわかる話
82 :
75 :2012/04/15(日) 02:06:39.69
試しに private void button1_Click(object sender, EventArgs e){ this.Text = ((int)this.dataGridView1[1, 0].Value *(int)this.dataGridView1[2, 0].Value).ToString(); } 0,1 10,11 20,21 と3行3列ぶん入力してみました。 InvalidCastExceptionはハンドルされませんでした。 指定されたキャストは有効ではありません
だからさー dataGridviewのColumnなどの枠を作る部分のコード出せって あとそこへ情報突っ込んでるコード その辺の違いなどで影響するのかもよ あと.netのバージョンとかさ 情報が部分的すぎなんだよ
84 :
75 :2012/04/15(日) 02:10:39.70
入れた値は 0,1,2 10,11,12 20,21,22 です。はい、馬鹿です。思考力低下の真っ只中です。すいません。なんでだろう?
85 :
75 :2012/04/15(日) 02:18:14.24
C#2010EE .net4Clientprofile
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication1{
public partial class Form1 : Form {
public Form1() { InitializeComponent(); }
private void button1_Click(object sender, EventArgs e){
this.Text = ((int)this.dataGridView1[1, 0].Value *(int)this.dataGridView1[2, 0].Value).ToString();}}}
Form1.Designer.csは
http://ideone.com/QkB0O データグリッド右クリック。列を追加、何も変えずOKを3回繰り返しました。
86 :
デフォルトの名無しさん :2012/04/15(日) 02:21:28.03
>>85 最初に教わった
>>35 さんのレスをもう一度試してみような
今は(int)this.dataGridView1[1, 0].Valueのキャストが上手く行っていない
(int)は元のオブジェクトが数値データじゃないと駄目だからね
string a ="1.1";
int b =(int)a; でも同じエラーとなります
>>83 いい加減ウザイ、的外れだしw
87 :
デフォルトの名無しさん :2012/04/15(日) 02:27:48.54
DatatableでCompute使えば終わりじゃないの?
Convert.ToInt32(dataGridView1.Rows[0].Cells[0].Value);//行と列よく間違えるので普段こっちで書いてます もちろんConvert.ToInt32使えばうまくいきます。これ以外だとどう書くのかなという問題です。 Convert.ToInt32は Int32.Parse メソッドを呼び出したものだというから Int32.Parse(dataGridView1.Rows[0].Cells[0].Value)が通るかな?と試すも オブジェクトをstringに変換できないので、(int)でキャストしてみて行き詰りました。 Parse(String, NumberStyles, IFormatProvider)を読んで更に書式に関するカルチャ固有の情報とかちんぷんかんぷん
90 :
デフォルトの名無しさん :2012/04/15(日) 02:40:33.42
なあ的はずれっていうのならなんで俺のところで動いて他所で動かないんだよ なあ説明しろよ
>>83 コードも読めないのかお前
どこまでも無能だな
92 :
デフォルトの名無しさん :2012/04/15(日) 02:47:18.48
>>90 なんでコードで入れて手で入れてみないんだよ?!型が違うのが解らんのかい
96 :
デフォルトの名無しさん :2012/04/15(日) 02:55:49.22
>>88 俺も似たような処で悩んだこと有ったが、結論は「データバインドしてセル毎型を持てるようにして使わないと使い物にならん」だったw
>>94 型が違うはわかっとるわい
入れた数値
とはあるがデザイナーで指定したのか実行時に手で入力したのかは書いてない
説明不足だって
99 :
デフォルトの名無しさん :2012/04/15(日) 03:04:50.96
>>98 43 名前:デフォルトの名無しさん 投稿日:2012/04/14(土) 22:59:49.13 0回目
>>40 [0,2][0,3]は実行時に自分で入力してます。10とか適当な数字です。
なのではじめからセルに数字が入ってるわけではありません。
いま考えてるのは会計ができるようなプログラムで
収入、支出を入力しそれを計算して収支を出したいんです。
>>99 入力し
とはあるが
手入力
とは書いてない
プログラム的に流し込みもできるのに
思い込みで意思疎通できて当たり前みたいなのはやめろって
>>41 の通り所詮は文字でしかやり取りできないんだし
近くに居れば空気も読めるけど
それと日本語はその場で空気読むのも含めて喋ってることが多いので
掲示板で文字だけにすると情報漏れすることを理解した方がいいよ
糖質じゃなく分析するとなると情報を集めるのが普通 空気を読むのに慣れすぎて日本人はそういうところを嫌うよね
>>35 さんと、
>>75 は別ですよ。
35さんの質問があって、その上で75が便乗してますですよ。
あと、無駄な改行やめれ。 行間も空気も読め。以後放置で。
ヒアリングの結果ご所望の答えは出したろ 情報をちゃんとだしてればもっと早かったんだよ
コミュ障だからプログラマになった奴らが 人を教育できるわけがない 一生こき使われるタイプだなw
まず初心者は構文の切り分けとステップ実行を覚えるべき Hello worldの次ぐらいに重要 int asdf = Convert.ToInt32(dataGridView1[0, 2].Value); なら DataGridViewCell cell = dataGridView1[0, 2]; object obj = cell.Value; int asdf = Convert.ToInt32(obj); とわけてブレークポイント置いてステップ実行。どの部分が悪いのか調べる
わかった。90のオツムが悪い
無断欠勤して電話シカトでも翌日堂々と出てくるしな 欠勤理由はFAXで送りました、届いて無いのはそっちのFAXが悪いからと真顔で言う 電話しろと注意すればよそ見しながらハイハイ ボーッとしてるから仕事しろと言えば頭の中でやってますとか。中国人は真面目に働くのに 10人が10それ。当然全員クビにして以後韓国人は採らないと決まった
韓国人は知らないが、中国人は最悪だぞ 仕事は雑だし、飯食わせないと仕事しないし 声でかいし、言うこと聞かない
日本のテレビの特徴: ・上にタイトルと説明が書かれている ・下に字幕がある ・四隅のどこかの枠でスタジオの芸能人の様子 ・スタジオに数〜数十人の芸能人が鎮座している、その大半が一言も喋らない ・韓国の人間・情報が頻繁に登場する ・挿入曲は45秒くらい ・ヘェー、エェー、美味しそう〜、スゴーイという声がよく聞こえる ・SE丸出しの笑い声や拍手 ・この後衝撃映像が!→CM数回引っ張る→予告映像に毛の生えた程度 ・CMの後もまだまだ続きます→小トーク→次回予告→小トーク→終了 ・CM明けに同じ映像をリピート再生する ・半端な時間で始まる・終わる
リストビューとアイテムから とあるグループに入ってるものだけ消すにはどうすればいい?
ループなりなんなり回して ListViewItem.Groupプロパティが該当グループと一致したら削除したらいいだろ
しょぼっ
日曜昼間のマは 月曜日に備えて PCに近付かない
試験受けに来てるから触りたくてもさわれませんぬ
今日はjitecの日か
株式会社 共立総合研究所プレス発表 「韓流消費に関するアンケート」結果
http://www.okb-kri.jp/_userdata/pdf/press/20120305_shufu_hanryu.pdf ≪要約≫
主婦の間に韓流ブームによる韓国製製品の購入意識に変化は確認できず。
韓流好きのきっかけとしては依然“ヨンさま”強し。
1.韓流好きはわずか 11.0%。
・自分自身を「韓流好きと思うか」との質問に対し、「韓流好きと思う」は 11.0%、「どち
らかと言えば韓流好きと思う」が 17.1%、「韓流好きとは思わない」は 71.9%。
・年齢別に見ると「韓流好きと思う」、「どちらかと言えば韓流好きと思う」を合わせた回
答率は 50 歳代が最も高く(35.9%)、20 歳代が最も低い(16.3%)。
2.韓流好きのきっかけは依然“ヨンさま”強し。
・「韓流」に興味を持ったきっかけとしては、約4割が「冬のソナタ」を挙げている。
3.韓流ブームにより韓国製の製品購入意識が変わった主婦は 15.2%。
・「韓流ブームによって、韓国製の製品購入意識が変わったか」と尋ねたところ、「変わっ
た」の回答率は 15.2%、「変わらない」が 84.8%であった。
・商品別では、韓国製の「衣料品」、「食料品」、「テレビ」、「携帯電話」、「自動車」など9
商品のうち、購入することに最も抵抗がない商品は「衣料品」であった。
主婦の間に韓流ブームによる韓国製製品の購入意識に変化は確認できず。
K-POP の台頭、食品、コスメをはじめとする韓国製商品ブームのマスコミでの取り上げ方、新聞の
テレビ欄における韓国ドラマの占有状況からかなりの盛り上がりを予想したが、結果は予想を下回るものであった。
20 歳代の回答者が 7.1%と若年層のウェイトが低かったことによる影響も考えられるが、今回の結
果からは、この地方の主婦の間に「韓流ブーム」といった“熱”を確認することはできなかった。
ネトウヨきもっ、まで読んだ。
行列ってなんで統一してくれないんだろう? DataGridView1[3,0]に対応するのは エクセルVBAでのセル位置はCells(1,4)ですと?むきぃ
ゼロ始まりが理解できる人と出来ない人がどれだけいるか考えると 仕方ないかと ただColumnとRowが逆なのは・・・
いやいや1ベースなのはともかく、[行, 列]なのはむしろ自然。
>いやいや1ベースなのはともかく、[行, 列]なのはむしろ自然。 …
>>88 Int32.TryParse(dataGridView1.Rows[0].Cells[0].Value.ToString())
こうかな?
124 :
デフォルトの名無しさん :2012/04/16(月) 02:04:48.61
座標だとx,yつまり横縦が多いけど配列などで考えると縦横じゃね?
dataGridViewのことはよく知らんけどValueの中身がstringだからintにキャストできないんでしょ 見た感じValueTypeにtypeof(int)を入れないとintにならないんじゃないの なんか随分たってるのにまともな回答がないように見える
列の追加編集ダイアログにValueType欄を入れなかったMSがそもそも悪いんだって
127 :
デフォルトの名無しさん :2012/04/16(月) 02:17:24.52
>>125 手入力すると数字を入力したつもりでもstring扱いで入ってるってだけ
だからValueTypeでカラムごとに動作を決めてあげればいいだけ
そうすれば所望の型で入ってるんだし
MenuStripとToolStripに同じ機能のアイテムを置くことは多いと思いますが、 同じ機能のアイテムを同時に有効/無効にしたり、チェックをON/OFFする 機能はないのでしょうか。 MFCやWTLではIDが同じアイテムは自動的にまとめて扱えるので、 同じような機能があるとありがたいのですが。
>MFCやWTLではIDが同じアイテムは自動的にまとめて扱えるので、 こっちってサンプルソースとかどこかにない?
無ければ作れば良いだけのこと。
とりあえずこんなのを作ってみました。 private void ToolStripItemAction(string name, Action<ToolStripItem> action) { var strips = new[] { menuStrip, toolStrip }; var prefixes = new[] { "mi", "btn" }; Action<ToolStripItemCollection, string> subfunc = null; subfunc = (items, prefix) => { foreach (ToolStripItem item in items) { if (item.Name.StartsWith(prefix) && item.Name.Substring(prefix.Length) == name) { action(item); return; } if (item is ToolStripDropDownItem) subfunc((item as ToolStripDropDownItem).DropDownItems, prefix); } }; for (int i = 0; i < strips.Length; ++i) subfunc(strips[i].Items, prefixes[i]); } こんなふうに呼び出すと、miUndo というメニューアイテムと btnUndo というボタンを無効にします。 ToolStripItemAction("Undo", x => x.Enabled = false); でももっと洗練されたやり方がありそうなもの・・・
ToolStripMenuItemのEnabledChangedイベントとCheckedChangedイベントで 関連するアイテムのプロパティも変更するようにしとけばよくね? そういうイベントを自動的に設定するメソッドを作ればいい。
普通グループ化の機能があるだろ
後は自分でグループ化するクラスでも作っておくとか
でForm_Loadイベントあたりでそのクラスを使ってグループ分けしておくとか
内部は単純にList<T>なんだけどさw
あとは
>>136 のようにControl.Nameをキー代わりに使うとか
MessageBox なんだけど なんでこいつは親フォーム指定しても画面の真ん中に現れるの?
Windowsの仕様
専用のフォーム作って自分で場所を指定してあげるとかすればいいんじゃない
143 :
デフォルトの名無しさん :2012/04/16(月) 07:10:58.66
MessageBoxの機能は何だか酷く中途半端に感じるんだよなあ。 CategoryAttributeとかもそうなんだけど、多言語対応を謳ってる割に、 そういうところの実装がいまいち煮え切らん。結局英語以外の文化圏()ってぇ態度なんかなあ。
ヘルプって一々インターネットを参照するんですが、 自分のPCにインストールし、そこを参照するようにできないんですか?
VS2010の話? できるじゃんかよ
どうやるとできるのかを聞いているんですが・・・ みなまでいわないと分かりませんか?
ひとつのクラスで300行もあるようなのってどうおもいます? もっと機能を分割すればいいのに・・・
今作ってるのは機能別に分割しても1つのクラスで1万行がいくつかあるな まあ分けたほうがやりやすいなら分ければいいんじゃね ただ同じような機能なのに長いからという理由だけで分割するのはやめたほうがいい あとregion使ってないなら使えるようになったほうが管理能力あがる
リージョンつかうやつは素人。 とまでは言わないがやたら細かくつかうやつはアホ。 邪魔なだけ。
ユーザ名が空でパスワードは設定されているWebサーバ(ルータ)へ
アクセスするプログラムを作成していますが、
400が帰ってきてしまいアクセスできません。
もし実装方法をぎ存知のかたがいらっしゃればご教授をお願いいたします。
--- ソースここから ---
wc.Credentials = new System.Net.NetworkCredential("", "pass");
wc.DownloadFile(
"
http://192.168.0.1/log.txt ",
"log.txt");
wc.Dispose();
--- ソースここまで ---
なお、以下の2パターンでは正常動作を確認しました。
+ 認証がないページ
+ Basic認証でユーザ名とパスワードが設定されているページ
cdekake
>>136 ToolStripItemはControlじゃない(ウィンドウハンドルも持ってない)から
普通のボタンと同じようには探せないのよね。
>>151 失礼しました。
抜粋ではなく全てのソースは以下のものになります。
--- ソースここから ---
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
namespace get
{
class Program
{
static int Main(string[] args)
{
WebClient wc = new WebClient();
wc.Credentials = new System.Net.NetworkCredential("", pass");
wc.DownloadFile(
"
http://192.168.0.1/log.txt ",
"log.txt");
wc.Dispose();
return 0;
}
}
}
--- ソースここまで ---
accdbにGUIを付けて操作するアプリを作ってます。 Form1にBindingsourceでdatasetに接続してデータを入れているわけですが、訳あって、一部のルーチンを 別のクラスファイルとして分離しました。 すると、これまでthis.dataset.maintable.ImportRow(dr)みたいな形で記述してた部分が機能しなくなりまし た。Form1はこれまで通り動きます。 別のクラスファイルからこのdatasetにアクセスするためにはどうしたら良いでしょうか?お願いいたします。
どうしたら良いでしょうって あんたアクセス修飾子やインスタンスの概念くらい分かって聞いてるの?
ひとつのメソッドで300行もあるようなのってどうおもいます? もっと機能を分割すればいいのに・・・
>>159 何のメソッドかもわからないのに答えようがない。
分割するべきかしないべきかは、内容による。
>>159 俺は一つのメソッドは一画面(40行くらい)に納まるようにできるだけ機能を分割してる
機能を分割できないか分割すべきではない場合は何百行になろうと無理に分割はしない
>>158 キーワード教えてやってんだから十分優しいだろバァカ
>>160 ですよねー
>>161 機能を分割できないか分割すべきではない場合ってどんなふうに判断してるの?
>>164 そんなん一言で言えないよw
例えば、特定のHTMLを作るメソッドで、リンクデータがあればaタグ付けるが
なければaタグは付けないという複数行のコードが含まれてる場合には、その
コードをget_a_tag(content, href)とかのメソッドに分割して使うとか
もうこれ以上無理って思えるまで分割するべき
複数人で再利用しながら開発して、いつの日か、 同じような機能を実装することを夢見て、そのときに楽できるように仕込んでおくという思考で開発する。 分割する必要性が感じられなくても、分割可能なように作っておく。 必要なときに切り離す。
メソッド名が一言で何をしてるか表せるようになるまで分割すればいいんだと思うよ 条件をチェックして満たせばAをして満たさなければBをするっていうメソッドがあったとしたら 長すぎて何をしているかわからないメソッド名になってしまうので if(条件()) A(); else B(); の3つに分割すると分かりやすくなる たとえばAが飯を食うっていうメソッドだったら if(金が無い()){ 牛丼を食う(); } else if(金が有り余っている()){ フランス料理を食う(); } ... といった感じで抽象概念を徐々に具体的にしていって最終的に実行可能になるまで具体化すればいい
>>169 は
デザイナー上からToolStripをD&Dして
ToolStripButton ToolStripButton ToolStripSeparator ToolStripLabel ToolStripLabel
と設置してある
171 :
主 :2012/04/16(月) 16:53:05.93
>>159 例として、減価償却を計算1月づつレコードを生成するようなプログラムの場合
減価償却費といっても、4種類の方法がある。
基本の計算して、レコードを生成部分はメインルーチンとなるが、ここに4種類を入れるのは
アレなわけだ。ということで、4つはそれぞれ別のルーチンに分割するのが適切。
しかし、減価償却費というのは、残存価額が終わった後、残り1円になるまで償却すること
ができるので、この部分をそれぞれ4つのルーチンに書くのは勿体無い。ということで、これを
分割して独立させる。
要するに全く同じか、ちょっとしたパラメータが違う程度のもので殆ど同じルーチンの場合、
重複して書くのを無くす為に分割するというわけさ。しかし、それが他で使うこともないという
タイプで連続するものであるならば、分割の必要性はない。
172 :
主 :2012/04/16(月) 16:54:29.82
>>156 フォームにdatasetコントロールを配置。Form1と同じものを指定すれば、共有できる。
1クラス300行が多いとは思えないんですが・・・
1クラス100行以内1メソッドは30行以内は死守するなぁ
175 :
主 :2012/04/16(月) 17:29:01.51
>>173 これって、コメント行とか抜かしての話でしょ?
ゲームとかならどうか?とか、用途にもよるでしょ。長いなって感じるのは
ただ長いってだけで分割するのも不合理な話やで。
WinFormでもデザイナーやイベント含めて300行は死守なの?
partialで分割するんだろw
179 :
デフォルトの名無しさん :2012/04/16(月) 17:58:28.36
つうか行制限ってクラスじゃなくてメソッドの長さとかだよな クラスで少なくするべきなのはパブリックのメソッドとかプロバティーの数じゃないの?
180 :
133 :2012/04/16(月) 17:59:07.26
動けばいい
>>180 それって動的に調べて状態変えるんだろ
起動時にグループ化しておいて実行時にはわざわざそんなことしない方がいいんじゃね?
行数にこだわりすぎて全て1行で書き出す奴
>>166 素人プログラマだけどそうしてる
いままで作ったメソッドは1メソッド10行以内と10〜20行がほとんど、40行超えるメソッドはわずかだな
186 :
133 :2012/04/16(月) 18:37:38.41
>>183 起動時(というか)フォーム生成時に1回やるだけ。
なるほど、みんないろいろ工夫してるんだなあ
>>165 なるほど、判例ありがとう
>>171 なるほど、スレ主さんありがとう
○ ● どっちが黒丸?
どっちかが黒丸でどっちかが白丸だよ
>>188 俺的には背景色、文字色に関わらず○が白丸で●が黒丸
でも、背景色が黒で文字色が白だと他の人は逆に考えるかもなw
○がただの丸で●が塗りつぶし丸と呼んだほうが誤解がないかもな
待てよ C#にどう関係があるんだ?
192 :
デフォルトの名無しさん :2012/04/16(月) 19:57:51.86
●# or○#開発について
メソッド10行なんてありえないな 多くても5行 それ以上必要なのは設計がおかしい
いくらなんでもそれはありえない。 その程度のプログラムしか組んだことがないのか?
5行じゃ動的SQL書けないオワタ
全てライブラリにおんぶに抱っこなら10行もあるかもな ロジック実装したら終わる
if( ... ){ } のスタイルと if( .. ) { ... } の人とで違うしな
三項演算子使いまくりで1行に収めようぜ
if文書いている時点で、もう問題外って感じっす
んだんだ
そういうクソみたいなネタ話はやめろや低能
確かに、ネタを真に受けるのとはタイプの違うクソさだね
ifは投機実行で遅くなる
だったら分岐処理したいときにどう書けば良いんだ?
ポリモーフィズムで無理やり
行数を減らすため メソッド名は1文字 a();b();c();d(); なんてどうよ セキュリティゼロのC#には難読化の意味でもいいんじゃね
WebBrowserクラスでリンクがクリックされたときNavigatorメソッドが呼ばれるみたいなんですが Cookieが設定できないため、ログイン情報が消えてしまいます どうにかしてCookieを保持して呼び出したいんですが、リンクがクリックされたときに他のメソッドを呼び出すようにできないでしょうか?
210 :
デフォルトの名無しさん :2012/04/16(月) 21:48:15.39
昨日から始めたんだけどC#で保守ツールみたいの作れる??
何を保守するんだ
>>212 コントロールが作成されるまではDataGridViewRowも作られない
Form.Loadイベント辺りでやる
>>212 var grid = new DataGridView();を生成したとして、
コンストラクタ抜けたらどこからも参照されていない。
フォームにも、他のコントロールにも生成されたDataGridViewが挿入されていない。
215 :
デフォルトの名無しさん :2012/04/16(月) 22:03:44.40
C#で2chに自動で書き込むスクリプトみたいの作れる??
>>213 できた。ありがとう
>>214 >grid.Parent = this;
してるからフォームには参照されてるよ
今からでもスクリプト言語に切り替えた方がいいんじゃねえか VIPのプログラミングWikiにPHP、Ruby、Pythonあたりのコピペするだけで使えるサンプルが転がってるはず 臭いからこのスレで相手したくないってことじゃないよ
PHP(笑) Ruby(笑) Python(笑)
臭いからこのスレで相手したくないってことだろ
やかましい
おれ鼻詰まってるんだけどさ、このスレどんな匂いがするんだ?
鼻切り落としてからまた来い
224 :
208 :2012/04/16(月) 23:20:33.16
誰か教えてくれ 自分でWebBrowserクラス継承して、自分で書くしかないの?
225 :
デフォルトの名無しさん :2012/04/16(月) 23:22:48.76
>>224 webBrowser.Document.Cookieってあるけどこれを保存しておけばいいんじゃね?
ポリモーフィズムが速いと勘違いしてるバカって多いよね。
C#で細かい違いでどっちが速いみたいな議論してる時点でナンセンスだな
>>967 おまえがばーかたれなだけ。
日本人がアフガンやアラブ圏から嫌われないのは、どの部族であっても
戦前から民間団体が緑化などで友好的関係だから。
単に政府と政府の良好な関係で成り立っているわけじゃない。
タリバン含めな。
C#で音声入力(PCのLine入力)を扱おうとしているものです。 音声入力関係のライブラリや検索するためのキーワードなどを教えていただけないでしょうか?
音声なんて、16ビットを44.1kHzでサンプリングしたとし その膨大なデータ量を処理するにはC#みたいなインタプリタじゃなくて C/C++のネイティブコードじゃなきゃ使い物にならんぞ
C#は、インタプリタとは違うだろ
>>231 やっぱりC言語じゃないと扱えないですか…
ありがとうございます
10284 Net/System/Net/Sockets/Socket.cs 19549 WinForms/Managed/System/WinForms/Control.cs 21878 xsp/System/Web/Configuration/BrowserCapabilitiesFactory.cs 29501 WinForms/Managed/System/WinForms/DataGridViewMethods.cs 万超えとかw
235 :
208 :2012/04/17(火) 00:57:35.70
>>225 HttpRequest使ってソース取得して、それを整形してwebBrowserに流し込んでるのでその手は使えない…
やっぱり継承してオーバーライドするしか・・・ないのか・・・
236 :
デフォルトの名無しさん :2012/04/17(火) 01:11:15.13
>>235 クッキーコンテナをHttpRequestでやり取りできたはずだが
237 :
208 :2012/04/17(火) 01:38:21.14
>>236 最初の画面はHttpRequestにCookie食わして取得してWebBrowser流しこんでokだけど、WebBrowser上でリンクを踏んだりして
別のページに飛ぶと、Navigateメソッドで移動するみたいだから、Cookieが無効になる
やりたいことはwebBrowser上でリンクとかページジャンプが起こったときに、一番最初のHttpRequestの処理を呼び出したいんだ
238 :
デフォルトの名無しさん :2012/04/17(火) 01:42:52.48
>>237 Navigatingイベントを拾って自分で対策すればいいだけだろ
239 :
デフォルトの名無しさん :2012/04/17(火) 02:10:27.50
Encodingの何たるかをよく分かってないんだな、と自分でも思うんですが、 Zipファイルの中身を読み込むために、DotNetZipをちょいと改造して使ってるんですが、 文字化けしてしまったファイル名を、元の正しい文字列に戻す方法ってあるんですかね。 お前は何をryって言われるかもしれないですが、次のような現象を起こしていると思われ。 (推測なので、具体名がなくて分かりづらいかもだが・・・すまん。) ・アプリ@で、何らかのエンコード(A)で付けられたファイル名で、書庫ファイルを作成。 ・正しいエンコードで読み込めないアプリAで、異なるエンコード(B)であるかのように 書庫ファイルを読み込み、解凍 → 解凍されたファイル名は文字化けを起こしている。 ・文字化けを起こしているファイルから、アプリ@、A、または全く違うBで、 エンコード(C)の書庫ファイルを作成。 一度、何らかのアプリで文字化けを起こしたまま解凍→圧縮したせいで、 文字化けしたまんま保存されている様なんです。 DotNetZipのライブラリをちょいといじって、中身のファイル名をSystem.Stringじゃなく System.Byteの配列としてバッファで取得できるようにしたんですが、 そいつをあらん限りの(Encoding.GetEncodingsで得られるすべての)Encodingで GetStringしてみても、正しく読めてる文字列が一つも無いんです。 Zipファイル→【FileStream.Read()】→ファイル名(byte[])→【Encoding.GetString】→string の時点で、どんなEncoding使ってもダメだとすると、どんな手が考えられますかね。 Zipファイル→ファイル名(byte[])→Encoding(C).GetString →string→Encoing(B).GetBytes()→byte[]→Encoding(A).GetString()→string とか、A、B、C色々試してみたけど、今のところ甲斐無し・・・。 圧縮・解凍のアプリはフラフラと色々使うもんじゃないな・・・。
241 :
デフォルトの名無しさん :2012/04/17(火) 02:52:23.57
その解凍しようとしているzipファイル(に含まれるファイル名のbyte列)の文字列を調べるために、こんなことをやってたりします。 単にEncoding指定して解凍するだけだと、ファイル名がイってしまう。 それはいかなるEncodingを指定しても変わらない。要するに、byte列は単純なEncodingじゃなくて、 上述したように、byte列を、間違ったEncodingで解釈した後にそのまま別のEncodingを使って さらにbyte列に戻したような値なんじゃないか、と考えたわけです。 なかなか説明が難しくて分かってもらえないと思うんですが・・・。 Encodingの説明ってほんと難しい。 「ファイルが壊れています」じゃ意味がないんです。 壊れたファイルを直したい、という着眼点なので。 Encodingにアタリをつけて、10個くらいにしぼって 10×10×10の組み合わせで読み込んでみるか・・・。 UTF-8フラグの解釈なんかも含めたらさらに8倍か・・・しんどいなあ
>>239 いちいちプログラミングするのも面倒だろうから
テキストエディタに表示して文字コードいろいろ試してみたら
それで無理なら何やっても無理だと思うけど
それとnull文字、Invalid文字としてファイル名から削除されているかもね
そんなに入手しづらい同人誌だったの?
ファイル名も圧縮されているんだからまず解答しなきゃだめでしょ
244 :
208 :2012/04/17(火) 03:50:39.24
>>241 俺もそういう機能のzipやrarの復元ツールないかと思ったけどないんだよな
UTF-8ならExplzhが直してくれるけど。だからすべてが可逆的じゃないとか難しいとか判別面倒くさいのかと思った
あと化ける理由はセパレータが'/'じゃなくて'\'な圧縮ツールだとか
246 :
デフォルトの名無しさん :2012/04/17(火) 07:59:54.33
>>242 やってみた。全部目で追ってたら死んじゃう量なんで、
TreeViewにして・・・とやってたら、実行時間と目視の時間込みでこんなことに。眠い。しぬ。
@デコード:SJIS(UTF8フラグ判定あり)
Aエンコード:IBM437
Bデコード:SJIS(UTF8フラグ判定なし)
で、パスの”一部”が見えるようになった。おぞましいことが起きているぞ・・・!
【文字化け】/【正常】/【文字化け】/・・・
といった感じに、パスセパレータ単位で文字化けしてる階層と、正常に読める階層が入り乱れている。(交互、というわけではない)
恐らく、一度解凍した時にフォルダの階層を作るようなアプリが、
A. ZIPファイル名からフォルダ名を作成 → フォルダ名は正常。
B. 中身は正しく読めずファイル名を作成 → ファイル名はダメ。
という動作をした結果だな。Invalid文字なんかも削除されてるだろうから、こりゃあほぼ不可逆だな。
デコ→エンコ→デコだって、今回は3重だったけど、一般化したら何重化されてるかわかんねえからな・・・。
【想定できる文字コード数m】^【文字化け回数】^【パスの深さ】
とか手に負えん。目視せずに判定できるかもほとんど怪しいし。
>>243 DotNetZipのソースちっとばかし読めばいい。ファイル名の処理追うだけなら10分いらなかった。
>>245 セパレータの問題も頭痛いけど、さすがにそんな馬鹿なツールは使ってないと・・・自分を信じたい。
自機の定期バックアップに、ころころアプリ変える自分の頭が悪いから、無いとは言い切れないけど。
247 :
デフォルトの名無しさん :2012/04/17(火) 08:04:21.17
ん、でもまてよ・・・PKWareの仕様に従うソフトならUTF8かIBM437でエンコ/デコするだろうし、 独自の、といってもMacとWin環境しか使ってないし、SJIS(MAC)、SJIS(Win-3J)、EUCくらいが関の山か。 ある程度絞り込んでやれば行けそうだな・・・
日本語で問題が出るツールって大抵EUだな
J#使っちゃうとか
251 :
デフォルトの名無しさん :2012/04/17(火) 09:39:38.57
>>248 Encodingの問題は、必要に迫られて考えてもえらい混乱し易い問題だからな・・・
大した必要も感じない英語圏の人間が安易な方向へ逃げたとしても、強く糾弾しがたい。
世界中の言語と記号をサポートした大統一エンコードがほしい
世界中の言語と記号をサポートした大統一エンコードを考えるより 世界中の言語と記号を廃止して新規文字に世界統一するほうが簡単
254 :
デフォルトの名無しさん :2012/04/17(火) 10:48:35.59
つユニコード
255 :
デフォルトの名無しさん :2012/04/17(火) 11:14:35.09
ユニコードの持つ問題は多いけど、思想の出発点としては大事だよな。 半角カナだの全角英数だのは、本気で廃止して欲しかったけど。
C#でSQLite.NETを使ってます %を含む可能性のある文字列(name)で前方一致したいのですがうまくSELECTできません どのように記述すればよいでしょうか? SQLiteCommand command = con.CreateCommand() command.CommandText = "SELECT * FROM HOGE WHERE NAME LIKE @name + '%'"; command.Parameters.AddWithValue("@name", name);
257 :
デフォルトの名無しさん :2012/04/17(火) 12:12:45.57
後で読み返すと、どれが自分のレスかすぐわかるなあ 特徴ある
258 :
デフォルトの名無しさん :2012/04/17(火) 12:14:21.32
>>256 どうせ後で色々悩むだろうから、SQLインジェクションでググっておくことを勧める。
>>256 たぶん
command.CommandText = "SELECT * FROM HOGE WHERE NAME LIKE @name";
command.Parameters.AddWithValue("@name", name + "%");
ナルト使うとメタ文字になるけど、言語の話ではないのか・・・。
LIKE @name ESCAPE '$' name.Replace("%","$%") + "%"
262 :
256 :2012/04/17(火) 13:31:34.85
>>261 LIKE 〜 ESCAPEでESCAPEに指定した文字の直後にあるワイルドカード文字はリテラルとして処理されるんですね
ありがとうございました
いえいえ
264 :
デフォルトの名無しさん :2012/04/17(火) 16:29:58.07
11
265 :
デフォルトの名無しさん :2012/04/17(火) 16:30:44.68
11
難しいロジックを考えているとすごく脇汗が出て しかもすごく臭いんですけど、みなさんはどうですか?
難しいこと考えてる時はだいたい自分がバグってるから考えなおすかな。 もっとシンプルになるはずだ〜。
難しいこと考えて、こういうクラスが必要、ああしてこうして……と
コード量が爆発してきたときはたいてい何か間違ってることが多いからリセット。
>>266 あせわきパッドおすすめ
宇宙の方程式を一行で書ける人が世の中にはいるのに お前らときたら、冗長で糞みたいなクラスを設計しているんだな
宇宙の方程式とかどうでもいいからさー
お前のコードを見せてくれよ 一行でいいから
宇宙、それは、最後のフロンティア
・とりあえず、動くものを作って、それから効率を考えようと始める ・とりあえず、動いたので修正しようとするが、データ型を変更しなければならないと気づき面倒になる ・また、いつかやろうと放置する ・しばらくして、よいアイデアが開いめいたので、改良しようとするが、 難読化されたようなコードで読解不能になる
he Answer to life, the universe, and everything
Tがぬけてるぞ
>>273 あるある。
結局作りなおして、同じサイクルにハマるんだよな。納得するまで。
2つ目のコロンは要らないな
C# 、ToolStrip内にコンボボックスを置いたんですが、 ユーザーがリサイズできるようにするには何をしたらいいんでしょうか? サイズが固定のままで困ってます。 ギコナビの上にある「フィルターみたいなやつ」みたいに、サイズ変更できるコンボボックスが作りたいなーと
AutoSize = false;
( ・ω・)y─┛〜〜
パッと思いつくのはAutoSize切ってMouseDownでフラグ立てて座標が右端ならMouseMoveでWidthを変えるとかか?
俺、今からSlimDXはじめる。
dxlibだろ
スリムドカン
王道のXNAをわすれてもらってわこまりゅー。
directwrite早く簡単に使えるようになるといいなぁ
可愛い幼女に教えてもらいながらプログラミングしたら捗るのになぁ
幼女なのに俺より頭いいのか・・・。すげー幼女すげー。
集中できません
おまえらが想像してる部分は、privateメンバーでアクセスできないから心配すんなっ
おにいちゃん、またまちがってるぅ C++とちがって、デストラクタの保障がないから 自分でDisposeしなきゃだめでしょ!
>>291 意味がさっぱりわけわかめだよ
さわりっこに例えて説明してね
>>290 MyThirdFootクラスのStatusプロパティがMaximizedになってるのにそりゃないよw
その前にTaiihoフラグが立つから気をつけろ
www
イベント駆動
298 :
デフォルトの名無しさん :2012/04/18(水) 01:11:47.90
+を使った結合より System.out.println(new StringBuilder().append(str1).append(str2).append(str3).toString()); StringBulder使った方が速いんですよね?
自分で試して計測しろよ。圧倒的な差に棚から牡丹餅。
Javaかよ…。 というのはともかくC#ではプラス連結でも変わらん or プラス連結のほうが速い。
301 :
デフォルトの名無しさん :2012/04/18(水) 01:19:06.70
>プラス連結のほうが速い。 >プラス連結のほうが速い。 >プラス連結のほうが速い。 >プラス連結のほうが速い。 >プラス連結のほうが速い。
302 :
デフォルトの名無しさん :2012/04/18(水) 01:20:55.79
>>298 実測して外から観測するかソースを見てみろ
なんでも情報が出てくるわけじゃねーぞ
>>301 300だけど、何か気に障った?
298の例のような単純な結合のコンパイル結果わかってる?
もちろん、ループで結合とかだと話は別だけどね。
文字列何回も足すとボトルネックになるレベルで遅くなるな
駄目だ…SlimDXは敷居が高すぎた 素直にXNAにしよう
+連結だと、stringのインスタンスを作り直すから あれやこれやするならStringBuffer使った方が速いと思うけど、 単純に2つの文字列結合するぐらいなら+のほうが速いと思う。
+連結が一番速いよ。 大量に足す場合でもね(もちろん、一文全部の+を書いた場合だけど)。 StringBuilder使わんとまずいのは、ループで累積的に足し続けていく場合(どんどん長くなっていく場合)だけと言っていい。 +よりStringBuilderが速いと思ってるのはあほ。 いや、騙されてるやつが多いからあほは言い過ぎか。
文字列変数を大量に足すと内部ではどういうコードになるんだ
309 :
デフォルトの名無しさん :2012/04/18(水) 01:43:06.10
正直どっちでもいいよw
310 :
デフォルトの名無しさん :2012/04/18(水) 01:44:17.85
>もちろん、一文全部の+を書いた場合だけど >もちろん、一文全部の+を書いた場合だけど >もちろん、一文全部の+を書いた場合だけど >もちろん、一文全部の+を書いた場合だけど >もちろん、一文全部の+を書いた場合だけど
結局、+は糞遅いということじゃねーか。
A+BとA+B+C+Dみたいに複数連結するのは同速か微差なの?
一文で全部の+を書いた場合の言い間違いだが、それ以外に何かおかしいか? s = a + b + c + d; とか s = a + b + c + d; とかって意味だぜ。
>A+BとA+B+C+D 最速だよ。
体感で話すんじゃねえ ちゃんとしたサンプルコードで数字出すかソース見て語れ
文字列を一文であんまり+する場合はStringBuilderに最適化されるって聞いたような気がする
基本的に+連結はString.Concatになる。 特に4引数までは速い。 5引数以降は可変長引数経由になるので理屈上は4引数までより遅くなる。 無駄がないのでStringBuilderよりは速い。
>>313 おまえの脳内条件なんかどうでもいいよw
StringBuilderが速くて当り前。
ちゃんとした根拠なしで早い遅いって小学生のxxが最強話かよw それでよくIT関連で仕事できるな
int totalLength = str0.Length + str1.Length + str2.Length + str3.Length; string result = FastAllocateString(totalLength); FillStringChecked(result, 0, str0); FillStringChecked(result, str0.Length, str1); FillStringChecked(result, str0.Length + str1.Length, str2); FillStringChecked(result, str0.Length + str1.Length + str2.Length, str3); ふうん、こうなのか
IL見れば明らかなのに根拠がないってアホ杉。 そもそもMSDNライブラリにStringBuilderが速い理由も書いてる。 それすら読まずに根拠なし〜ってどんだけアホなんだ。 遅い理由はJAVAと同じ。誰でも知ってる。知らないおまえが小学生以下。
>>322 見れば明らかなのに・・・x
この辺を見ればわかるのにとURLを出すなどサンプルも一緒にだして説明する・・・○
もっと慇懃に煽れよ
実測してみた。8連結の場合の実行時間ms(ループで10万回分)。 +:248 StringBuilder:369 +:256 StringBuilder:367 +:204 StringBuilder:349 +:257 StringBuilder:312 +のが速いなwww
ほんとILを見ればどちらが速いか明らかだよね、+のほうが速いって。
>>323 MSの説明もソースも自分のPCで見れるのに、理解できないのは当人の問題。
URLだそうとサンプル出そうと本人は自分の間違いを絶対に認めない。
説明するだけ無駄。馬の耳に念仏。
もう可読性で選べばいいんじゃないかと。 使いやすいほう使っておけばいい。
ワロタw 完全にStringBuilderの使い方間違ってるじゃねーかw どんだけ素人だよw
何が間違ってるの? ループは計測できるように繰り返してるだけだぜ。 しかも8連結とまで説明もしてるのに、コード見て意味も理解できないほど素人なのか?
なんだ。StringBuilderの使い方が理解できず遅いって言ってたのか。 困った奴だ。
>>328 主張するほうが資料出したほうが早いだろ
ちなみに俺はどちらでもいい方だよw
そもそもループで累積的に繰り返す場合はStringBuilderって最初に言ったろうが。 どんな場合でも常に+が速いなんて誰が言ってんだか。
適当なこと言って煽ってるだけなんだから相手すんのやめようぜ 初心者スレ汚しすぎ
まさかコードの意味も理解できない素人ばかりとは…
>>330 これじゃStringBuilderの意味ないな。
荒らしにしても初心者だますのはやめろよ
>>331 newを何度もすんな。ど素人かよ。
なんのためのStringBuilderだよ。
MSDNの解説を理解できてない典型的な馬鹿だな。
ここまで俺一人の自演
>>339 8回連結の計測だって言ってんだろうが。笑わすな。
繰り返してるのは計測可能な程度時間かかるように引き伸ばしてるだけだ。
計測するのに使いまわしたら計測に並んだろうが。
て多分真面目に答えても意味ないだろうな、わざとか本当に理解できないあほかどっちかじゃ。
短すぎて計測できない処理を計測するために、繰り返すってやり方自体理解できないんだろう。 まともな計測とかしたことないんだろ、こういうやつは。
相手は煽れればなんでもいいんだから相手したら負けやで
+:156 StringBuilder:24 +:177 StringBuilder:23 +:164 StringBuilder:23 +:179 StringBuilder:25 正しい使い方に変更してやったらこんな感じ。これが現実。
>>344 条件の違う処理を比較をして何が楽しいんだか。
ってかそれどういう計測だよ、いろんな意味でおかしくないか?
意味のある計測なら、もっと圧倒的に差が出るか、差が出ないかどっちかでないとおかしいぞ。
+ 3596150 tick
StringBuilder 1652 tick
+ 3661712 tick
StringBuilder 1251 tick
+ 3711753 tick
StringBuilder 1408 tick
http://ideone.com/sMBKd ちょっとやってみた。
>>346 StringBuilderって名前のとおりそういう用途だもの。
newしまくるコードをしないようにして高速化するのが目的。
ループごとにnewするテストコード書いて遅いとか釣り針でか杉。
>bulder.ToString();
+:216
StringBuilder:179
+:254
StringBuilder:158
+:273
StringBuilder:202
+:240
StringBuilder:173
StringBuilder使いまわしてもうちではこんなもんだな
>>344 はデタラメだわ
>>349 まだ使い方が間違ってるということだなw
>>346 だからそういう用途であって、+を置き換えるだけじゃ意味ねーよって同じこと言ってんのに、
っていうかそれを示してるコードなのに意味を取り違えてることも理解できない屑。
>ループごとにnewするテストコード書いて遅いとか釣り針でか杉。
計測できる時間に引き延ばすためのループって何回説明しても理解できない屑。
>>350 ああ、bulder.ToStringを削ったのね
もはやなんの比較にもなってないな
実験したソースも出さないで
あの程度の計測コードの意味も理解できない程度のおつむなのさ。
+ 2426348032 tick StringBuilder 3208992 tick + 2420498544 tick StringBuilder 3220864 tick + 2364107064 tick StringBuilder 3132504 tick おれのPC遅いなぁ。
+のほうが速いと言ってたのに、
>>347 のこの圧倒的な差をスルーするのはどうかと思う。
/j /__/ ‘, // ヽ ', 、 // ‘ /イ ', l ’ …わかった この話はやめよう iヘヘ, l | ’ | nヘヘ _ | | l ハイ!! やめやめ | l_| | | ゝ ̄`ヽ | |〈 ̄ノ ゝソノノ `ー‐' l ! ¨/ n/7./7 ∧ j/ / iヽiヽn |! |///7/:::ゝ r===オ | ! | |/~7 i~| | | ,' '/:::::::::::ゝ、 l_こ./ヾ.. nl l .||/ | | | | l {':j`i::::::::::::::::`ーr ' ||ー---{ | '" ̄ ̄iノ .l::::::::::::::::::::::∧ | ゝ ', , 一 r‐‐l γ /、::::::::::::::::::::::::〉ー= ___ ヘ ヽ } / o |!:::::} / o` ー 、::::::::::::i o ,':::::::{`ヽ ヘ ノ / o ノ:::::∧ /ヽ o ヽ::::::::| o i::::::::ヽ、 / / / ノ::::::/ /::::::::ヽ o ヽ:::| o {::::::::::::::Υ /
+の方が早いってのは
>>298 が発端だろ?
>>347 の扱い方をするべきなのは判ってるけど、論点が違うって言ってんだろ。
ただ、
>>326 じゃnewしまくりなのが酷いから変えてみた。
ttp://ideone.com/qEj7w これでもうStringBuilderの方が早いな。
>>318 を受けて、dまででも比べてみたけど、まだStringBuilderの方が早かった。
更に2つまで、つまりbまでで比べてみたら、ループ3回目までは+の方が早かったけど、
最後だけ+の時間が倍くらいに増えて、StringBuilderの方が早かった。
StringBuilderにClearなんて出来てたんだ
>>362 ごめん、分からない。
今回のような使い方するなら連結用のBuilder1つ用意しておけばいいんじゃね、って思ってるから。
お前らもう寝ろ
+の連結とStringBuilderの比較であって ベンチを早くするのが目的じゃないからな Builderを使いまわせるケースもないわけじゃないけど StringBuilderでToString()しないっていうのはありえない
366 :
デフォルトの名無しさん :2012/04/18(水) 03:25:35.38
・・・+派、StringBuilder派双方ともに論点が微妙にずれてるから気を付けろ。 集団どうしで論じると、個々の頭の中では正しいことでも、 全体でずれたこと論じてるコトが良くあるって言うからな・・。 本来は「派」なんてもの関係なく答えはあるんだけどさ。 var builder = new StringBuilder(); for (int i = 0; i < 10000; i++) builder.Append(A); var result = builder.ToString(); と、 var result = ""; for (int i = 0; i < 10000; i++) resulult += 'A'; と、どっちが早いか。要するに一定のインスタンスに大量の文字(列)を追加する場合、 そんでもって、も一つは var a = "012"; var b = "345"; var c = "678"; var result = a + b + c; と var a = "012"; var b = "345"; var c = "678"; var result = new StringBuilder().Append(a).Append(b).Append(c); と、どっちが早いかって話。要するに、追加する文字列の数自体は固定である場合。 ミニマムな性能テストコードを書いた場合、テストの(性能差を感覚的に有意にする)ためのコードと、 性能試験したい対象のコードをごっちゃにしないようにしないと混乱するぞ。
ループ内でToString()したらStringBuilder使う意味がない。というかただのアホ。 newがなぜ遅いか理解してないか、newの意味自体理解してないか。
368 :
デフォルトの名無しさん :2012/04/18(水) 03:26:27.44
あ、実際組んだワケじゃなくてこの場で書いてるから動かんコードだったらすまん。
+派がおかしい。MSDNに書いてあるとおり。StringBuilderはnewしないから速い。 StringBuilder使ってnewしまくるコード書いて遅いと言ってる奴はPGに向かない。
var str = "A" + "B" + "C" + "D" + "E";
これはまあ早いんだけども
var str = "A";
str += "B";
str += "C";
str += "D";
str += "E";
これと比べたら
var str = new StringBuilder().Append("A").Append("B").Append("C").Append("D").Append("E").ToString();
こっちのほうが早いはず
なんにしても
>>367 は荒らしたいだけだから無視したほうがいい
371 :
366 :2012/04/18(水) 03:31:01.97
あ、366だけども、上の場合の比較はStringBuilder、 下の場合の比較は+が高速、ってことで合ってるよね? 動かせる環境がありゃすぐ動かしてみるんだが、俺の認識間違ってたら色々やばいな。
372 :
366 :2012/04/18(水) 03:31:24.55
>>370 それホントか?ちょっと試しに動かしてみて欲しい。
>>370 荒らしおまえだろ。そのIL比べてみろよ。
ループ内でToString()を使うのはただのアホ。
stringをnewしまくってることに気づいてないアホ。
>>347 の結果が証左。
>>374 StringBuilderをToStringせずにClearするコードなんて現実的にありえないから
そんなことする意味がない
376 :
366 :2012/04/18(水) 03:39:20.10
>追加する文字列の数自体は固定である場合。 これはちと表現間違ったな。やっぱりいかんな、気を抜いては。
378 :
デフォルトの名無しさん :2012/04/18(水) 03:41:53.14
>>375 >>374 が正しい使い方。ToString()はループの外。ループ内とかただのアホ。
せっかくバッファ使ってnewしないようにしてるのにいちいちnewして何したいの、ボク?
>>378 ループさせたのは1回じゃ計測できないからってだけで、
本来は連結からstring型への格納までが1回。
ここでのToString()にループの内外関係ないだろ。
380 :
366 :2012/04/18(水) 03:48:15.90
>>377 マジか。認識改めるわ。
このコードは
>>366 の後者にあたるテストだが、その場合だけは+の方が早いと思ってた。
ループ内にToString()があるのは、それが性能テスト対象だから当然だと思うんだが、
俺と認識あってるよな・・・?
>>378 >>326 を読め
ループの中でToStringしなかったら文字列配列を作るっていう同じ結果が出せなくなるんだから比較にならない
StringBuilderの正しい使い方の話をしてるんじゃなく
+の連結とStringBuilderのどっちが早いかを話してるってことを理解しろ
StringBuilderの時だけインスタンスを使いまわしたりToStringを省略することが
+の連結とStringBuilderを正しく比較するのにどう有用なのか説明してみろ
>>379 処理時間の大半がToString()に費やされてるテストに何の意味があるんだ?
連結のテストではなかったのか?
そのテストで分かったことはstringをnewすることは糞遅いということ。
すなわちその糞遅い処理をバッファにしてnewを端折れるStringBuilderが速いということ。
383 :
デフォルトの名無しさん :2012/04/18(水) 03:51:50.41
>>326 はさ
s = a + b + c + d + e + f + g + h;
と
StringBuilder bulder = new StringBuilder();
bulder.Append(a).Append(b).Append(c).Append(d).Append(e).Append(f).Append(g).Append(h);
s = builder.ToString();
を比べてるんだよ。ループは速度たしかめる為のもんだから、この際あんまり関係ないよ
384 :
デフォルトの名無しさん :2012/04/18(水) 03:54:05.52
>>382 お前はStringBufferをToString()せずに使うのか?
>>381 文字配列を作る時間を計るテストだったのか? テストの意図が随分違うね。
+もStringBuilderもstring配列を作る時間が大半じゃテストとしては不適当だね。
>>347 がテストとしては正しいテストだね。stringとStringBuilderの明確な違いが出てる。
>>384 ループ内ではと何度言ったら理解できるんだ? 認知症か?
StringBuilder のToStringってバッファをstringに変換するメソッド。
つまりは、文字列を出力したりするときに使う物で文字列を生成するときに使う物ではないと思う。
+:519
StringBuilder:354
+:376
StringBuilder:406
+:454
StringBuilder:304
+:380
StringBuilder:361
http://ideone.com/CtEwi
敗軍が論点ずらしを始めた模様。
いったいToStringしないStringBuilderで計測してるやつは何がやりたいんだw
>>388 いったい何と何を比較してるんだそれはw
事の発端は
>>298 複数の文字列をちゃっちゃと連結して扱いたいわけよ。
そこでStringBuilderのnewからの計測をしたのが
>>326 newを省いて計測したのが
>>360 >>326 では+の方が早いが、
>>360 ではStringBuilderの方が早い。
つまり、使いまわせるStringBuilderがあるなら、そっちで連結した方が早いわけだな。
s = a + b + c + d + e + f + g + h;
と
StringBuilder bulder = new StringBuilder();
bulder.Append(a).Append(b).Append(c).Append(d).Append(e).Append(f).Append(g).Append(h);
s = builder.ToString();
を比べてるんだからStringBuilderを使いまわすとかそもそも想定してない。
文字列を連結しようとしたときに、そこにStringBuilderのインスタンスがあるわけじゃないんだから。
最初からそれだけのことなのに何をうだうだ言ってるのか。
本当に
>>326 の意味が理解できないやついっぱいいるんだなあ。
395 :
デフォルトの名無しさん :2012/04/18(水) 04:30:13.28
>>386 じゃあ両者の比較をするのに、どこでToString()するんだよw
396 :
デフォルトの名無しさん :2012/04/18(水) 04:32:52.74
低レベル・・・と言いたいけど、こういう基礎的な議論は自分の基礎を改めて確認したり、 意外なところにあった勘違いを見直したりする良い機会だから良い議論だ。
>>386 ループ内で文字列がほしいときはどうするんだよw
最初からそういう話なのに分からないんだよなあw
399 :
デフォルトの名無しさん :2012/04/18(水) 04:35:26.81
「ループ」っていうのが、ロジック上のループなのか 時間計測のため(に大量処理を疑似的にするため)のループなのか見抜けないと、 (StringBuilderの早さを論じるのは)難しい。
低脳+派は、
>>347 の連結のテストじゃなぜダメなのか説明してもらわないとwww
>>326 のソースコードは、ある意味正しいけど、
ちと分かりづらいな。
必要ない配列使ってたり、どこが試験対象のコードなのか分かりづらかったり。
時間計測(delegate)
for() // 時間計測のための疑似ループ {
}
string 試験対象A() { ... }
string 試験対象B() { ... }
みたいなのが望ましい。
インスタンス使いまわす場合でも、連結数4個なら、
微妙にだが+の方が速いっぽいぜ?
まあほとんど変わらんけどな。
http://ideone.com/GAbR5 +:1090
StringBuilder:1132
+:1155
StringBuilder:1180
+:1153
StringBuilder:1155
+:1119
StringBuilder:1177
+:1083
StringBuilder:1261
+:1137
StringBuilder:1205
+:1110
StringBuilder:1171
+:1133
StringBuilder:1122
配列使ったりしてるのは最適化の影響をできる限り避けるため。 まあ多分使わなくても大丈夫だとは思うが。 初期化をメソッドに外出ししてるのも同じ理由。 計測範囲はStopwatchの開始からStopでわかるだろ常考。 比較処理をデリゲートにしたら、デリゲート呼び出しのオーバーヘッドがでかすぎる。
>>401 基地外。
「計測対象処理内」でToStringしないコードにいったい何の意味があるというのか。
まあ実際はどこにもToStringがないわけだが。
ToStringしないStringBuilderにいったい何の意味があるのかw
>>394 現実的に考えて、一括連結が複数あるならStringBuilder使いまわせるだろ、
って思ってたんだけど、30個位ないと速度逆転しなかったわ。
環境差もあるかもしれんが。
http://ideone.com/p4kYx 一度につなげる分には+の方が早いってことでいいのかな。
>計測範囲はStopwatchの開始からStopでわかるだろ常考。 ああ、まあ時間稼ぎのループの意味が分かりにくいことは認める。 でもわかるだろ?普通。 こんなに理解されないとは思わなかったよ。
単純に引数だかで文字列受け取って連結するなら + で 大きなサイズだったり、不特定多数ならStringBuilderで良いと思うんだが。
>>407 いや、俺も当然分かるだろ?と思ったんだけどさ。
こうまで伝わりにくいのを見ると、ああ、やっぱりプログラムのソースコードって奴は
「人に伝わるように書かなきゃいけない」んだなあ、と思ったわけよ。
みんながみんな分かると思ったら大間違いだ!っていう原則を思い出しただけ。
あなたのソースは決して間違ってないし、あながち悪いもんでもない。
まあ、コメントつけてやるくらいが妥当な線なのかな。
あながち悪いモンでもない、って完全に上から目線だな。 オーバーヘッドの考慮とか、プログラムとして考慮すべきところは考慮されてる、 適切なソースだと思います。
>>405 >>347 にToString()をつけてもよかとよ?wwww
結果はほとんど変わらないけどwww
低脳は反論も低脳だなぁwww
まあ実際には、ある程度の量の文字連結が必要になるシーンって、 こんなミニマムなソースコードになることは稀だし、 StringBuilderの使い方には気を付けろ、って意味では勉強になる
>>411 StringBuilderが圧倒的であることには変わりないが、
本当に「ほとんど」変わりないか?時間自体は結構な差があるぞ。
まあ5分かもうチョイ程度で書いたコードだ勘弁してくれ。
>>411 Stringに何回も+=するよりStringBuilderが効率的だなんて
C#が生まれる前から分かりきってた話で今問題にしてるのはそこじゃないからな
>>411 そもそも本題はループ内でToStringしなきゃ意味がない、計測対象はループの中なんだからって話。
外にすらないじゃんって言っただけであって、外でのToStringなんざ何の意味もない。
>>411 こいつ未だに何を比較してるのか理解してないのか?それともごまかし続けるのか?
>>411 に対する指摘は、「string の +演算子」と「StringBuilderによる組み立て」どちらが速いか、
という本題にとっては横やりでしかないんだが、
それにしたって
>>411 の論点に気づけない浅はかさと、レスの子供っぽさは特筆に値する頭の悪さだな、と思う。
422 :
デフォルトの名無しさん :2012/04/18(水) 05:15:54.90
>>417 ならはっきりとなにを比較してるか説明してみろよ。
文字連結の速度じゃないのか?
ちなみかにToString()は文字連結と何の関係もないぞ。型変換だ。
もうこいつにさわんなうっとおしい
425 :
デフォルトの名無しさん :2012/04/18(水) 05:20:29.08
朝からなにやってんの?
>>347 と
>>387 で結論で出る。
文字列処理する場合 StringBuilder は圧倒的に速いでOKだろ。馬鹿かおまえら。
>>422 みたいなのが、
上司「君に性能改善してもらったのに、全然改善しないじゃないか!」
422「それは俺が悪いんじゃないッスよwwww文字連結とは関係ない型変換が悪いんスよwww」
とか言っちゃうんだろうな。
全く間違ってることを言ってるんじゃない、ってところが尚タチわりい
>>425 それで満足するかどうかは別問題だな
結論の出た話について別の視点から話題が発生してる。
428 :
デフォルトの名無しさん :2012/04/18(水) 05:23:47.46
>>425 だな。+派はなにを比較してるのか未だに理解できない。
説明しろと言ってもこの通り説明しないで逃げのレスばかり。
ソース出せと言ったら、処理時間の大半がToString()の糞ソース。
朝っぱらから自演乙
勧められたdxlibやってみた これすごく楽 しばらくこれで遊んでみよう
431 :
デフォルトの名無しさん :2012/04/18(水) 05:39:45.50
+が速いって言ってる人は何が論点なの? 負けを認めたくないだけで荒らしてんの?
string a = ""; for (int i = 0; i < 100000; i++) a += "a"; string b = ""; StringBuilder bulder = new StringBuilder(); for (int i = 0; i < 100000; i++) bulder.Append("a"); b = bulder.ToString(); +:4733 StringBuilder:2 ToString()つけようが使い方が正しければ同じことだ。アホらしい。
+が速いって言ってる奴いるか?ここ数十レスちかく見かけない気がするんだが・・・
>>432 そういうことが言いたかったんだよ。
ToString付けずに議論してもあまり意味がない、と。
余談だが、string b = ""; じゃなくて string b で十分じゃね。
>>434 ループ内でToString()してるアホソースと
ループ内でToString()しないと意味がないというアホレスだらけだが?
>>435 よく読め・・・
>>432 のループは、ロジカルなループだろ。100000っていう数字に意味は無いだろうが、
実際の処理でもループの中で文字列を連結するような処理について論じてるんだろ。
>>347 は、ソース的に一定の個数(たとえば、a, b, c, ... hの8個)を連結する場合を論じてるんだよ。
ToString()が中か外か、っつーのはそこの話であって、
+の方が速いなんてこたー書いてないぞ。
たった8個の差を計測だと!?wwww 全くもってどうでもいいwww どっちでも勝手に使えwww 絶対に体感できる差はないと断言できるwww というかStringBuilder使う意味がねぇwwwww アホらし
俺なんかStringBuilderなんてあるの知らなかったし( ・ω・)y─┛〜〜
今北 StringBuilderが速いなんて1年生の教科書の最初の方に書いてあるような話題で 屁理屈や話題逸らし論点のすり替えをしまくって自分が正しいと主張し続けている朝鮮人がいるとこまで分かった
C#がスクリプト言語として利用される時代がきたのかぁ
>>438 >>298 が発端。
最初からずっとそういう話。
ずっとごまかし続けてごくろうさん。
ループでの大量連結でStringBuilderの方が速いってことを否定してるやつは一人もいない。
そんな当たり前のことを今更議論する必要もない。
お前らよく長時間寝ずに
>>438 みたいなのを相手にしていたな 感心するわ
こいつこのスレに常駐してる荒らしだから触るなよ
ブログ参考にさせてもらっているんだけど コメントがまったくついてないのに、どうやってモチベ維持しているの?
IL、JITコンパイルで最適化されるレベルの差の測定に 大量のString配列を生成したり、ToString()入れるとか狂気。 相手する以前に相手する側が素人丸出しなんだが。 まぁ、ふらっとだからいいか。
>>445 実際やってみると、書くこと自体でも再認識できることっていっぱいあるし、
後々備忘録としても使えるし、意外と続くモンだよ
>>446 ど素人ご苦労さん。
何のために配列に結果入れてるか分からないんだな。
ToStringに至っては基地外の言い種。
おまえもしToStringに今の100倍時間掛かるとしても、
ToStringは連結に関係ないから速度に影響無いとでもいう気かw
String配列は一回の計測で1個しか作ってないんだぜw
ああ、1個でも大量って言うんだなw
>>446 微妙な差を計測するから何回も同じ処理を繰り返すんだよw
同じ処理を繰り返さなきゃ意味がないんだよw
馬鹿は無視しろよ
奇数個のオブジェクト<T>を保持するリストを作ろうと思ったが、 Listで内部に持つのと、1個の<T>、または2個の<T>と同じクラスのオブジェクト1つを持つことで実現するのと、 どっちが良いかわかんねえな・・・
す っ げ ー 有 意 義 な ス レ だ な こ こ は
>>454 いや、普通に外部の相談掲示板のほうが有意義だよ。
>>451 9割無駄なコード入れてどうやってその微妙の差を測定するのかと。
しかも毎回いくら時間かかるか分からないヒープ確保を大量に放り込むとか意味不明。
キミはIL読めない以前にOSの仕組みを理解していないのではないか。
>>455 いえいえ、あなたのようなレスの真意を洞察した適切なレスをなさる方もいらっしゃいますし
>String配列は一回の計測で1個しか作ってないんだぜw >String配列は一回の計測で1個しか作ってないんだぜw >String配列は一回の計測で1個しか作ってないんだぜw >ああ、1個でも大量って言うんだなw >ああ、1個でも大量って言うんだなw >ああ、1個でも大量って言うんだなw なにこのスレのレベル
大丈夫、この中にアホは一人だけのはず
>>262 誰も指摘してくれてないけど、検索文字中に _ とか $がありえる場合は
それもエスケープするんだよ。
違った、計測時は1回も配列なんか作ってないな。 1回もやってない処理は大量って言うんだな。
464 :
デフォルトの名無しさん :2012/04/18(水) 11:19:28.68
アホなことで盛り上がっててワラタ
十分な機能を実装したあとはデザインにも凝りたいよね ソフトのデザイン規則なんてものがあるのか知らないけど 見た目の色や形は最新OSに近いもの 比率はディスプレイサイズを考慮して4:3や16:9のオブジェクトの組み合わせで作るとか 1:1.1618の黄金比で作るとか そうか興味ないか
典型的なコミュニケーション能力欠如のプログラマが暴れててワラタ 計測の為のループなのに何度言っても理解できないなんて低脳すぎるだろw 8つの文字列を連結する速度は+とStringBuilderでどちらが早いかの話であって ループ内で8つの文字列を連結する速度は+とStringBuilderでどちらが早いかの話ではないだろw
結論 文字列連結ならStringBuilderの方が高速で低コストだな 1万回連結するような処理じゃなければどっちでもいい
この業界はコミュニケーション能力欠如のプログラマが大勢いる 低脳すぎる人にも理解できるように説明できない人にも問題ありだ
>>468 渦中にいたけど、
ホントコミュ障治したいなあ、と実感したよ・・・
>>468 >低脳すぎる人にも理解できるよう
なんでこんなのが業界にいるのかが謎だけどなw
小学校で子供に勉強教えるくらい理解してくれない
問題定義って大事だな。
>>457 public class OddList<T> {
private T obj1; // always not null
private T obj2;
private OddList<T> list;
public OddList<T>(T obj1, T obj2, OddList<T> list) {
if (obj1 == null)
throw new ArgumentNullException("obj1");
if (obj2 == null && list != null)
throw new ArgumentNullException("obj2");
if (obj2 != null && list == null)
throw new ArgumentNullException("list");
}
}
こんな片方向リンクリストなオブジェクトを作るかなあ、と。
>>470 だって人事部のアホが立派な資格を持ってるだの学歴だの何だの言って入社させ
ちゃったんだもん
477 :
デフォルトの名無しさん :2012/04/18(水) 14:36:11.44
>>476 そもそも専門的な業界なのに素人にレクチャーするくらい噛み砕かなければ
理解出来ない人がいるのって異常だよ
>>473 だから、それは+とStringBuilderのパフォーマンスの話であって、8つの文字列
を連結する速度は+とStringBuilderでどちらが早いかのじゃないだろが
ちゃんと論点を把握しろよ
8つの文字列を連結する速度は+とStringBuilderでどちらが早いかの話の結論は
+が早い
>>477 周りの会社を見ている限り、その異常者がこの業界ではまかり通ってると思う。
入社してきた時点で基本的な話がきちんとできる人、って1割いれば良い方、ってのが手応え。
基礎的な専門知識なんて入社した時点で持ってるのが当たり前で、
会社に入って勉強することは、そういう「PG上の基本的な原則」と、
「経済的コスト」と「客の要求」にどう折り合いを付けるか、だと思ってたら、
「PG上の基本的な原則」すら分かってない池沼ばっかりでびっくりした。
まあ社畜SE()だった自分の周りだからこそそんな状況なのかもだけど。
481 :
デフォルトの名無しさん :2012/04/18(水) 14:45:10.71
>>479 社畜SEは部下の面倒みろよw
問題は土建業界と同じシステムを採用してるので
派遣などで送り込む人までそういうのが混ざってるからややこしくなるw
ここは初心者スレだからな
業界雑談スレじゃないんだ
>>1 を読み直してくれ
>>481 見切れなくなって、クビ切られてニートさ!ハハッ負け組さッ!
土建業界と同じシステム、についてはホントどうにかして欲しいなあ。
ウォーターフォールの適用限界を実感する日々だったよ・・・。
>>477 確かに異常だな
まあIT業界は歴史が浅くて伝統がないから、試行錯誤を繰り返してる最中なので
異常な状態でも仕方ないけどな
これはC#スレを攻撃して普及を阻害しようとするOracleの陰謀に違いない
>>480 ああ、そうだな、間違えた、添削ありがとう
>>485 Oracleって優秀な工作員がいるんだなw
8個ぐらいの連結ならどっち使おうが、1ミリも変わらんだろw
489 :
デフォルトの名無しさん :2012/04/18(水) 14:55:34.66
オラ!クール!
気持ちの悪いプログラマと一緒に仕事がしたくないからプログラマになるのはやめた この選択は正解だった プログラミングは趣味でやるのが楽しい
ってかここってマな人々は、居るの? ちなみに俺は、マじゃないけどな
>>488 その8こぐらいの連結をしているメソッドが、何回も呼ばれる可能性については考えないのか?
>>493 低脳マがそんなこと考えられるわけないだろw
>>491 荒らしているのは、プロで病気になっている人か首になった人
俺も素人だから楽しくやりたいだけなのに
業界では常識、そんな奴仕事で使えない、などと言っている人は何なのかと思う
>>493 その可能性があれば、StringBuilderを使う。
それに俺は、文字列連結は、StringBuilderを使う派だ。+派ではない。
>>496 ここにもそういう奴が紛れ込んでくるね。
あれはどういうつもりなのだろうか。
>>497 俺もStringBuilder派だ。まあ、うん。ならいいや。
俺は一体何に噛みついたんだろう。
>>495 役立たずのスレを見つける才能はあるようだね
C#本スレで聞いたほうがいいよ
>>498 会社で「そんなの常識だろ」とか「使えねえな」とか言われてる人がストレス発散してるんだろ
>>500 マジか。そんな才能いらねえ・・・
じゃ、本スレで聞いてきますわ。
こんなド素人を相手に見下しているレベルの人って 社会的にどういう待遇を受けている人なんだろうと心配になる 成功者と呼ばれるような人が、初心者見下すようなことはまずしないよね
うーん、ここで聞いた以上、相談室に書くと完全にマルチポストだなあ。いくら取り下げようと。 もう諦めるか・・・
>>502 荒らしは多いけど親切な人が答えてくれるよ
ソースが読めない
大学の情報処理で周り見渡したら、なんか暗そうなのばっかり こんな奴らと一緒に仕事しても人生楽しくなさそうだなと思った 小学生の頃からプログラミングはやっていたので 大学の授業もつまらなかったし、何より教授も人として終わってて出るのをやめた 今はアパレル関係で働いているけど良かったと思う こっそりエロい同人作っているのはみんなには秘密だけどね
>>503 >成功者と呼ばれるような人が、初心者見下すようなことはまずしないよね
俺が見てきた成功者には初心者見下すような奴はいなかった
たぶん心に余裕があるから初心者に優しいんだろう、しかも謙虚だったりするし
たぶんだけど、D&Dとか非同期とかは、Reactive Extensions使えば、結構スマートに書けるんじゃない? まだあんまり情報が揃ってないから入りにくいかもしれないけど。
>>505 それ、このスレの話かな
それとも相談室の話かな
ソース読めないな、ホントに。失態だ。アップローダじゃ読みづらくてしょうがないな・・・。
Ideonとやらを使ってみるか・・・
>>508 Rxかー。一度挫折してるんだよなあ。
一応、モノが宿題で、インターフェース定義がある程度決まってる(Taskを使う)んで、
Rxだと答えられない希ガス。その辺も詳しく書き起こしてみる。
出来る人間は謙虚だよね。 プロが素人煽って満たされる程度の自尊心というのが情けない というか、そんなのでプロやっていけるのか?って思うがな
このスレには親切な人と荒らしが同居している 親切な人のためにも荒れないでいて欲しい
>>511 そんなのでもITドカタと言われながら30歳くらいまでプロでやっていけるのがこの業界
間違えてマ板に来てしまったのかと思ったぜw
515 :
デフォルトの名無しさん :2012/04/18(水) 15:52:38.15
どのボタンクリックしたときにイベントハンドラが呼び出されたか判別する方法教えろ
日本語でおk
>>515 var senderControl = sender as Control;
if (senderControl != null)
Debug.WriteLine(senderControl.Name);
ぱっと思いついたところ。ソースに誤字脱字あったらごめん
button1_Clickが呼び出されるんだからbutton1がクリックされたんだなって分かるだろ
どこで判別できるのか作りが知らんが
var senderControl = sender as Control;
switch(senderCotrol.Name)
{
case "":〜
>>518 イベントハンドラを共有してるんだろ
ボタン1000個置いて同一のメソッド呼んでるとか
void button_click(object sender, EventArgs e) { if(sender == button1) MessageBox.Show("button1がクリックされました"); } っていうこともできるけどな
イベントの発生元は、大方、senderだからキャストすれば、良いけど、あまりお勧めしない。 Rxだと、そもそもsender使わず、イベントデータ表す、eだけで基本おkじゃね?って流れ。 そもそもボタンなどのUIと処理自体、切り離すべきだろうし、 どのボタンが〜と言ってる時点で設計に難があると思う。 処理自体は、GUIを意識しないようにするのが良いかと。
>イベントハンドラが呼び出されたか判別する方法 private void button1_Click(object sender, EventArgs e) { System.Diagnostics.Debug.WriteLine("イベントハンドラが呼び出されたよ"); } これが一番要求満たしてるだろ。場合によってWriteLineをMessageBoxに変えるとかしてくれ
>>521 何言ってんのか全然分からんね
UIと処理を切り離すというお題目はよく聞くけどC#はそういう設計じゃないし
そういう設計じゃないほうが実用的だし
ボタンのイベントハンドラを共通化することも有用なケースはあるわな
この場合切り離すとか何をどう切り離すのやらさっぱり分からん
同人、絵描き板の荒れ具合と比べたらまだマシだな
正直言って+ではなくStringBuilder派というのがよく分からん。 StringBuilder使うべき場面て割と明確に限定的で、 それ以外の箇所じゃ見にくいだけ遅くなるだけなのに、 わざわざ+じゃなくてStringBuilder派ってのはどういうことなの?
【やりたいこと】 ユーザのフォルダ、ファイルのD&Dに対し、渡されたフォルダ&ファイル内の特定パターンのファイルすべてに 時間のかかる処理をしたい。 ・Cancellationの実装。 → 現在キューイングされているタスクをすべて停止し、Complete(Reason=Cancel)を呼び出す。 ・Progressイベントの実装。 → フォルダ・ファイルの進行状況を、別々に表示する。 また、ファイルの進行状況は、「現在キューイングされているフォルダ・ファイルに含まれるすべてのファイル数」に基づく値とする。 さらに、進行中にユーザのD&Dがあった場合は、即座にそのフォルダ、ファイルも進行状況に反映する。 ・Completeイベントの実装。 → キューイングされているすべてのフォルダ・ファイルを処理しおえた段階で、1度だけ呼び出す。 Complete(Reason=Complete) ・Exceptionイベントの実装。 → 現在キューイングされているすべてのタスクの内で、例外が発生した場合は 即座に残りのキューをキャンセルし、Complete(Reason=Fault)を呼び出す。 ・CUIからの呼び出し。 → CUIから呼び出した場合、呼び出したメソッドの戻り値であるTaskに対してWait()を呼び出すことで、 当該処理の終了を待機できるようにする。 【許容範囲】 Completeが呼び出された直後(最中)に、ユーザのD&Dが行われた場合、 Progressはリセットされた状態から始まっても構わない。
ボタンやドロップダウンリストを動的に作成するときってあるからな
>>521 はまだそういう経験を積んでいないんだろう
529 :
デフォルトの名無しさん :2012/04/18(水) 16:21:09.67
>>523 他は兎も角、ボタンのハンドラを共有しても殆ど意味無いだろ
ボタン毎に機能が違う場合が殆どだし、テンキーみたいのならTextプロバティーを読めば済む
>>528 その言い方はどうかと思うが、実際今回の要求の動機はそれだろうな。
開発時にデザイナで追加したButtonなら、あんまり意味ないし。
推定だからなんともいえんけど。
StringBuilderは兎に角見にくいのが嫌すぎるので使うべき場面以外では使いたくない。
>>528 動的に生成するのもViewの役目だろバカ
>>529 そのボタンが動的に生成される場合を考えてみてくれないか?
あるボタンをクリックすると、新しいボタンが画面上に作られて、
そのボタンをクリックするとまた新しいボタンが・・・みたいな感じ。
まあ、そんなインターフェース使うシーンが咄嗟に思いつかないけど。
>>527 MainForm.Designer.csも頂戴
535 :
デフォルトの名無しさん :2012/04/18(水) 16:25:59.38
>>533 メニューとかなら有るけど、ボタンの動的生成って滅多にないでしょ
void addButton(object sender EventArgs e) { var newButton = new Button("新しいボタン"); newButton.Click += new EventHandler(addButton); var senderButton = sender as Button; senderButton.Enabled = false; floatView.Items.Add(newButton); } 良い例じゃないけど、こんなことじゃね。
>>529 だからすべてのケースで共有はしてはいけない、お前もするな ってこと?
ブラウザのようにタブを動的に作ってタブが選択されたらとか予め最大タブ数ぶんのイベント作って記述するとかやりたくないなぁ
>>535 滅多にない、なんてこの際かんけいなくね
540 :
デフォルトの名無しさん :2012/04/18(水) 16:33:43.04
>>537 例えばButtonのTagに何らかのオブジェクト載っけて、押されたらそれを処理するってハンドラはあり得るが
ボタン自体を区別するって、例えばOKボタンとCancelボタンのハンドラ共有みたいなケースじゃないの?
>>540 まあ、どうやら質問した人間も顔出さないみたいだし、どっかのレスで解決したんじゃね。
タグでファイル管理するソフト作っているけど タグをボタンで表現しているから動的にボタン作るよ
そういうことする場合もあるんだな、でいいじゃん。ここじゃ。
>>515 のレスだけじゃ何ともいえん。
自分がその用途を想像できないからそんなことをする奴はいない、いてはいけない という考え方は極力持たないようにしている
>>538 フォルダに対する処理(フォルダの中身をファイルに展開する処理)
は、ファイルと同じスレッドでいいのか?
>>545 同じスレッド上で実現できるか分からないですが、(多分無理)
処理するべきファイルをキューイングする、って意味なら、
フォルダを追加された(D&Dされた)時点で、対象ファイルのキューにどんどん追加してもらいたいです。
教授の例示したモノだと、フォルダのプログレスとファイルのプログレスは同時に動いてたんで、多分非同期。
キューに、とは言ってるけど、Queueをつかえって話じゃないらしい。
「ContinueWithを使えば簡単にできます」とかって言われたけど、
キャンセルとか進捗表示とかするのにそれで上手く動くのか甚だ疑問なんですわ。
もぐら叩きゲームを作るときにボタンをランダムに生成するといいぞ。
button.Text = "もぐら"; せめてPictureBoxでやろうぜ・・・
>>546 FolderProgressってどうしても必要なの? これ
面倒だから実装したくないんだけど
550 :
デフォルトの名無しさん :2012/04/18(水) 17:44:55.28
>>548 buttonでもええやん
画像設置できるだんし
ファイル一個一個入れるinterfaceしかないんじゃどのフォルダが選ばれたのか知ることが出来ないしプログレスもクソもないと思うんだけど
>>549 俺もそう思う。本気でこれさえ無ければ・・・と思う。
そう言ったら、「それなくしたら課題の要がなくなってしまう」って一蹴された。
そこが課題なんだって。クソ−、むずい。
WebBrowserのNavigatingイベントがNavigateメソッドで呼ばれたか、DocumentTextプロパティに値が挿入されたか どっちで呼び出されたか判別する方法ってないですか?
このスレに宿題やらせてんのかw 宿題スレは別にあるだろ。
どぅあー!全然ダメだ!できねえ! 何が悔しいって、教授の作ったデモは、触らしてもらった限りにおいて、 確かに処理中でD&Dしようが、キャンセルしようが、ちゃんと動いてたコトなんだよな・・・。 持ち帰って良いですか?と聞いたら、「逆コンパイルすりゃILレベルでわかっちゃうからダメ」とさらりと返されたわ QueueとThreadなら分かるのに・・・Task+ContinueWith+Cancellationってコレマジかよ・・・
デリゲートってどんな時に使うんですか?
>>554 その通りなんだが、最初宿題スレ言ったらスレがほぼ死んでた。すまん。
558 :
デフォルトの名無しさん :2012/04/18(水) 17:58:13.11
>>555 今じゃILどころかC#のソースそのまま出てくるからな。ILSpyで。
宿題ここでやるのはどうかと思うが、これ難易度高くておもしろい ニートのぼくも、久々に頭使うテーマだ
Reflectorも個人利用に限り無料で使えるよね たまに変なおっさんの顔が出てくるけど
おいらが0から作ってみるお
>>561 一応、無料で使えるけど、ILSpyのほうが使いやすいと思ったから乗り換えた。
登録とかする必要もないし
Reflectorは最近起動したらアップデートの選択肢に騙されて 自己exe削除されて呆然としたわ・・・ 探しても結局ないしILSpy使ってる
ネトウヨ王に、俺はなる!まで読んだ。
Int16とShortとか、stringとStringって、全く同じものだと思うのですが、 普通はどっちを使うものなんですか? 混在すると気持ち悪いので、どちらかに統一したいなと思うのですが、 それについて言及しているようなサイトがイマイチ見つからないので 良ければ教えていただければと思います。
568 :
デフォルトの名無しさん :2012/04/18(水) 18:25:24.06
shortも青になるのあったような stringも青になる方 つまり頭が小文字
>>567 好きなのほう使って統一しておけば良いんじゃ?
ただ複数言語と統一させたりするなら、Stringとかの.NETのほうで定義されてるほうを使えばいいかと。
青になるのは大文字だろ
配色変えてる俺には、青とか言われても (´・ω・`)
>>570 大文字はクラスと同じなのでちょっと暗めの水色だろ
573 :
デフォルトの名無しさん :2012/04/18(水) 18:29:36.97
>>571 デフォルトの色だよ
痛IDEにするから悪いだ
さあ晒せ
使っちゃいけない明確な理由や動作の違いがあるなら使わないけどさ
>>571 俺もson-of-obsidianのセッティング使ってる
俺ルール: 変数の宣言等は小文字 ex: int i = 0; 型の静的なメソッド呼び出しは大文字 ex: i = Int32.Parse(...);
うーん、こりゃいかんわ。今日24時が期限だが、間に合いそうにない。 付き合ってもらってる面々には申し訳ないが、諦めることになりそうだ・・・(´・ω・`)
デリゲートってどんな時に使うんですか?
>>579 おっさん乙www
究極のおっさんは黒バックに緑文字かな?
582 :
デフォルトの名無しさん :2012/04/18(水) 18:37:52.63
>>580 デートしてるときにお腹がゆるゆるになったとき
白バックだと目疲れるだろ おっさんじゃないけど俺も黒バック
>>579 配色は好きにすればいいと思うけど
ただ、MSゴシック使っているのは負けかなと思う
目が疲れにくいから黒バック好きなんだけど、 ともすれば中二っぽく見えるから、公には使わない・・・。 我ながらナルシズムだなあ。
587 :
デフォルトの名無しさん :2012/04/18(水) 18:42:10.15
俺は
>>583 のRagnarok Dark使ってるわ
おっさんとかバックとか言われるとちょっとイヤラシイ気分になってくる
>>584 白バックで目が疲れるような人は瞳孔が正常の働いてない人。
そういう人が黒バックに白の文字を凝視して、本当に目に優しいと思う?w
>>589 短い時間なら大丈夫なんだけどねえ。
長時間使って疲れてくると瞳孔が鈍くなるんかなあ
完全黒に完全白文字、ポスターカラーな色合いだと目も疲れるし厨っぽいので 少しパステル調に落とした感じがベスト
デリゲートってどんな時に使うんですか?
>>581 おっさんじゃねぇよwwまだ20代だ。
いやもう、後半だからおっさんかも知れぬ…
>>596 25の俺が断言する。25歳以上はオッサンだ。
599 :
デフォルトの名無しさん :2012/04/18(水) 18:49:33.16
dxlibきたw
年寄りくせえ
プロポーショナルフォント使わないと負けかなと思ってる
デリゲートってどんな時に使うんですか?
>>604 コントロールのイベントとかデリゲートでしょ
デリゲートってどんなときに使うんですか?
デリゲートってどんなときに使うんですか?
汎用的な自作ライブラリでも作れば、嫌でも使うことになる代物。
デリゲートってどんなときに使うんですか?
デリゲートってどんなときに使うんですか?
毎日毎日荒らしの相手をしてやってるからガキが調子づいてるんだよ もう触るな
馬鹿にはその忠告が理解できないのでループします
フォームに書き込んだ後リロードするんじゃねー!!!
は?
616 :
567 :2012/04/18(水) 19:22:04.07
皆様ありがとうございます。
こんな短時間で反応がいただけるとは思っていませんでした。
>>569 で示された複数言語での統一や、.NETのほうで定義されてるというところもなるほどと感じましたが、
当面は複数言語を扱う予定はないことと、
確かにshortとかstringは青色になり、C#の基本のデータ型としてはこちらだと感じられるので、
当面はshortとかstringとかを使用していこうと思います。
ありがとうございました。
C#みたいに記号がわりと多めの言語だと、 とうふくメイリオなんかも見慣れた形してる分わるくねえな。
>>558 すいません。e.Urlをabout:blankと比較してe.Cancel = trueとしてみましたが、どうしてもループしてしまい
正常なリクエストが返ってきません
派生クラスのメソッドが呼ばれた場合 まず基底クラスの同じメソッド名が実行されるような 処理をしたいんだけど方法ありますか? public void hoge() { base.hoge(); } こうするしかない?この部分を削ってスマートにしたいんだけど
暗黙的なら何でもスマートかって言われるとそうでもないと思うが
>>620 そうするしかない
C#にもデコレータ関数みたいのがあったらどうにかなったかもなー
>>620 それで十分スマートだと思うが。
基底が呼ばれたくなければ書かなきゃいいんだし
デコレータならIronPython
思うが思うがうっせーんだよ 心に秘めておいてください
ぬるぽ
i think i think
629 :
620 :2012/04/18(水) 21:02:36.93
そうでしたか、何かあったような気がしたけど気のせいだったか public virtual void Run() { //事前にさせておきたい初期化処理 //ループ開始 //キー入力受付 Logic();//派生クラスの実装部分 //ループ終了 //終了処理 } protected abstract void Logic(); 一応こんな感じで基底クラス作ったらいけた。 外部から基底クラスのRunを呼んでもらう感じ 変かな?
別に
どうでもいい
そうだね
なんか意味あんのかそれ
表示に関わる部分や毎回書くコードを削りたいなと だめですか?
別に
>派生クラスのメソッドが呼ばれた場合 と >ら基底クラスのRunを呼んでもらう感じ ここの整合性は?
結論: 自分しか使わないコードなら好きにしろ
Invalidateの中でOnPaintが呼ばれるようなもんだと思えば別に
639 :
620 :2012/04/18(水) 21:45:57.84
派生クラス呼ばれたら、基底クラスの同じメソッドが呼ばれる方法があると思ったのに それがなかったので基底クラスを呼んでもらうことにしたわけです そういう流れだったはずですが 簡単なFormクラスのようなものを作りたいなと form1でクリックイベントを取得できるのと同じような感じで
「基底クラスのほうを呼ばなきゃダメ」という俺ルールが適用できる範囲以外にコードが流出しなければ別に問題ないよという話
>>619 ループの意味がわからんしあなたのコードがどんなのかわからんけど
たとえばこのスレをブラウザでアクセスするとNavigatingは三回起きるけど
そういうのは理解してる?
いいんじゃないですか別に
馬鹿の一つ覚えか痴呆か?
644 :
620 :2012/04/18(水) 21:56:27.90
>>640 そこは気になります
自分専用って感じですね
>>473 そこに
-------
「文字列を連結する」では、複数の文字列を連結する時、連結演算子(または、String.Concatメソッド)で一度に連結した方が、StringBuilder.Appendメソッドで連結するよりも高速であることを紹介しました。
-------
って書いてあって笑えるぞ。
>>641 ごめんなさい
Navigatingイベントが3回あるのは盲点でした
対象のページは1回しか起きませんでした
この3回というのはframeの数ですか?
650 :
デフォルトの名無しさん :2012/04/18(水) 23:00:29.55
>>645 IL見比べれば分かる話。どうでもいい差にいつまでこだわってんだか。
StringBuilderはそんなくだらない差を縮めるためにあるんじゃない。
バッファを利用して重いインスタンス生成を端折るためのクラス。
間違った使い方をして速いだの遅いだのどうでもいい。
また今日も +派とStringBuilder派の争いがはじまるの? 勘弁してくれよ…
652 :
デフォルトの名無しさん :2012/04/18(水) 23:10:09.48
ほんとどうでもいい。 +派はどうでもいい差に拘ってる馬鹿。 StringBuilder派はMSDNに書いてる当り前のことを繰り返す馬鹿。
文字列処理がネックになるアプリってなんだよ
数ヶ月前に質問が出てたログをTextBoxに吐かそうとしてるプログラム
>>649 コードまで書いてもらって、ありがとうございます
インラインフレームの数だけ+α増えるんですね
657 :
298 :2012/04/19(木) 00:42:44.03
燃料は、燃料でもガソリンと灯油を間違えんな!
>>659 す、すげえ、確かに動いてる・・・!
期限は過ぎちゃったんで、もはや点にはならないけど・・・
そうか、IsCancelledで馬鹿正直にやるから混乱するのか・・・
それを契機に内部のフラグを立てて、それに応じてあっちこっちの処理を止めるわけだ。
なるほど、すごい参考になりました。遅い時間までおつきあいありがとうございます。
CancellationTokenの使い方の難しさは凄まじい・・・。
ちなみにこちらの実装は、
妥協に妥協を重ねて、独自実装(フォルダは先入れ、ファイルは後入れ)のQueueを作って、
シングルスレッドでファイルとフォルダを処理する(ので、厳密にはファイル処理中にはフォルダが処理されない。ファイル処理とファイル処理の間でフォルダの処理をする)
ようにして、そのスレッドをグルグル回してる。
スレッドはManualResetEventで止めておいて、Entryした時にSet、動き出したスレッド側で即座にReset、
キューされてるファイルをすべて処理し終わったらまたWait・・・としてる。
おまけにCancellationTokenが全然思い通りにならないんで、処理するクラス自体に「Cancel」メソッド追加してて、
元々の課題には全然そぐわないものに・・・
ダメだなあ。「課題にぴったりそえば得点」って言ってたし、俺のじゃ全くダメだ。
>>659 の方が適切かも。
CancellationTokenさえ入れとけばCancellationTokenSouceでCancelしたら Token入ってるとこみんなキャンセルされる っていうだけじゃないの?
>>662 「だけ」なんだが、その「だけ」を、色んな処理が入り乱れてる中で
あるべき姿に持っていくのはなかなか骨が折れるぞ
非同期処理系は、毎回毎回結構色々考えさせられる。
664 :
デフォルトの名無しさん :2012/04/19(木) 06:57:21.47
ExpressEditionでもチームプロジェクトって使えますか?
stringとString どっち使ったほーがいい?
まーた上司に無能って言われて憂さ晴らしか?
正恩氏冒涜と韓国非難=「無慈悲な報復」と威嚇−北朝鮮
【ソウル時事】朝鮮中央通信によると、北朝鮮の人民軍最高司令部報道官は18日、声明を出
し、韓国の団体や報道が平壌での軍事パレードに出席した金正恩第1書記を冒涜(ぼうとく)した
として「挑発者に無慈悲な報復の洗礼を与える」と威嚇した。
声明は「挑発の原点がソウルの中心であっても、その全てを吹き飛ばすための措置が取られ
る」と主張。「閲兵式で示された強力な手段がそのまま攻撃へとつながる」と警告した。
http://www.jiji.com/jc/c?g=int_30&k=2012041801062
ふーーん
このレスが役に立った? うん →うんこ
vb2010です。 フォーム上にあるkinokoというデータベースセットコントロールのなかに[キノコ]というテーブルが参照 できるようになっています。 このキノコテーブルは、"ID", "キノコ名", "食毒" と3つのカラムであり、食毒には0なら食用、1なら毒 といったふうにステータスコードが入ってます。 この時、このデータベースセットコントロールのこのテーブルに直接アクセスして、食毒が1のものを削除 するコードが書きたいです。 どのようなコードを書くと、削除できるようになりますか? ちなみにSQLでのDBからの直接削除はNGとなってます。(保存ボタンを押して初めて、データセットの 内容がDBに反映されるように仕組まれている為)
頭削除して死ね
674 :
デフォルトの名無しさん :2012/04/19(木) 12:26:27.35
>>672 宿題丸投げするなよ、しかもVBはスレ違い
>>674 すみません。vbじゃなくc#でした。
ちなみに宿題じゃありません。
DataAdapterにSQL定義するのも駄目なの?
677 :
デフォルトの名無しさん :2012/04/19(木) 12:52:29.72
>>675 仮にDB直接だろうが、トランザクション使えば問題無いでしょ
C#からエクスプローラーのファイルプロパティを表示する方法ありますか? VisualStudio内のプロパティの話しか見つからなかったんで Alt+ダブルクリックで出てくる奴です
679 :
デフォルトの名無しさん :2012/04/19(木) 14:53:11.26
>>679 できました!ShellExecuteEx使うんですね
ありがとうございました
>>676 SQLでの読み書きはできます。
メモリ上にロードしたデータセットの中で、色々データを弄って最終的に保存ボタンを押すと
MDBにマージするようにしなくてはいけないことになりまして。
直接読み書き以外のぶぶんでは、DataAdapterとBindingSourceによるデータの呼び出し
とデータセットへの書き込みを実現してます。
ちなみにプログラマーではありませんし、そういう会社でもありません。
>>677 それも考えたのですが、プログラムの仕様が、例えば、顧客台帳ならば、それにまつわる様々
なサブテーブルの内容を顧客IDでフィルタしたものを表示しなおしていたり、またその他の部分
では、なんとかかんとか、SQLをいかに使わないで実現するか?をやれてきたのですが、今回の
ところで壁にぶつかってしまいました。
この数時間個人的に考えたのが
・なんとか、関連するテーブルにある削除したいレコードのユニークIDをデータセット取得する
・ユニークID取得の為だけにdatarow[] rowsを定義してselectで該当レコード取り込む仕組み
・rows[0]["ID"]でUIDを取り出す。
・そのユニークIDをデータテーブル作って取込み、datarow.delete()で消す
書くには書いたのですが、汚いコード故見せるのも恥ずかしい限りです。
datasetへ直接レコードの固まりを入れる時にimportrowで入れられるのに、逆に条件で抽出
して削除なんてできる手段があればと思って相談しました。
ちなみに、保存する時は、TableAdapterManager.UpdateAll(this.mafdbset)みたいな感じで
一括で実行してまう。
682 :
デフォルトの名無しさん :2012/04/19(木) 17:26:55.33
何が分からないのか分からない。もう解決してんじゃないの?
683 :
デフォルトの名無しさん :2012/04/19(木) 17:44:47.45
お前は回線切ったほうがいいんじゃないの。 俺のほうが頭良いし。
汚いコード晒したら馬鹿にするやつがここには何人もいるからなあ
>>681 訳分からん
初めの言い分である
> この時、このデータベースセットコントロールのこのテーブルに直接アクセスして、食毒が1のものを削除
> するコードが書きたいです。
なら、単に目的のDataTableに対してDataTable.Selectで食毒=1の
DataRow取り出して一通りDeleteしてくだけだが
関連するテーブルだのユニークIDだのどっから出てきた
これに限ったことではないが 問題が再現する範囲で新規作成したプロジェクトに最小限のコードを書くと 問題の単純化や言語化が楽になるしソースもすぐに提示できる そうしているうちに自分で解決する場合も多いしね
「ソウル吹き飛ばす」 北朝鮮が韓国非難 正恩氏の顔写真切り裂きに 2012.4.19 08:19
北朝鮮の朝鮮人民軍最高司令部報道官は18日、金日成主席生誕100年の15日前後に韓国の保守系団体が
金正恩第1書記の顔写真を切り裂くパフォーマンスをソウルで行ったことなどを非難し、「たとえソウルの真ん中だといっても、
そのあらゆるものを吹き飛ばすための特別行動措置が講じられる」との声明を発表した。
朝鮮中央通信が伝えた。
最高司令部の声明は、韓国軍部隊で故金正日総書記と正恩氏の写真が2人を中傷する文言と共に掲示されていると
韓国で報じられた直後の3月2日以来。
この時は「聖戦を展開する」と主張し、その後李明博政権非難を続けた。
今回もパフォーマンスを口実に非難を続けそうだ。
18日の声明は「われわれの最高の尊厳」に手を出したと非難。
ほかに、韓国メディアの報道も正恩氏を冒涜したとし、世界で李政権だけが「祝いの雰囲気に冷水を浴びせた」とした。(共同)
http://sankei.jp.msn.com/world/news/120419/kor12041908200002-n1.htm
度々天皇陛下や総理大臣の顔や日の丸を 割かれたり焼かれたりしている日本も 本来はこのくらい強く出てもいいはずなんじゃないか
689 :
デフォルトの名無しさん :2012/04/19(木) 19:18:28.48
さあ
691 :
デフォルトの名無しさん :2012/04/19(木) 19:22:00.84
野田政権とStringBuilderはどっちが早いかって聞かれてもなぁ
IDのある板に移動しないか(提案)
シベリア
自分のメアドが業者に流れて迷惑メールきまくった気分だ 一時期毎日200件近く来てたけど
暗いと不平を言うよりも すすんで透明あぼーんしよう
ToolStripTextBoxのWidthが伸びないんだけどどうすればいい? ついでにHeightが高すぎてダサい
AutoSize = falseかな
702 :
デフォルトの名無しさん :2012/04/20(金) 00:22:33.60
自首しろ
俺もうプログラミングやめる
じゃ俺がやる
いやいや俺が って言えばいいの?
if(x+y<600 && x+y>0){} ; と i=x+y; if(i<600 && i>0){}; だとどっちがいい?
どっちでもいい
C#のコンソールアプリで、ユーザからの1文字のキー入力を改行を待たずに受け取る、 getch相当の処理は何を使えばいいでしょうか? 環境が.NET1.1という制限があるため、.NET2.0以降から追加されたConsole.ReadKeyが使えません。 Console.ReadやReadLineだとユーザが改行を押すまで処理が戻ってきません。 よろしくおながいします。
DX.WaitKey() ;
環境が.NET1.1という制限 なんかの罰ゲーム?
いまどき、.NET 1.1を使ってる時点で、まずそこを改善すべきだと思う。 MSも古いバージョンの.NETは、非推奨なのに。
>>707 当然後者。保守性が高いから。
この程度を即座に答えられるようでないとダメだな。
速度を最優先するならさらに高等テクニックがあるけど、
ふらっとスレでは気にする必要はない。
今日日のCPUで数クロック稼いでも仕方ないしな。
GetAsyncKeyState
オレの周りには、割り算を嫌ってシフトと引き算とかつかって書く人がいる…。 そんなのより見た目でわかりやすくなるように素直に割り算で書いてくれって言ってるのにやめない。 そのコード、一生お前がメンテしろよ。マジで。
コプロついてるから割り算のほうが速いと言ってやれ。
C#でそんなところにこだわったところで1ミリの差にもならんだろw
100万回ループしても?
100万回ぐらいループすりゃ別にしろ、 かけ算とわり算ごときの差を気にするならC#なんか使わずC++とか使えということだ。
ちなみに掛け算と割り算は糞思い処理な。 だから今時のCPUはどれもそれ専用のロジックが入ってる。c++使っても大して変わらん。 オープンソースとか見れば分かるが高速化が必要な部分は今でもアセンブラ。
質問をさせてください。 Doxygenを使用して、ドキュメント生成を行なっているのですが、enum型の個々の値 の説明が表示されないのはバグなんでしょうか? C++で試してみたところ、簡単に表示できたのですが、C#ではenum型の説明しかでず、個々の値の説明が無視されてしまいます。
723 :
デフォルトの名無しさん :2012/04/20(金) 04:11:51.07
Doxygenのスレってどこかになかったっけ?
納品用だろ? 表示されなくてもどうせ客は誰も読みやしないよ。
public string Count { public get; protected set; } エラーが出るんだけど
>>692 そういえば、なんでここIDが未だにナイんだろう
自演君でもってるようなもんだかんなこのスレ
ニコ生思想地図「『アーキテクチャの生態系』とその後」濱野智史×東浩紀
http://live.nicovideo.jp/watch/lv70969615 『「2ちゃんねる化」する世界のなかで、
「先進国」日本が果たすべき役割とはなにか?』
2010年創刊の新感覚言論誌『思想地図β』。
9月に刊行されたvol.2「特集:震災以後」は、
発行5日目にして2万7000部を達成し、
思想を扱う書籍としては異例の売り上げを記録中です。
同誌とニコ生とのコラボレーション番組『ニコ生思想地図』では、
編集長・東浩紀が、詩人の和合亮一氏、ジャーナリストの津田大介氏、
ドワンゴ代表取締役会長の川上量生氏など、
各界の著名人をお招きし、思想の未来を探る対談をお届けしてきました。
今回のゲストは日本特有の匿名集団による創造性に注目し、
その構造を分析した『アーキテクチャの生態系――情報環境はいかに設計されてきたか』(NTT出版)の著者で、
情報環境学者の濱野智史氏です。
『アーキテクチャの生態系』から3年。
ウィキリークス、ノルウェーテロ事件、反ウォール街デモなど、
ソーシャルネットワークの発達によって、世界が大きく揺れ動きつつあります。
2ちゃんねるに代表されるネットの匿名文化は、もはや日本だけの問題ではありません。
「2ちゃんねる化」する世界のなかで、
「先進国」日本が果たすべき役割とはなにか?
2ちゃんねるやニコニコ動画に代表される「匿名的・集団的な創造性」の未来は?
2012年刊行予定の『日本2.0 思想地図βvol.3』への展望を込め、徹底的に議論します。
知の最前線がここにある!
ニコ生思想地図をお楽しみに。
恥の最前線
>>726 public string Count
{
get;
protected set;
}
こうやろ
C#をつかっているのに、妙に速度にこだわってる奴いるな 速度がきになるなら、アセンブラ、Cで書けよ インタプリタは遅いのはしかたない
空っぽのcsファイルに、オリジナルの関数やらサブルーチンを詰め込んでいます。 Form1からこれらを呼び出す時に、このcs内のルーチンでForm1のコントロールを参照できるように したいのですが、Form1インスタンス生成時に、以下の様な形で、サブルーチン側でもForm1上の コントロールにアクセスできるようにすることはできるでしょうか? public pepsiman(Form1 fm) ⇒ サブルーチン側 Form1 kessaiman = new Form1(this) ⇒ Form1側呼び出しの部分 fmをPublicなFM1に格納して、FM1.cocacola.textといったようにアクセスしたいのでふ。
釣り?
サブルーチンってなんですか?
>>736 よくつかうコードなので、Formに書かずに単体のcsファイルに分離したものです。
Form1の内容をForm2からいじくるときはいつもこうやってthisで丸ごと渡してあげ
て、object型変数であるFM1に格納すると、直接いじれて便利だったのですが、
Formじゃない場合もこれでいいものなのだろうか?と考えたのです。
インタプリタw
新旧両方のそれぞれの固定資産に置ける減価償却費の計算をして、月毎にそれらを DBにレコードで突っ込んでくれるコードを自作しました。全部で2000行ほどのコードなの ですが、これをDLL化ってできますか?
痛いプリンタ
Perlのほう速いってものwのポイント灘
>>732 機械語で書けよ
なぜ自分のコードに特化したCPUを作らない?
Graphicsじゃ点を書くの用意されていないのか…
実行速度を早めたいが、生産速度は落としたくない
C#が生産性が高いなんていってる奴は、所詮フォームに既存のコンポーネントをポトペタしてる奴だろ ちょっと凝ったアプリを作ろうと思ったら、UIはほぼ Controlから派生させてつくることになるから VC++MFCと大差はない
それはどうかな
そりゃ凝ろうと思ったら何の言語だって手間かかるだろ ドット単位で見た目を通常・選択・ホバー・押下時それぞれ作るとか
748 :
737 :2012/04/20(金) 16:02:12.11
class simcalc : Form1 { public void pepsiman() { } } という具合に、Form1を継承させたら、Form1のコントロールにアクセスが簡単にできました。 ご迷惑おかけしますた。
VC#にDoc/ViewなりMVCなりを用意してほしかったな 自前で準備するのは結構手間だし・・・ MFCはその部分を作ることが不要だから、どっちが生産性が高いなんていえないだろ Form内にいろんなコレクションや配列なりをおいて、全てFormで完結させる人にはいいだろうけどw
>>750 他に考えつかなかったもので。
というのも、Form1にあるpepsiDataSetというコントロールがあるんですが(他にもテキストボックスなど)
の値を取得して、空で作ったクラスファイルの中で使いたいなって思ったもので。
そのままだと、Form1にあるpepsiDataSetにデータをimportrowできなかったので、これでいいかなって
思って。
Form2からForm1のを参照する時は、newで新しくForm2インスタンスを生成して、その時に引数とし
てForm1自身を渡せたのですが・・・クラスファイルの時は駄目でした。
なんか、本当はこうするっていういい手ってありますか?
>>750 ちなみにいま、C#を勉強し始めて、2週間くらいです。
TabPageを継承したクラスを作ってそれのデザインを フォームみたいにペタペタ貼り付けてする方法はないの?
Form1もForm2も別々のものと捉えたほうが良いので 直接、オブジェクトの引き渡しは、あまり良くないかもな。
1度やってみれば継承なんて数十秒で作れるくらい簡単なもんだけどな 値を1個追加で保持するだけでも 無理にTag使って作るよりはずっと楽だし拡張性もあるし
>>752 ユーザーコントロールを作って
ユーザーコントロールの中にペプシデータセット実装して
Formにそのユーザーコントロールを配置してあげればいいんじゃないかな
INotifyPropertyChangedとかデータバインドとか使えば・・・
何かめんどくさいことをやるにしても ゴミ言語でやるか神言語でやるかで 生産性に圧倒的な差が出てくるよね
なにを持って神というのか、なにをもってゴミというのかさっぱりわからんがな。
C#でゲーム作りって無謀なのかな SlimDX,DXLib,XNA,SharpDXスレどこも過疎ってる 趣味でちょっとしたもの作るならDxLibが多い感じ
C#/WindowsFormを使ってます。 ボタンを常にフォームの中央に表示したいのですが、どうしたらいいんでしょうか? フォームをリサイズされても、常にサイズを計算して中央にくるボタンです。 Resizeイベントを実装すればいいのは分かるのですが、できれば、Anchorプロパティみたいに簡単に実装できる方法を
>>762 無謀ということはないが、XNAならMSだし、たぶん安定?だと思うが、
何しろ情報がそんなに無いのがボトルネック。あってもMSDNぐらいだな。
DxLibとかは、一応C#でも使えるってところだけど、それなりに情報は、多い。
他は知らん。
>>762 Unity3D C# iPhone うはうは
ぶひひ
こういう時英語が読めれば大抵情報は集まる
高度なアルゴリズムの参考サイト探していたけど 日本じゃほとんどなく、海外で探したらサンプルソース付きで 丁寧な解説がすぐ見つかった
>>762 最近XNA始めたところだよ。
DX9で挫折した自分でも3角形書けたので、これからガシガシ作りたいよ。
現状、コード量C++の半分くらいですむし。
XNAの資料はWisdomSoftっていうページの奴を参考にしてる。
結構基礎のところで知らないといけないところから解説してるから、
自分は回り道しなくてよくてありがたい。
んで、C#でゲームを作りたがらないのは逆コンパイラ関係からじゃないかな。
初心者ほどコードを秘匿したがる。
ファームの上端にToolStripがあって左から順に ToolStripLabel ToolStripComboBox ToolStripButton と並べてある。フォームの幅が伸び縮みすると
>>771 恥ずかしいってのがあるのかもな。
自分のコードに確かな自信がないと公開したくなくなる。
特にこんなところで安易に公開しちゃった日には、どこからともなく、
叩きにくる人が這い寄ってくるからなw
ゲームの基本的な流れはあんまりかわらんからなあ めんどくさいのは環境依存の手続きだったりするし
俺は動けばいい派だから気にしない
>>773 勉強中なら恥はかき捨てでええやん
ログインIDがばれるわけでもないんだしましてや自演しまくれる
IDなしの板だぜ
まともな回答者がもっといい方法を教えてくれるかもしれないし
真ん中が伸び縮みするにはどうすればいい?
778 :
デフォルトの名無しさん :2012/04/20(金) 16:54:19.78
アンカーの設定で可能なんじゃね?
>>771 自分はC++はやったことがないのでどれぐらい楽かわからないけど
C++&DirectXの場合、デバイスの初期化などゲーム本体以外の部分で手間がかかるようですね
一応DxLibではクォータービューを作って、キャラを動かすぐらいはやった
XNAはゲームに特化していて面倒な手続きがライブラリで自動化できるようだし
何より今頑張ってるって人がいると自分もやりたくなった
XNAでやってみます
Form1_SizeChangedはフォームが出来上がる時のサイズ変更では呼ばれないの?
呼ばれない。というか、その時点で呼ばれる保証は、ない。 Loadイベントが発生した後でサイズが変更されれば呼ばれる。 それ以前は、フォーム自体が生成されていないのでサイズの変更イベントをキャッチしようがない。
なるほど
784 :
デフォルトの名無しさん :2012/04/20(金) 17:32:08.73
>>753 もう2週間勉強してください
それからまたいらっしゃい
ソフトウェア板に移動できないか?
あっちは、プログラミングは、論外じゃない?
あっち使う人 こっち作る人
よく知らないんだけど、頼んだら付けてくれるとかはなくて板ごとにあるなしが決まってるだけ? この話題はIDなし、他の板に移住したら板違いと批判されると
792 :
デフォルトの名無しさん :2012/04/20(金) 18:38:36.04
checkBox1.Checked == true ? "yes" : "no"; ってどういうことですか? ==があるから条件分岐かと思うのですが・・・
>>792 checkBox1.Checked == true が正しいなら"yes"正しくないなら"no"
三項演算子でググるといい
三項演算子
TreeViewをオーナードローしてます TreeNodeはDrawNodeイベントがあるのでそこで描画できますが それ以外のアイコンとか点線とか+-はどこでやってるんですか? Paintイベントもないようだし
796 :
デフォルトの名無しさん :2012/04/20(金) 18:46:40.24
ありがとうございました 条件分岐で探しても出て来なかったので助かりましたです
ID欲しけりゃ自分だけ節穴でもしとけよw
痛い子が識別できるかできないかじゃないか?
>>797 毎日荒らしてるお前をNG登録するためにみんな必死なんだよ^^
移動したい奴だけしてろ 回答する気があるのなら特に気にならん
1ピクセルでも動くたびにマウスオーバー受け取ってればそりゃあもう
803 :
デフォルトの名無しさん :2012/04/20(金) 20:23:17.79
>>802 マウスオーバーイベントというのはそういうもの
いやですからね 毎回描画する必要性ないでしょという
よく見ると引数無しのInvalidate連打じゃん豪気すぎる
807 :
801 :2012/04/20(金) 20:49:10.34
>>803 this.DoubleBuffered = true;と
this.SetStyle(ControlStyles.DoubleBuffer, true);の2種類試してみましたが残念ながら変化なしでした
>>805 マウスオーバーのノードが変化した時のみ
if文にてInvalidateをかけるようにしています
808 :
801 :2012/04/20(金) 20:56:54.17
Rx使えばいいよ。
810 :
デフォルトの名無しさん :2012/04/20(金) 21:07:43.50
>>810 ステマっていうかステルスでも無いし。
カエレ!(-_-
Finalizeされてしまえ!
813 :
デフォルトの名無しさん :2012/04/20(金) 21:34:11.46
見てないけどやっぱり短縮は業者か何かか こんな数人しかいそうにないところに文章考えて貼って大丈夫なの?
815 :
デフォルトの名無しさん :2012/04/20(金) 21:39:10.04
ステマじゃなくてさ、大音量で聞いて欲しかったわけよ まぁステマだと思われてもこの御時世じゃあしゃあないわな
Windowsソフトを作って一般に公開したいと思ってるんですが Express版って不特定多数に公開するソフトは作れるんでしょうか? ユーザー登録は済ませて評価版云々みたいな表示は消えたんですが 明確な許諾範囲の記述が見つからずこのまま学習を進めて良いのか不安です。
817 :
デフォルトの名無しさん :2012/04/20(金) 21:48:48.11
別に良かろうと悪かろうとExpressで作ったかとかわかるのかwww
特に問題ない。フリーでもシェアウェアでも問題なかったはず。 商業なら知らん。
enum Banana { irony, nexus, connect, naisho }; これって二つ以上の項目指定して渡したりできないの?
っ ビットフィールドフラグ。
821 :
816 :2012/04/20(金) 22:03:05.13
>817,818 ありがとうございました。
822 :
デフォルトの名無しさん :2012/04/20(金) 22:23:52.43
|= この演算子は一体どういう意味なのでしょうか
論理和して代入
824 :
デフォルトの名無しさん :2012/04/20(金) 22:32:13.64
ありがとうございます こんな演算子を日常的に使って初めてプロなんですね・・・難しい
>>819 var oreimo = Banana.irony | Banana.nexus;
void string or int hoge() こんなメソッドがほしい
827 :
デフォルトの名無しさん :2012/04/20(金) 23:56:57.62
hogeってどういう意味なん?
>>827 サンプルソースなどを書く際に変数に名称をその場限りでつける際に
よく使われてるだけ
なんでそうなったかっていうのはおっさんに聞いて
829 :
デフォルトの名無しさん :2012/04/21(土) 00:10:30.56
VB6かよw
>>826 オーバーライドで2つ作ればええんとちゃうの?
>>827 意味はない。という意味を持ったワード。
オーバーライドちゃうw オーバーロードや 同じ名前のメソッドで引数とか微妙に変更できるやろ
varじゃ駄目なの?
834 :
デフォルトの名無しさん :2012/04/21(土) 00:36:49.29
varはコーディングの時に型が決まっているから違うだろ てか、型が決まっているからバグが減らせるんだし、それに併せてコーディングするべきだわ
このスレに解答として出されるソースに高頻度でvarが使われてるけど 自分はC#じゃvarは全く使わないから なんでそんなに使いまくるのかわからない JavaScriptなら使いまくってたけど
836 :
デフォルトの名無しさん :2012/04/21(土) 01:01:33.95
C#のVarは万能型じゃなくて記述の省略だから、頻繁に記述しても破綻することはない 万能型はdynamicってのが.net4.0から導入された public dynamic hoge()ってメソッドなら、好き勝手な型を返すことが出来るけど、その使い方は余りお奨めできませんね
hoge = 名状しがたい
型名が書いてあるとレイアウトが見づらくなるし 型名は本質的な情報じゃないからソースの情報密度が下がってボヤける
そのかわり、変数名に intTmp などとするべき
dynamicを使う前に適切な型を使用可能かどうか、検討してみよう。 キャストしがたいならdynamicよりは、objectにでもしといたほうが…
変数名で数値だとわかるようにすればいいだけ システムハンガリアンとかただの害悪
ただでさえ変数名を詳しく書いて長くなる人は型名を名前に含めたくないんじゃないか
843 :
デフォルトの名無しさん :2012/04/21(土) 01:58:23.46
いや、判らなくなるほど変数を沢山使うなって方向で・・・
var BokuHaMosikasitaraStringGatakamosirenai=HelloWorld;
インターフェイスを使えばいいと思うんだ そしたら型に依存しないコードが書ける
まあ、インターフェースが無難だな。
847 :
デフォルトの名無しさん :2012/04/21(土) 02:14:17.71
abstractは今一人気無いな。俺は割りと使うが
意味不明 インターフェイスも型ですよw それにどういう文脈で唐突にそういう話になるの
型に付加できる型だから。
intTmp、なんて一番避けたい変数名だな。 ・悪しきシステムハンガリアン。 ・悪しき略語。Tempならまだしも・・・(Tmp・・・Temporary?Temperature?Temperament?) ・Temporary、だったとして、一時的な・・・?一時的ななんだよ。 そんな名前使って良い場面なんてそうそうねえだろ。
スコープの大きさによると思う
852 :
デフォルトの名無しさん :2012/04/21(土) 05:44:18.00
VB6のソースで、モジュール変数(1ファイル限定のグローバル変数)で1,j、jを割り当てて カウンター変数を共用しているの見たときは仰天したわw
>>852 For用でしょ?初期化されるから問題ないんじゃね
for i = 0 to 9
next i
>>853 呼び出し元でその i, j を使ってない保証がないのと、
スレッド安全性ェ…
VB6でスレッド? 何を言っているんだ
>>850 for(int i
i・・・iってなんだよ、愛?合い?空い 意味がありすぎるな
省略だとしてiから始める単語は
858 :
853 :2012/04/21(土) 08:19:51.41
>>855 あぁそうか。呼び出し元で使ってたら大変なことになるな。
変数のスコープは、できるだけ狭いほうが良い。
860 :
デフォルトの名無しさん :2012/04/21(土) 11:33:49.02
>>855 何故、それすっ飛ばしてグローバルのi,j,kが成立したかと言えば、
元コボラーの奴は、関数という概念を余り理解していなかったから、処理一つを巨大関数で組んでいたから・・・ああビックリした
俺なんてモジュールどころか完全にグローバルでループ変数あったぞ。 しかも呼び出し側と呼び出される側の両方の関数でFORで使ってんだよ、モジュールも別の関数で。 連携して変数書き換えて全体としてひとつのビジネスロジックになってんだ。 もちろんFOR以外の場所でも変数書き換えてて、 単純な2重ループとも全く違うループもどきの制御になってて。 きちがいかと思ったわ。 しかもそのループ変数は用途別に定義されてんだ。 例えば得意先コードでのループ専用ループ変数みたいに。 特定用途用のループ変数はそれひとつしかないから、 同じ対象での2重ループ以上のループは全部ひとつの変数できちがいじみた制御してた。
構造化プログラミング論争があったのってもう40年くらい前の話よね? その時代のコードでも現存してたの?
863 :
デフォルトの名無しさん :2012/04/21(土) 12:12:46.13
>>862 いや、その40年前に作ったコボラーのコードを、そのままVB6に移植したというコードが
偶にこの業界には存在するんだわ
864 :
デフォルトの名無しさん :2012/04/21(土) 12:19:29.20
>>836 >万能型はdynamicってのが.net4.0から導入された
初めて知ったw、情報ありがとう
そのdynamic型ってVBのvariant型と同じようなものなの?
どちらかというと、Javascriptのプロトタイプみたいなもの
>>684 C#の構文上は型に見えるけど、実際には動的コード生成してる。
一度生成したコードはキャッシュされてて、2回目からは結構高速。
あと、元々C#にない文字列→数値みたいなのの変換が自動でかかるわけではない。
なんでも入るというより「動作はオブジェクトに任せる」型だな 実行時に生成されるコードをMOPで自由に制御できるから かなりなんでもありなメタメタな型
本格的に使うなら、型にIDynamicMetaObjectProviderを実装して、 DynamicMetaObjectを継承したクラスのインスタンスを返す このDynamicMetaObjectが実行時のコード生成を制御する役割を担ってて、 JavaScriptのプロトタイプのようなことができる(プロトタイプより遥かに強力だけど)
というかプロトタイプのような仕組みを自分で定義できる仕組みなんだよな やろうと思えばJavaScriptのオブジェクトシステムを模したものを C#で実現することもできる
StringBuilderの実行速度を気にしてた奴らの意見とは思えないな
しかし、インテリセンスの恩恵を受けられなくなるのが難点…
C#から透過的にExcelやブラウザ内のJavaScriptのオブジェクトを操作したり 関数呼んだりできるのにはちょっと感動する
dynamicキーワード自体は、
>>866 のように、動的コード生成。
多分、
>>865 の言う、JSのプロトタイプ的ってのは、
dynamicと一緒に使えば便利なIDynamicMetaObjectProviderとか、
その実装のExpandoObjectのこと。
クラスだけど値型にするにはどうするんだっけ?
IConvertibleの実装?ちょっと違うか?
値型はstruct(とenum)。 で、やりたいのはStringとかFontみたいな不変オブジェクト?
あ、structで定義してあるのかー サンプルいじってて、クラスと思ってnullにしたら値型ですと言われたんでブチギレちゃいました
昨日の相談室のMouseHoverの人とかもそうだけど、よく分かってない人は
手段(だけ)じゃなくてその目的から説明した方がいいよ。
初心者なんて手段の選択も間違ってるんだから。
>>878 なんか手段の話でしょ。
なんでそんなことをしたいと思うのかという目的を最初から書いた方が話が早い。
おk
「エロゲーで人間性失う」 円議員掲示板に批判数百件
「アダルトゲームで青少年は心を破壊され、人間性を失う」−。民主党の円より子参議院議員らが提出した
アダルトゲームの規制を求める請願に対し、同議員のインターネットサイトの掲示板に、数百件の批判的な意見が寄せられている。
http://mediajam.info/topic/493309
目的言うのは難しいなぁ そもそもなぜ値型なのかわかんないし 上の人が言っているように不変的だから?
通常、structになってるのは、サイズが小さくてコピーコストが低いもの。 パフォーマンス上の判断。 で、structなものに対してnull使いたければNullable型使う。 Tに対してT?ってやればOK。
understood
888 :
デフォルトの名無しさん :2012/04/21(土) 16:52:53.21
ソース出せとしつこく初心者に粘着して、ソースを出せば他の文句を言い出す 彼って何者なの?
ただのキチガイでしょ
>>888 それは、小学生時代とかにち○こ出せとか言いはってた奴らです。
>>888 という文句。
どっちかって言うと、あんたみたいな批判拒否症が一番馬鹿っぽい。
あるクラスを利用するために設定する場合、手順を使う側に強制することってできないのかな? コンストラクタに必要なすべての引数を渡せばいいけど、格好わるいし 使う側にインターフェイスを設定して実装するようにさせればいけるっぽい?
コンストラクタに入れずにパブリックセッターで入れるとか最高にかっこわるい 入れ忘れたらどうすんのって感じ
>>892 ファクトリーメソッドを実装。
コンストラクタは、private。
一時の不格好と、バグの可能性を天秤に掛けると自ずと解ると思うけど。
インターフェースを設定してどうすると手順を強制できるんだ? class Start{ public IDSetter SetID(int id){ return new IDSetter(id); } } class IDSetter{ int id; public IDSetter(int id){ this.id = id; } public NameSetter SetName(string name){ return new NameSetter(id, name); } } new Start().SetID(id).SetName(name)... こんな感じ?
SplitContainerのような子コントロールを持ったカスタムコントロールMyControlを作りました。
デザイン時にMyControlをフォームに貼り付けて子コントロールの背景色を変えたときに、
Ctrl+ZでUndoできないのですが、どうすればできるようになるのでしょうか?
ちなみにSplitContainerの場合はPanel1の背景色を変えてもUndo出来ます。
ttp://ideone.com/VPhnm
>>892 一般的には、オプションセットなパラメータを受け取るコンストラクタを用意するか、
ビルダークラスを別途用意する。
ファクトリーメソッドの記事を読んできた 引数として渡される型は不変だけど、工程が場合によって変わるので使えるかもしれない 工程の違いごとにサブファクトリを作っていく感じかな
ああ、あんま強制にはならんな。
>>898 その方が楽そうですね
とりあえずそれでやってみます
使う側が必用に応じて設定するパラメータなら強制する意味がない。 それがないと正常に動作しないパラメータ(恐らく他のオブジェクトへの参照) がコンストラクタの引数にするのに躊躇するほど多数あるなら、たぶん設計が間違ってるんじゃないの?
パラメータが多い!パラメータを全部まとめて一つのクラスにせんか! って発想「だけ」でクラスが山のようにあるプロジェクトを思い出した。 パラメータが異常に多い時点で何かに気づいて欲しかったなあ。
MassageBox.Show()フルで指定すると長すぎ
メインクラスをサブクラス化して、データを個々のサブクラスで共有して 処理工程だけを別にしてみることにした
907 :
デフォルトの名無しさん :2012/04/21(土) 19:32:12.83
>>906 パラメータの指定をカンマの後で改行すればいいだけと気がつけばよかっただけじゃね?
環境ごとにほぼ固定なパラメータまで引数にしてたとか? クラスのプロパティやコンストラクタで変更できるようにすればすればすむじゃん、とか。
デフォルト引数使えば? .NET 4.0からだけど。
そういう簡単な問題じゃないんだよね パラメータが多いというよりも、作業工程が多いんだよ パラメータを全部渡すと、そのクラスが抱える作業工程が多くなる しかし一部だけ渡すと、作業工程は減るがクライアント側に適切な手順が求められる このパラメータは一連の作業の過程で得られるものなので ソースデータを処理して、結果を出し その結果から、また結果を出しという感じで 最終的にオブジェクトが大量にできる 一連の作業をメインクラスで全部やってから渡すか ソースデータを渡して、その結果をメインクラスで受け取って処理して それを作業クラスのメソッドに渡して、結果をもらうという感じになる
モデルクラスがソース受け取る ↓ ソースを元にモデルクラスが処理する ↓ それをViewへと送る ↓ Viewは表示する という一連の過程があって メインクラスは、この各工程ごとに適切なメソッドを呼び出さないと Viewに送った時にエラーが出る この一連の工程をメインクラスに強制するような何かか、 ソースを渡して、処理も表示もすべてやらせるかという話
モデルクラスのメソッドに作業をさせる場合 メインクラスではこのような処理になる でもこんな手順なんてすぐ忘れてしまう new model(source); model.処理1(); model.処理2(); model.処理3(); model.Show(); あと、考えられるのは、処理2に渡すオブジェクトを 処理1で返した特別な型のオブジェクトでないと受け取れないようにするとかしか思い浮かばない
914 :
903 :2012/04/21(土) 20:09:59.20
異常に、の一言で片付けてるから伝わりづらいけど、 メソッドはすべてstatic in static class。 static classはメンバを持ってはならない。 static メソッドの引数が多く(具体的な基準値はない)なるなら、 それらをすべてclassで内包しろ、とかいうルールでやらされたんだわ。 そら普通にやったら引数も多くなるわ、と思いながら。
915 :
903 :2012/04/21(土) 20:14:16.86
ああ、そういや「パラメータのカンマ区切りで改行禁止」なんてルールもあったな。 「どこからどこまで一つの処理か分からなくなるだろう!」とかなんとか。
>>915 それ大手メーカーの仕事を請け負ってるか、上司が大手メーカー出身とかじゃないの?
917 :
903 :2012/04/21(土) 20:17:04.69
マッサージボックスでフル
919 :
903 :2012/04/21(土) 20:23:20.40
IDない板だと偽称も容易だねえ。ま。いいや。
920 :
903 :2012/04/21(土) 21:32:32.09
ん?
>>914 classで内包もいいけど
そのクラスのコンストラクタがどうせエライことになるんだろ?
922 :
デフォルトの名無しさん :2012/04/21(土) 22:54:08.18
てst
>>921 甘いな。
コンストラクタはデフォルトコンストラクタのみ。
publicメンバー変数しか持たない。
925 :
デフォルトの名無しさん :
2012/04/22(日) 03:37:16.73 Facadeクラスでも作ればいいのに