ふらっとC#,C♯,C#(初心者用) Part57at TECH
ふらっとC#,C♯,C#(初心者用) Part57 - 暇つぶし2ch1:デフォルトの名無しさん
10/03/20 02:15:38
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

ふらっとC#,C♯,C#(初心者用) Part56
スレリンク(tech板)


関連スレ
C#, C♯, C#相談室 Part55(実質56)
スレリンク(tech板:1番)

VB.NET質問スレ(Part33)
スレリンク(tech板:1番)

C++/CLI part3
スレリンク(tech板:1番)

2:デフォルトの名無しさん
10/03/20 02:20:14
コードの量が多い場合は下記サイトを使うなどしたほうがいいかも

URLリンク(codepad.org)

コードを貼り付けてRun codeのチェックをはずしてsubmitボタンを押すと
コードを鯖側にアップして専用のアドレスが発行されます。

3:デフォルトの名無しさん
10/03/20 10:36:08
OrderedDictionary

4:デフォルトの名無しさん
10/03/20 17:31:58
>>1
関連スレの更新忘れ

C#, C♯, C#相談室 Part55 (実質57)
スレリンク(tech板)

紛らわしい。いつになったら正しいスレ番になるのかと

5:デフォルトの名無しさん
10/03/20 17:46:26
メンバ変数の値が変更されたらイベント処理をするようなのをしてみたい
TextChangedイベントみたいな感じ

6:デフォルトの名無しさん
10/03/20 17:59:35
.....というチラ裏?

7:デフォルトの名無しさん
10/03/20 18:04:01
してみたいのでさせてください

8:デフォルトの名無しさん
10/03/20 18:06:17
どうぞ

9:デフォルトの名無しさん
10/03/20 18:09:43
デリゲート、マルチスレッド、イベント
ごちゃごちゃになってどれ使えばできるのかよくわかりません
教えて

10:デフォルトの名無しさん
10/03/20 18:12:30
いいよ

11:デフォルトの名無しさん
10/03/20 18:16:47
イベントとデリゲートの関係は、イベントを宣言するときに簡略記法使わずに
addアクセサとremoveアクセサを自分で実装してみるとよく理解できる

12:デフォルトの名無しさん
10/03/20 18:21:33
>>11
イベントは呼び出し側は追加と削除しかできない
そういう違いはだいたいわかったんだけど
いざ応用しようとするとまったくわからない

ある変数の値をフォームに表示するために
値が変更されると値を表示するメソッドを毎回書いていたんですけど
もしかしたら、TextChangedのようにデリゲートを使えば
わざわざ表示メソッドを毎回書かなくてもいいんじゃないかと気づいて
調べていたんですが、むじゅかしくて・・・

13:デフォルトの名無しさん
10/03/20 18:26:45
そういうのはINotifyPropertyChangedを実装してバインドしてしまえば更新処理不要

14:デフォルトの名無しさん
10/03/20 18:47:33
レベルが高すぎて理解できません

15:デフォルトの名無しさん
10/03/20 18:51:43
あきらめろよ。

16:デフォルトの名無しさん
10/03/20 19:14:08
>>12
普通にプロパティじゃだめなの?

17:デフォルトの名無しさん
10/03/20 19:19:36
>>16
そういえばプロパティで出来そうですね
でもプロパティをそういうふうに使ってもいいんですか?
それとクラス内部で使うだけの変数なので
プロパティをするというのも違うような
やはりイベントだと思うんですよ

18:デフォルトの名無しさん
10/03/20 19:21:00
イベントを使うにしても結局プロパティで地道にチェックしてイベント発生させるんだよ

19:デフォルトの名無しさん
10/03/20 19:41:12
イベントでそれっぽいの実現してるソースみたけど
結局別のクラスのプロパティでメソッド呼び出して
メインクラスのイベントハンドラ呼び出しているだけですね

ってことはプロパティにそのまま書けばいいだけか・・・

20:デフォルトの名無しさん
10/03/20 19:45:16
しかし、>>9のレスにマルチスレッドが出ているのは不思議だと思った。
他の二つはわかるけど

21:デフォルトの名無しさん
10/03/20 19:46:01
>>19
あまり良い設計じゃないな

22:デフォルトの名無しさん
10/03/20 19:49:15
イベントとデリゲートってどんな関係があるの?

23:デフォルトの名無しさん
10/03/20 19:50:09
デリゲート経由でイベント呼び出しなんじゃね?

24:デフォルトの名無しさん
10/03/20 19:52:04
windowsのイベントってOSが呼び出しする物なので非同期
クリックされたとかイベントが起きたときに特定の関数を呼んでもらった方が効率がいい

呼んでもらいたい関数を教える際に使うのがデリゲート
Cだとコールバックとか言ってた

25:デフォルトの名無しさん
10/03/20 19:52:58
イベントは
・イベントハンドラを登録するメソッド
・イベントハンドラを削除するメソッド
をひとまとめにしたもの。プロパティみたいなもん。
addとremoveを省略してevent EventHandler Hoge; の形式で宣言する場合は
自動実装プロパティと同じでデリゲートやメソッドが自動生成される。

26:デフォルトの名無しさん
10/03/20 19:54:48
まあ別にしらなくてもぷろぐらむは作れるからいいか

27:デフォルトの名無しさん
10/03/20 19:55:23
デリゲートの説明で一番わかりやすかったのが

デリゲートはメソッドをオブジェクトのように使うもの

そう考えるとすごくわかりやすかった
でも、クラス使えばできることをなぜわざわざするのかというと
やっぱり、マルチスレッドかイベントぐらいしか使い道ないような感じ

28:デフォルトの名無しさん
10/03/20 20:00:29
>>27
はじめは>マルチスレッドかイベントぐらいしか使い道ない と想定されてたから
マルチキャストとか変なところがあるけど最近はラムダ式などで積極的に活用されてる

29:デフォルトの名無しさん
10/03/20 20:02:38
ひょっとしてサブスレッドからメインスレッドに処理の終了を
知らせることができるのか!!

30:デフォルトの名無しさん
10/03/20 20:02:50
>はじめは>マルチスレッドかイベントぐらいしか使い道ない と想定されてたから
だから、前にも書いたがそれはない。
寝ぼけたことをどや顔で繰り返さないように。

31:デフォルトの名無しさん
10/03/20 20:04:31
>>29
とりあえずバックグラウンドワーカーコントロールでも使ってこい

32:デフォルトの名無しさん
10/03/20 20:08:05
俺も初心者だけど、このスレのレベルにワロタ

33:デフォルトの名無しさん
10/03/20 20:11:29
>>31
使ってみた!すげーーー!

いつの間にこんなコントロールが!

34:デフォルトの名無しさん
10/03/20 20:16:03
と思ったらわざとだろお前wwしらじらしいww

35:デフォルトの名無しさん
10/03/20 20:17:52
わざとじゃねーよw
スレッド作ってメインスレッドからタイマーで見てたよw

36:デフォルトの名無しさん
10/03/20 20:19:37
>>35
スレッドからスレッド名前空間のタイマ?
それって二重になってるんじゃ・・・・

37:デフォルトの名無しさん
10/03/20 20:29:38
この間どっちかのスレでこんなのもあったな
URLリンク(codepad.org)

38:デフォルトの名無しさん
10/03/20 20:39:06
で、結局、変数の値が変更されたら
自動でform.Textの値を変更してくれるのは
どう書けばいいの?

39:デフォルトの名無しさん
10/03/20 20:46:52
今まで出た感じで好きなように


40:デフォルトの名無しさん
10/03/20 20:59:27
textboxだっけ?
あれって中身が変更された~とかそんなイベントなかったっけ?
それで監視するしかないよね

41:デフォルトの名無しさん
10/03/20 21:02:44
なんでもバインドしたけりゃWPFだな

42:デフォルトの名無しさん
10/03/20 21:06:03
>>40
メンバ変数つってんだろ
textbox関係ないだろ

43:デフォルトの名無しさん
10/03/20 21:08:56
そろそろ死ねよ。

44:デフォルトの名無しさん
10/03/20 21:16:26
>>43
お前は寂しい人間だな
昨日から用もないのにこのスレに来ては煽るだけ
お前の人生が不幸だからって他人に八つ当たりするな

45:デフォルトの名無しさん
10/03/20 21:23:09
やばい。できた
    public partial class Form1 : Form
    {
        int hoge = 0;
        int i = 0;
        public Form1()
        {
            InitializeComponent();
        }
        private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            textBox1.Text = hoge.ToString();
        }
        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            backgroundWorker1.ReportProgress(i++);
            System.Threading.Thread.Sleep(2000);
            hoge = 2;
            backgroundWorker1.ReportProgress(i++);
        }
        private void button1_Click(object sender, EventArgs e)
        {
            backgroundWorker1.RunWorkerAsync();
        }
        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            backgroundWorker1.WorkerReportsProgress = true;
        }
    }

46:デフォルトの名無しさん
10/03/20 21:24:50
>>45
>>2使えよw

47:デフォルトの名無しさん
10/03/20 21:25:40
昨日は来てねーよ。
頭おかしいんじゃね?

48:デフォルトの名無しさん
10/03/20 21:25:58
>>46
おぉ!
すげーーー!

49:デフォルトの名無しさん
10/03/20 21:26:45
何がしたいんだよ。このコード。

50:デフォルトの名無しさん
10/03/20 21:27:44
初めての非同期で感動するコードだろ


51:デフォルトの名無しさん
10/03/20 21:27:46
素直にプロパティでチェックしてイベント発行するべき
わざわざスレッド使うとか初心者スレで間違ったやり方出すなよ

52:デフォルトの名無しさん
10/03/20 21:30:26
初めてのマルチスレッドか。

今度は何か意味のあるコードで頼む。

53:デフォルトの名無しさん
10/03/20 21:31:03
あれ? この場合、Invokeしないでいいの?

54:デフォルトの名無しさん
10/03/20 21:31:04
>>37で十分だろ

55:デフォルトの名無しさん
10/03/20 21:32:57
>>53
そういうの意識しなくていいから初心者にもやさしい


56:デフォルトの名無しさん
10/03/20 21:33:14
素直なつくりにできないのって大概は仕様や設計が悪いんじゃないの?

57:デフォルトの名無しさん
10/03/20 21:33:17
うん

58:デフォルトの名無しさん
10/03/20 21:34:24
へー。使ったことなかったけど、BackgroundWorkerって便利なんだな。

59:デフォルトの名無しさん
10/03/20 21:40:17
ああ間違えた
これテンプレにしとけ
毎度応えるの面倒

Form間のデータの受け渡しサンプルコード
URLリンク(codepad.org)

スレッド、デリゲート関連のサンプルコード
URLリンク(codepad.org)

Radiko
URLリンク(codepad.org)

60:デフォルトの名無しさん
10/03/20 21:42:51
>>58
まあな

61:デフォルトの名無しさん
10/03/20 21:44:10
hogeを他で使うならlock大丈夫か

62:デフォルトの名無しさん
10/03/20 21:45:44
>>38

63:デフォルトの名無しさん
10/03/20 21:47:13
テンプレにはいらんだろ。

64:デフォルトの名無しさん
10/03/20 21:53:47
>>62
変数の値が変わるのはサブスレッド側でわかるんだから
>>45でできるやん。
俺って天才かも。

65:デフォルトの名無しさん
10/03/20 22:01:19
BackgroundWorkerなんか便利なものか。
スレッドがよく分かってない奴でもなんとなく使える、という以上のメリット(本当にメリットか?)
は何もないだろう

66:デフォルトの名無しさん
10/03/20 22:03:25
超メリットだよ
ただ馬鹿に仕事取られるということでもあるけどなw

67:デフォルトの名無しさん
10/03/20 22:05:20
>>65
時代遅れになっていくやつの典型的な反応だな

68:デフォルトの名無しさん
10/03/20 22:07:40
アセンブラ厨と言ってることが変わらないよね

BackgroundWorkerをC#に、Threadをアセンブラに変えても成立してしまうw

69:デフォルトの名無しさん
10/03/20 22:15:09
>>67
むしろ、言いたくないが君のようなのがいわゆる「VB厨」の典型的反応でしょ。
BackgroundWorkerって典型的な「VB厨」向けツールだよ。

彼らは言うんだよ。「便利なものは便利に使わせていただく」ってw
お前便利だから使ってるわけじゃなくて、それしか使えないんじゃねえの、って。

70:デフォルトの名無しさん
10/03/20 22:16:05
>>69
はいはいパンチカードに穴あける作業に戻ってねオジーチャン

71:デフォルトの名無しさん
10/03/20 22:17:39
C++やJavaでもマルチスレッドプログラミングしてたけど
BackgroundWorkerは便利だよ

72:デフォルトの名無しさん
10/03/20 22:17:47
年寄りはおとなしくタイプライター叩いててくれ。

73:デフォルトの名無しさん
10/03/20 22:18:55
普通に明示的にスレッド起動した方がよほど分かりやすい、
と標準的なプログラマなら感じると思うけどね俺は。

74:デフォルトの名無しさん
10/03/20 22:19:45
結局お前が思ってるだけじゃん。
何が標準的(キリッだってのw

75:デフォルトの名無しさん
10/03/20 22:20:17
この怒涛のレスの雨は久しぶりに見たぞwww

76:デフォルトの名無しさん
10/03/20 22:20:20
伸びてると思ったら・・・・

77:デフォルトの名無しさん
10/03/20 22:20:55
phpをdisってる人と同じ匂いがする

78:デフォルトの名無しさん
10/03/20 22:22:00
>>69
VBが出た時、beginner's toyと言われていたけど、今や、どれもこれも真似してるよな
そういうハッカー気どってVB馬鹿にするのは、COMコンポーネントをCでストレスなく作れるようになってから言ってくれ

79:デフォルトの名無しさん
10/03/20 22:22:56
わざわざ遠回りな方法をとるアテクシカコイイみたいな。

スレッド使いこなしてデキるプログラマ目指そう!
モテカワマルチスレッドの嗜み方教えちゃいます特集号

みたいな。

80:デフォルトの名無しさん
10/03/20 22:23:59
>>78
VBを馬鹿にしてないって。
「VB厨」を馬鹿にしてるの。だからわざわざカギ括弧付けてるんじゃないの。

81:デフォルトの名無しさん
10/03/20 22:24:11
おっさん調子乗ってんなよ^^

82:デフォルトの名無しさん
10/03/20 22:25:41
とはいっても>>68を否定できないよねw

83:デフォルトの名無しさん
10/03/20 22:25:48
BackgroundWorkerがいやならC#も嫌なはず

84:デフォルトの名無しさん
10/03/20 22:26:48
>>80
じゃあさっさと>>62答えろよ

85:デフォルトの名無しさん
10/03/20 22:28:12
>>64
お前はイベントとマルチスレッドの違いもわからないカス

86:デフォルトの名無しさん
10/03/20 22:28:44
まあ御託はいいから、そんなにBackgroundWorkerが便利だと思うのなら
普通にスレッド起動した場合と比較したメリットをちゃんと言ってみろって。

言えやしないだろうそんなもの。
無い者を言えるわけがない。

さすがにいくら面の皮が厚い馬鹿でも「理屈が分かってない馬鹿なボキュにも使えることがメリット」とは
言いづらいもんねw

87:デフォルトの名無しさん
10/03/20 22:29:21
まあまあ喧嘩しないしない
使いたいの使いなさい

それより仕事をしなさい

88:デフォルトの名無しさん
10/03/20 22:30:24
>>86
早く>>68を否定してみろよ
否定できないならC#使うのやめて機械語に帰れ

89:デフォルトの名無しさん
10/03/20 22:32:54
>>86
単にフレームとして一連の処理の流れが実装してあることがメリットだろう。
IListそのものがListより便利だとは言わないでしょ。
実装が無いんだから。

90:デフォルトの名無しさん
10/03/20 22:34:04
>>86
理屈がわからなければを繰り返していくと、最後は量子力学か神学までいくから理屈がわかってないバカ議論は不毛
もう化石だな

91:デフォルトの名無しさん
10/03/20 22:34:23
>>86
簡単に使える、ってのは大きなメリットだろ。

92:デフォルトの名無しさん
10/03/20 22:35:03
>>86
馬鹿でも使えるのは超メリットだと初めに言ったはずだが
そこから否定されても困るね
何言ってんのお前

93:デフォルトの名無しさん
10/03/20 22:35:04
>>88
意味不明な命題を否定も肯定もしようもないと思うけど。
なぜBackgroundWorkerがC#に、スレッド起動の方法がアセンブリ言語に対応するのか
サッパリ理解できん。

馬鹿の議論はいつもこれだが、馬鹿のお前さんの思いつきを俺が共有してるわけないじゃん。
これがセカイ系か。

94:デフォルトの名無しさん
10/03/20 22:35:39
簡単だから嫌いってもうね。
自分は特別な人間だと思ってるやつの典型だね。

95:デフォルトの名無しさん
10/03/20 22:35:40
>>88-92
死ねよおめーらwww

96:デフォルトの名無しさん
10/03/20 22:36:09
ワロタ

97:デフォルトの名無しさん
10/03/20 22:37:20
初心者向けスレで、顔真っ赤にすんなよ。

98:デフォルトの名無しさん
10/03/20 22:37:47
お前ら落ち着け

99:デフォルトの名無しさん
10/03/20 22:39:14
>>98
お前も落ち着け

100:デフォルトの名無しさん
10/03/20 22:39:30
こいつと同じ臭いがする。
勘違い職業マ。

678 名前:以下、名無しにかわりましてVIPがお送りします[] 投稿日:2010/02/08(月) 13:05:38.59 ID:V+MiXXPeP
>>674
その手段を自分で想像出来ないヤツが結果を出せる訳無いよな

>>675
いきなり素人が5つ星のフランス料理作れるとしたら、誰か経験のある人が代わりに作ってあげたキットを再利用するか、
あるいはボタンを押せば出てくる装置を使うしかない。 もともとプログラミングって、技術職の仕事だ。
みんな欲しいのは技術じゃないのかと。 結果が欲しいだけなら巷に転がってる完成品使えばいいだけ

昔も今も見よう見まねから始まるのは変わらないだろうけどな。 でもコピペは見真似にすらならね

101:デフォルトの名無しさん
10/03/20 22:39:33
今日はアンチMSのスレが伸びてないと思ったが、こっちで喧嘩してたのかw

102:デフォルトの名無しさん
10/03/20 22:40:21
へー

103:デフォルトの名無しさん
10/03/20 22:41:08
VIPで死ね

104:デフォルトの名無しさん
10/03/20 22:41:14
反論したかったら、BackgroundWorkerの致命的な欠点を言わないとな
簡単なことにThreadを生で使った方が問題引き起こすと思うけどな

105:デフォルトの名無しさん
10/03/20 22:41:22
その「簡単な方法」では搭載しきれない仕様が降ってきたときに
ちょっと苦労するか、沢山苦労するか、逃げ出すか、の違いだしょ?

いいじゃん、選ぶのは自分なのだし。

106:デフォルトの名無しさん
10/03/20 22:42:42
>>86じゃないけど
Suspendできないのがちょっと面倒だったカモ

107:デフォルトの名無しさん
10/03/20 22:43:04
カモネ

108:デフォルトの名無しさん
10/03/20 22:43:39
かーもね

109:デフォルトの名無しさん
10/03/20 22:44:04


110:デフォルトの名無しさん
10/03/20 22:45:01
>>65
使えるものは使う てひとはそれでいいじゃん
まぁ同じくらいのもの実装しても大してめんどくさいものではないけどね



111:デフォルトの名無しさん
10/03/20 22:45:08
>>77>>100
ディスプレイとキーボードと部屋掃除しろ

112:デフォルトの名無しさん
10/03/20 22:46:47
勢いが板でトップになってるから何事かと思ったら

113:デフォルトの名無しさん
10/03/20 22:48:06
>>110
いいじゃんね

114:デフォルトの名無しさん
10/03/20 22:49:05
2番目に勢いのある
【超高速】C/C++に代わる低級言語を開発したい
の倍いってるじゃねぇかwwwww


115:デフォルトの名無しさん
10/03/20 22:53:14
お前ら落ち着いて落ち着いて死ねなの~

116:デフォルトの名無しさん
10/03/20 22:57:26
すべてRuby厨の仕業

117:デフォルトの名無しさん
10/03/20 23:00:16
まんまと釣られたということだよ。
言わせんな恥ずかしい。

118:デフォルトの名無しさん
10/03/20 23:01:05
ID欲しいよね・・・

119:デフォルトの名無しさん
10/03/20 23:02:19
ID出たら真っ赤になってそうだなぁ

120:デフォルトの名無しさん
10/03/20 23:08:36
書いてんの2人くらいだろ

121:デフォルトの名無しさん
10/03/20 23:10:26
>>120
の会話ですら赤字になってる人の発言かもしれないと疑ってしまう自分


122:デフォルトの名無しさん
10/03/20 23:14:40
Dr林にご相談ください

123:デフォルトの名無しさん
10/03/20 23:16:16
>>115の発言が最近やったエロゲキャラのしゃべり方と似ててちょっと燃えた
いや萌えた

124:デフォルトの名無しさん
10/03/21 00:02:57


125:デフォルトの名無しさん
10/03/21 00:58:47
(´・ω・`)ショボーン

126:デフォルトの名無しさん
10/03/21 01:16:21
スレッドプールで十分なら極力そちらを使うべきではあるが、
専用スレッドを用意するメリットがあるなら使えばいいだけの話だろ

因みに、ThreadPool、Delegate.BeginInvoke、BackgroundWorker、
Forms以外のTimer、多くのコンポーネントの非同期操作(~Async)などの
スレッドプールを使っているものなら多用しても問題はない

逆に、なんでもかんでもThreadを使うのは論外

>>106
中断のための機構は自前で用意すべきもの
Threadならイベントオブジェクト使って適当な間隔でチェックするだけだし、
ThreadPoolなら処理を細切れにしてキューに入れるタイミングを制御する

127:デフォルトの名無しさん
10/03/21 03:13:28
Thread明示的に使ったってどうせ同じようなことを自分で実装するんだから、
あるもの使う方が手っ取り早いだろう。
それにいちいちスレッド作るよりThreadPool使う方が一般に望ましい(常にとは言わない)のは常識。


128:デフォルトの名無しさん
10/03/21 03:56:43
知識0の状態からFF11のツール作るためにC#の勉強をしたいのですが
参考になるサイトやこれは買っとけ的な本は何ですか?

129:デフォルトの名無しさん
10/03/21 03:58:53
言語はどうにでもなるだろ
周辺ツール作る場合はゲーム側の独自仕様をどれだけ集められるかだと思うよ

130:デフォルトの名無しさん
10/03/21 04:22:07
FF14にしましょう

131:デフォルトの名無しさん
10/03/21 05:56:19
windows formのスレがないのでここで聞いても良いでしょうか。

formでGUIを作っています。
アプリケーション全体からメッセージを表示させるtextboxを追加したいです。
コンソールのプログラムでいう標準出力です。
どうやConcoleクラスがそれに値するようなのですが、これをどうtextboxに表示するのかわからないです。

textBox1.Text = System.Console.Out.ToString();
としても、textboxには「System.IO.TextWriter+SyncTextWriter」と表示されるので違うようです。

何かヒントをください

132:デフォルトの名無しさん
10/03/21 06:19:39
やーだお

133:デフォルトの名無しさん
10/03/21 06:23:23
うーむ
なんでこの手の話題は繰り返すんだろうw

スレッド、デリゲート関連のサンプルコード
URLリンク(codepad.org)

これの応用でできるんじゃないかな?

134:デフォルトの名無しさん
10/03/21 06:24:45
Console使うなら、
TextWriterから派生させたクラスを作って、
WriteメソッドとかをオーバーライドしてTextBoxに出力するようにして、
Console.SetOutで設定すればいいけど。

135:デフォルトの名無しさん
10/03/21 09:03:12
>>133
誰に言ってんの??


136:デフォルトの名無しさん
10/03/21 09:05:50
>>133-134
ありがとうございます。
単語を調べて一つ一つ確かめてみます

137:デフォルトの名無しさん
10/03/21 09:09:55
>>86
お前素人だろ


138:デフォルトの名無しさん
10/03/21 09:15:19
なんでBackroundWorkerをそんなに毛嫌いするのかわからん。
素人専用とでも思いこんでるのか?

素人に使いやすい設計になってるのは事実だが、
別にやりたいことにあってれば普通に使えばいいじゃん。
普通に使えるのにわざわざ自分で同じような処理を実装して、
でそれがThread明示的に作ってとか、マイナスにしかなってない。



139:デフォルトの名無しさん
10/03/21 09:20:00
用途に合ってなければ自分で制御するだけ、
誰も常にBackroundWorkerがいいなんて言ってないのにな。
まあそれでもThreadを自分で作ることはあまりないが。


140:デフォルトの名無しさん
10/03/21 10:14:40
まあそれでもThreadを自分で作ることはあまりないが。

141:デフォルトの名無しさん
10/03/21 10:16:41
今時代はスレッドプールですよ

142:デフォルトの名無しさん
10/03/21 10:31:31
スレッド温泉でゆっくりしたいなあ

143:デフォルトの名無しさん
10/03/21 10:32:07
スレッドプールって何?

144:デフォルトの名無しさん
10/03/21 11:01:50
次はParallel.Forですね
簡単といってもBackgroundWorkerとは違ってこちらはアカデミックな感じだが

145:デフォルトの名無しさん
10/03/21 11:02:22
ThreadPool

146:デフォルトの名無しさん
10/03/21 11:08:50
>>134
できました。
継承してオーバーライドって便利ですね。
勉強になりました。

147:デフォルトの名無しさん
10/03/21 12:50:25
まだ4.0の勉強してないんだけどParallel.Forとかって別CPUで処理させるんだよね?
いくつかParallel.Forで処理を同時にやってすべてが終わったかどうかのチェックはフラグかなんか持って
自分で管理しないとだめなのかな?

148:デフォルトの名無しさん
10/03/21 12:56:39
parallel.forとかすげーな
もうC++の時代は終わってるな

149:デフォルトの名無しさん
10/03/21 13:03:03
単純に適材適所でしょ
windowsなんかC/C++がなきゃ動かないわけだし

150:デフォルトの名無しさん
10/03/21 13:03:54
まぁGUIクライアントを書く言語としてはC#の方が向いてるね

151:デフォルトの名無しさん
10/03/21 13:22:21
>>147
並列ライブラリは直接使うとよほど単純なパターンを除くと非常にややこしいので、
Parallel Linqから使ったほうが簡単。
並列処理の結果を待つかどうかオプションで指定できる。

152:デフォルトの名無しさん
10/03/21 13:26:30
>>151
そんなの知ってるよ

153:デフォルトの名無しさん
10/03/21 13:27:50
>>151
なるほど
しかし、すげぇな・・・
4.0いろいろ贅沢な機能付きすぎだろ


154:デフォルトの名無しさん
10/03/21 13:29:06
>>152
自己紹介乙

155:デフォルトの名無しさん
10/03/21 13:32:13
並列ライブラリのforを本気で使おうと思ったらやたらと引数が多くなる。
1~10までを足すだけ。
int sum = 0;
Parallel.For(1, 10+1, option, () => 0,
 (i, parallelLoopState, s) => s + i,
 s => Interlocked.Add(ref sum, s) );
Console.WriteLine("sum = {0}", sum);


156:デフォルトの名無しさん
10/03/21 13:34:33
そんなの使わずマルチスレッドつかえよ
Parallel.Forなんて大して使えん
ループ内がそれそれ独立していなければ無理

157:デフォルトの名無しさん
10/03/21 13:37:16
((;゚Д゚)) 決めつけ無理……………!!!


158:デフォルトの名無しさん
10/03/21 13:37:34
結構使いにくそうだ…
でも・・・実装したからには何か目的が・・・・メリットがあるんだよな?


159:デフォルトの名無しさん
10/03/21 13:38:35
Parallelライブラリはコア数に合わせて並列数を調整してくれるところにある。
自分でスレッド作って調整するのは大変だぞ?

160:デフォルトの名無しさん
10/03/21 13:39:16
そうだね。

161:デフォルトの名無しさん
10/03/21 13:42:37
うん

162:デフォルトの名無しさん
10/03/21 13:50:06
>>155
そんな並列の意味が一切無い例出してどうすんのさ

163:デフォルトの名無しさん
10/03/21 13:52:50
>>162
お前に言われる筋合いはないから

164:デフォルトの名無しさん
10/03/21 13:53:04
もうちょっとMPIの様に透過的にだな・・

165:デフォルトの名無しさん
10/03/21 14:12:13
【春祭り 】また割れ厨のスクショと個人情報が晒されてるぞ避難所5
URLリンク(jbbs.livedoor.jp)

ICO - 国際著作権機構
URLリンク(warezer.net)

割れてる人は気おつけて

166:デフォルトの名無しさん
10/03/21 14:42:40
>>164
パラレルライブラリはOpenMP型で、MPI型のはAxum。
URLリンク(msdn.microsoft.com)
まだ研究段階っぽい。最終的にはC#に成果を吸収という流れだろうか。

167:デフォルトの名無しさん
10/03/21 15:21:20
>>147
ちゃんと Join する。
スレッドいっぱいたつけど、全部のタスクが終わるまで待ってくれる。

>>148
同時に C++ 向けにも並列処理ライブラリが追加されるけどね、VS 2010。
C++ の時代、分野次第だなぁ。
10年は前に終わってるとこもあるし、あと10年は使わなきゃいけないとこあるし。

>>155
そんな処理は Parallel LINQ の方がいいな。
あと、集計部分(+= するとこ)は並列化してもおいしくない。

>>164
pragma だらけってのは、標準化がどうこう言われてしまう C++ の苦肉の策だろ。


168:デフォルトの名無しさん
10/03/21 16:08:18
>>167
ほほぅ
キッチリ便利にはやってくれそうだなぁ…
3つの画像を同時に処理して終わったらその結果を判定して処理
とかやってるから単純なマルチスレッドでやるよりイイかもしれねぇ。。。
ちょっと期待したい

169:デフォルトの名無しさん
10/03/21 16:34:39
for文の前に属性書けたら楽そうだけど
[Parallel 4]
for(){
}
まぁ文法的に無理ぽ

170:デフォルトの名無しさん
10/03/21 16:38:36
ParallelOptionsのMaxDegreeOfParallelismが必要だね。
1コアの環境でoptionなしで使うとスレッドは使わずにメインスレッドで処理してしまう。

ParallelOptions option = new ParallelOptions() { MaxDegreeOfParallelism = 4 };
Parallel.Invoke(option, () => Worker("aaa"), () => Worker("bbb"), () => Worker("ccc"), () => Worker("ddd"));


171:デフォルトの名無しさん
10/03/21 16:48:43
並列処理とか……
ここは本当に初心者スレなのか?w

172:デフォルトの名無しさん
10/03/21 16:50:44
いいんじゃね?

173:デフォルトの名無しさん
10/03/21 16:56:30
まあ、Parallel.ForはちゃんとJoinしてくれるの?とか、結構初心者らしい質問な気もするが。

174:デフォルトの名無しさん
10/03/21 20:11:36
並列処理といってもこのていどは初級レベルだろう
まあ普通は初心者は並列処理を勉強しないものだけど、
勉強してみれば、このくらいは理解できるレベルだと思う

175:デフォルトの名無しさん
10/03/21 20:36:37
だね

176:デフォルトの名無しさん
10/03/21 20:39:48
並列処理の使い方を理解できるというより、
並列処理の必要性を理解する、ことになるのでしょうね。

必要と思えれば頑張れる、そういうもんでしょ、言語習得ってさ。

177:デフォルトの名無しさん
10/03/21 20:41:33
そして別スレッドからGUIコントロールにアクセスして怒られるんですね

178:デフォルトの名無しさん
10/03/21 20:48:12
もう・・・ぷんぷんっ

179:デフォルトの名無しさん
10/03/21 20:58:05
backgroundWorkerは自由度が低いから使いづらい

180:デフォルトの名無しさん
10/03/21 21:05:14
いつまでそのネタ引っ張るつもりだ

181:デフォルトの名無しさん
10/03/21 21:16:46
>>179
初心者ではなく低級者の発言ですね

182:デフォルトの名無しさん
10/03/21 23:34:27
>>170
何の意味があるのそれ?


183:デフォルトの名無しさん
10/03/22 00:34:37
質問します。
DataGridViewで特定のCellから値を参照したいんですけど
方法がわかりません。お願いします。

184:デフォルトの名無しさん
10/03/22 00:36:04
DatagridView.Rows(0).Cells(カラム名).Value

だけじゃね?
さすがにそれはヘルプ見てみようぜ
それとも何か勘違いしてるかな?


185:デフォルトの名無しさん
10/03/22 01:08:49
メソッドに戻り値つけないとどういう処理しているかわからなくなるね
とくにグローバル変数をどうにかしているときとか

186:デフォルトの名無しさん
10/03/22 01:14:00
C#スレでグローバル変数とな!?
シングルトンのクラスに詰め込むの?

187:デフォルトの名無しさん
10/03/22 01:15:17
フィールド変数だらう

188:デフォルトの名無しさん
10/03/22 03:31:48
SlimDX/Direct3Dで描画してるウィンドウの中にWPFでコントロールを描画して使いたいんですが、
いいサンプルはありませんでしょうか。

189:デフォルトの名無しさん
10/03/22 03:59:50
このスレレベル高すぎて何いってるのか全然わからないですがさらに初心者向けのスレってないんですか?
FF11でツールを作ろうと思ってます。

190:デフォルトの名無しさん
10/03/22 04:12:21
今のFF11ってツールまで作れるんだな…。

191:デフォルトの名無しさん
10/03/22 07:09:13
そういやFF11ってなんか言語っぽいもんな
0xFF11みたいな

192:デフォルトの名無しさん
10/03/22 09:49:37
ボットでも作りたいのかね

193:デフォルトの名無しさん
10/03/22 13:39:33
string型の配列aがnullでも空でもないことを判定するプログラムを考えています。

if ( a != null )
{
  if ( a.Length > 0 )
  {
    (処理)
  }
}

これ以上にスマートな記述方法は存在しますか?

194:デフォルトの名無しさん
10/03/22 13:41:26
>>193
string.IsNullEmpty()

195:デフォルトの名無しさん
10/03/22 13:43:39
それ、配列にも使えるのけ?

196:デフォルトの名無しさん
10/03/22 13:45:57
無理だな
ネストが深くなるのが嫌だから&&でつなぐ

197:193
10/03/22 13:49:55
>>194-195
そうなんです。String.IsNullEmptyOrEmptyは文字列には使えますが文字列の配列には使えませんでして・・

>>196
たしかにネストが深くなるのはイヤなんですが、もし&&でつないでしまうとnullだった場合に
a.Legth のところで例外が発生してしまうんです。

だから泣く泣くネストを深くして対処しました。

198:デフォルトの名無しさん
10/03/22 13:52:31
ショートサーキットを使うように、|| でつなげばいいだろ。

199:デフォルトの名無しさん
10/03/22 13:55:07
& じゃなくて && だよ?

200:デフォルトの名無しさん
10/03/22 13:58:02
&&で繋ぐと、結果が偽になった時点でそれ以降は評価されない

201:デフォルトの名無しさん
10/03/22 14:03:15
>>200
じゃあ&&でいいじゃないか。変数aがnullなら、他のことをやっても仕方がない。

202:デフォルトの名無しさん
10/03/22 14:07:00
try
{
  if ( a.Length > 0 )
  {
    (処理)
  }
}
catch(ぬるぽ)
{
}

・・・違うの?

203:デフォルトの名無しさん
10/03/22 14:09:57
>>202
本気で言ってるの?
ぬるぽをキャッチしようとする奴始めて見た

204:193
10/03/22 14:10:15
>>200
> &&で繋ぐと、結果が偽になった時点でそれ以降は評価されない

判定式の順番は重要ですか?
たとえば a がnullのとき

if ( a.Length > 0 && a != null )
{
    (処理)
}

とやってしまうと最初の a.Length > 0 で例外が発生したりしませんか?

205:デフォルトの名無しさん
10/03/22 14:10:21
フォルダパスからフォルダ名を取得するのってどうすればいいのでしょうか
GetDirectoryNameはファイルパスからフォルダパスを求めるもんですし・・・

206:デフォルトの名無しさん
10/03/22 14:10:55
それはないわ。

207:デフォルトの名無しさん
10/03/22 14:11:38
>>204
左から

>>205
DirectoryInfo.Name

208:デフォルトの名無しさん
10/03/22 14:23:47
>>203
お前の経験が浅いのではw

>>204
&&の前後が逆

209:デフォルトの名無しさん
10/03/22 14:25:22
>>207
ありがとうございます!

210:デフォルトの名無しさん
10/03/22 14:26:17
null判定を例外で処理しようとするのは初心者

211:デフォルトの名無しさん
10/03/22 14:28:27
try
{
}
catch(Exception e)
{
}
なんて書いてるソースはよく見るね

212:デフォルトの名無しさん
10/03/22 14:29:34
初心者スレだから意見を聞きたいなら間違ってはいないが
回答としては無い

213:デフォルトの名無しさん
10/03/22 14:30:50
>>211
テストソースとしてならいいんじゃない?
それで納品したら次回はないと思うけど

214:デフォルトの名無しさん
10/03/22 14:31:09
いろいろ作り込んだり、ぐちゃぐちゃになったりして、
新規プロジェクト作成したくなる衝動に駆られるよね
この衝動に名前つけようぜ

215:デフォルトの名無しさん
10/03/22 14:31:10
>>211
まぁそれ自体が間違ってるわけじゃないけど
わかってない臭はするな

216:デフォルトの名無しさん
10/03/22 14:32:05
>>214
現実逃避

217:デフォルトの名無しさん
10/03/22 14:42:19
別にExceptionで受けてもいいだろ

218:デフォルトの名無しさん
10/03/22 14:44:43
>>217
どんなException出しても同じ対応するの?

219:デフォルトの名無しさん
10/03/22 14:48:29
>>193
var notNullEmptyAry = ary.Where(s => !string.IsNullOrEmpty(s));

220:デフォルトの名無しさん
10/03/22 14:49:49
>>218
後処理がいるのは別にきまってるだろw

221:デフォルトの名無しさん
10/03/22 14:51:52
>>219
配列の各要素にnull/空文字列が含まれているかどうかなんて話、誰もしてないぞ

222:デフォルトの名無しさん
10/03/22 14:52:22
そもそも>>193は、正常な処理をif文のブロック内に書いてる時点で
ソースが汚いと思う

223:デフォルトの名無しさん
10/03/22 15:01:59
どっちが正常なのかは文脈次第じゃないか

224:デフォルトの名無しさん
10/03/22 15:02:22
if(a==null && a.Length == 0) return;

処理

225:デフォルトの名無しさん
10/03/22 15:05:44
|| が正解

226:デフォルトの名無しさん
10/03/22 15:05:52
>>223
さすがに配列のオブジェクトがnullで正常処理とか・・・
そういうのが正常だと言える例あるの?

227:デフォルトの名無しさん
10/03/22 15:07:58
>>220
致命的な例外もわざわざCatchするんですね
かっこいい!

228:デフォルトの名無しさん
10/03/22 15:09:20
>>226
ローカル変数ならあると思うけど

229:デフォルトの名無しさん
10/03/22 15:22:37
初心者からかって遊んでるやつしかいないのかここは

230:デフォルトの名無しさん
10/03/22 15:24:22
外部からデータ貰って配列に入れるときとか、0件だと配列そのものができてない
つまりnullになることあるな。もちろん0件でも正常

231:デフォルトの名無しさん
10/03/22 15:29:32
try-catch はコストが大きいから
>>193のような条件判別では普通>>202のようにはしない

232:デフォルトの名無しさん
10/03/22 15:37:59
>>231
他の言語ならそうだがC#なら正解
エラー処理のために条件分岐やるのはVB6.0で止まっている奴

条件分岐は何かの処理をさせたいから使うわけでエラー処理のためにするべきではない
つまりこれだけでいい
try
{
//何かの処理
}
catch{}

233:デフォルトの名無しさん
10/03/22 15:39:56
>>231
一般的にtry-catch構文はオーバーヘッドが大きいといわれているけど、
C#(clr)でも同じことが言えるの?
なにかこの辺について言及したいい記事はありませんかね。

234:193
10/03/22 15:41:49
>>207
>>208
どうもです(´・ω・`)ノ

&&で結ばれた判定式が左から順番に判定されて、条件に合致した時点で残りの判定式の判別は
破棄されるとは知りませんでした。

つまり>>193

if ( a != null && a.Length > 0 )
{
    (処理)
}

と簡潔に記述できるわけですね。

235:193
10/03/22 15:42:32
>>222
> そもそも>>193は、正常な処理をif文のブロック内に書いてる時点で
> ソースが汚いと思う

:(;゙゚'ω゚'):!

その件に関しましては常々疑問に思っておりました。
メインとなる処理はif文の中で記述するべきか、外で記述するべきかに関してです。

メインとなる処理はif文の外に書くべきでしたら>>193

if ( a == null || a.Length == 0 )
{
  return false;
}

(処理)

とするべきなんでしょうか?

236:デフォルトの名無しさん
10/03/22 15:43:39
catchした時は重くなるけど通常は関係ないんじゃないの

237:デフォルトの名無しさん
10/03/22 15:43:53
>>234
そういうことはC#ではやらない

238:デフォルトの名無しさん
10/03/22 15:44:25
>>230
0件とnullは違う意味で使うだろ、常識的に考えて

239:デフォルトの名無しさん
10/03/22 15:44:27
>>235
>>224

240:デフォルトの名無しさん
10/03/22 15:45:38
>>235
プログラムはケツまで流すものだとか考えてる人なら
正常処理だけif文に入れる

ようは好きにしろ

241:デフォルトの名無しさん
10/03/22 15:47:20
>>230
そもそもDBの場合
まず件数引っ張ってからデータ取得しない?

242:デフォルトの名無しさん
10/03/22 15:48:28
条件式のネストを避ける書き方って一般的に何ていうんだっけ?

243:デフォルトの名無しさん
10/03/22 15:49:16
>>241
件数そのものを先に欲しい場合はそうするかもしれないが、
普通はカーソル機能を使って最初の1行目だけをもらう。
全部引っ張るようなメモリ食うようなことは避ける。

244:デフォルトの名無しさん
10/03/22 15:52:12
rowsよりcountのほうが軽いだろ

245:デフォルトの名無しさん
10/03/22 15:56:43
>>235
delegate bool EmptyDelegate(string[] s);

    EmptyDelegate emp=IsEmp;

    if(emp(s))
    {
      (処理)
    }


  private bool IsEmp(int n)
  {
   if ( a == null || a.Length > 0 )
      return false;
  }
}

246:デフォルトの名無しさん
10/03/22 16:00:15
>>245
普通のメソッドでなくデリゲートを使うのはなんで?

247:デフォルトの名無しさん
10/03/22 16:11:07
全角変換するなら文頭のスペースだけにしろよ

248:デフォルトの名無しさん
10/03/22 16:13:10
>>247
おまえがやれ

249:デフォルトの名無しさん
10/03/22 16:14:11
カッコの中の最初と最後を空けるなら全部に適用しろ
算術記号も同様に

250:193
10/03/22 16:15:01
>>237
>>239
>>240
どうもです。>>224さんのようにします(´・ω・`)ノシ

251:デフォルトの名無しさん
10/03/22 16:18:22
>>249
おまえがやれ

252:デフォルトの名無しさん
10/03/22 16:22:54
できないのか・・・

253:デフォルトの名無しさん
10/03/22 16:40:50
>>241
外部ってWebサービスでSOAPで受け取ったりするやつもある

254:デフォルトの名無しさん
10/03/22 17:19:50
(´・ω・`)←お亡くなりになられました

255:デフォルトの名無しさん
10/03/22 17:22:55
>>245
C#1.0のような腐った書き方のうえに腐った命名規則

256:デフォルトの名無しさん
10/03/22 17:30:51
スレタイ読めよ

257:デフォルトの名無しさん
10/03/22 17:34:24
というかCS0161。論外

258:デフォルトの名無しさん
10/03/22 17:45:33
>>192
はいそのとうりでボットを作りたいです。もっと初心者向けのスレないでしょうか。

259:デフォルトの名無しさん
10/03/22 17:47:09
いきなりボット作ろうとする人向けの初心者スレは無いと思う・・・

260:デフォルトの名無しさん
10/03/22 19:01:04
ちょっとしたプログラムを作って、そのできばえを達人に判定してもらって
技能向上に向けたアドバイスをいただけるスレは無いでしょうか?

261:デフォルトの名無しさん
10/03/22 19:03:52
ないんじゃね? あっても罵倒の嵐になりそうだし。

262:デフォルトの名無しさん
10/03/22 19:04:37
>>260
スクエニ社内のボット対策スレへ行け。

263:デフォルトの名無しさん
10/03/22 19:32:02
>>261
> あっても罵倒の嵐になりそうだし。

。・゚・(ノ∀`)・゚・。

264:デフォルトの名無しさん
10/03/22 19:44:01
第一

分かりやすいところでBOT開発の情報共有したら
社員にかぎつけられて対策されちゃうだろw

265:デフォルトの名無しさん
10/03/22 20:05:45
D言語使えばいいじゃん

266:デフォルトの名無しさん
10/03/22 20:10:15
>>265
【超高速】C/C++に代わる低級言語を開発したい
にカエレ

267:デフォルトの名無しさん
10/03/22 20:24:02
>>224
ナイスジョーク


268:デフォルトの名無しさん
10/03/22 21:16:55
>>233
記事じゃないけどこれとかどうよ
URLリンク(msdn.microsoft.com)


269:デフォルトの名無しさん
10/03/22 21:17:24
>>255
おまえバカ大将

270:デフォルトの名無しさん
10/03/22 21:24:02
>>269
おまえバカ元帥

271:デフォルトの名無しさん
10/03/22 21:25:49
>>233
コストを払うのは例外発生時
通常はtrycatchの外とほぼ変わりない

.NET アプリケーションのパフォーマンス関連のヒントとトリック
URLリンク(msdn.microsoft.com)

trycatchを置き換えるというよりは、条件分岐で例外が投げられるケースを減らす
条件分岐の外を大きくtrycatchで括って漏れた奴キャッチするとかそんなんでもいいの

272:デフォルトの名無しさん
10/03/22 21:26:18
>>188
WPFの中でDirectX使うのは可能だけど逆は無理
画像に描画するとかすれば無理やりできなくもないけど極めて非効率

273:デフォルトの名無しさん
10/03/22 22:14:07
VisualC#2008のデバッグについて質問があります。
デバッグ中時間がかかる処理をしているところを確認したいのです。デバッグの再生ボタンがグレーの実行状態のときに、どこで実行しているか知る方法はありますか?
プログラムは約5000行あり、ブレークポイントを設定する候補の箇所が多すぎる場合、いちいち手動で設定するのではたいへんなのです。
こういう場合、どのようにしたらよいものでしょう?


274:デフォルトの名無しさん
10/03/22 22:20:10
>>273
毎日どこから質問拾ってるのか?

275:デフォルトの名無しさん
10/03/22 22:23:32
>>273
ビデオの一時停止みたいなボタン

276:デフォルトの名無しさん
10/03/22 22:23:33
5000行で10個のブレイクポイントを張って、どの500行に時間がかかってるか確認。
ってのを何回か繰り返せばすぐわかるだろよ。

277:デフォルトの名無しさん
10/03/22 22:25:10
>>276
目安程度かもしれんがブレイクポイント入れるんじゃなく
その場所を通った時間をどこかに出力すればいいかもね

278:デフォルトの名無しさん
10/03/22 22:27:34
>>273
ブレークポイントを設定するのと同時にコンソール出力のコードを挿入していく。
恒常的に残すときはTrace呼び出しにする。

以降、ログを見るだけでエラーの発生箇所がだいたい分かるようになる。

279:デフォルトの名無しさん
10/03/22 22:27:45
少しは頭使えばいいのに。

280:デフォルトの名無しさん
10/03/22 23:04:22
\文字を使いたいのですがどうすればいいのでしょうか?
なんかプログラムの一部として認識されちゃいます

281:デフォルトの名無しさん
10/03/22 23:05:50
\\
または文字列リテラルの中で使うなら
@"\"でも可

282:デフォルトの名無しさん
10/03/22 23:09:32
>>281
この速さ
だから助かる
アリガトス



283:デフォルトの名無しさん
10/03/22 23:14:31
varってみんな使ってる?
使ってみたけどコードが短くはなるけど
わかりにくいような気がする

284:デフォルトの名無しさん
10/03/22 23:15:39
foreach (string a in listBox2.Items)
{
try
{

File.Move(a, textBox1.Text + "\\" + Path.GetFileName(a));

}
catch
{
MessageBox.Show("err");
}
}

これでArgumentExceptionはハンドルされませんでした
とかってエラーが出る
一応ファイルは移動できてるんだけどなんなんでしょう

285:デフォルトの名無しさん
10/03/22 23:17:58
なんのためのcatchだ

286:デフォルトの名無しさん
10/03/22 23:20:16
こうした方がよくねーか?
URLリンク(codepad.org)

287:デフォルトの名無しさん
10/03/22 23:20:50
>>284
foreach (var a in listBox2.Items)
{
try
{
File.Move(a.Text, textBox1.Text + "\\" + Path.GetFileName(a.Text));
}
catch
{
MessageBox.Show("err");
}
}

288:デフォルトの名無しさん
10/03/22 23:22:38
>>286
そんなはずかしいことするのはお前だけ

289:デフォルトの名無しさん
10/03/22 23:26:30
>>286>>284じゃまったく意味合いが違っていくる
>>286なら1つのファイル移動が失敗しても他のはできる可能性があるが
>>284だと一度例外が出るとその時点で作業がストップする

290:デフォルトの名無しさん
10/03/22 23:28:30
間違った逆だ。>>286だと例外が出た視点で作業が継続できない
通常複数ファイル移動する場合に一部のファイルが存在しなかったりしても続けるからな

291:284
10/03/22 23:33:44
>>287試したけど、'object' に 'Text' の定義が含まれておらず、型 'object' の最初の引数を受け付ける拡張メソッドが見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。

というかそもそも目的のファイルは全部ちゃんと移動できてるのにエラーが発生する意味がわからんのです


292:デフォルトの名無しさん
10/03/22 23:35:22
自分で制御がちゃんとできないならファイルとかフォルダがあるかどうか
確認する機能使えばいいんじゃね?

昔ながらのコードで返してくれるのがあったはず

293:デフォルトの名無しさん
10/03/22 23:36:33
>>291
型を指定してないからだろ?
listboxの行って確かstring管理だったはず

294:デフォルトの名無しさん
10/03/22 23:42:58
listviewitemと勘違いしてたわw

295:デフォルトの名無しさん
10/03/22 23:44:42
ListViewItemsは何のコレクションだよ
賢者タイムか・・・

296:デフォルトの名無しさん
10/03/22 23:48:56
catch(Exception e)
{
MessageBox.Show((e.GetTyppe()).FullName+e.Message);
}}

297:デフォルトの名無しさん
10/03/22 23:56:51
>>283
Hogeclass hogeclass = new Hogeclass();なんかは冗長なので、
var hogeclass = new Hogeclass();にする。
あとはLINQ関係かな。

298:デフォルトの名無しさん
10/03/23 00:00:06
>>291
コレクションのアイテムを入れる変数の型が違うとか
tryステートメント使ってるのにcatchで例外を捕捉しないとか
まず基本を身につけないと例外出る度に自分で対処できないよ

299:デフォルトの名無しさん
10/03/23 00:08:24
エクスプローラのフォルダツリーを使いたいのですが、
treeViewで作るしかないですか?

300:デフォルトの名無しさん
10/03/23 00:14:12
というより
エクスプローラのフォルダツリーを実現するための部品がtreeviewでしょ?
サンプルとかありそうな気もしたけどWPFくらいしかないな

301:デフォルトの名無しさん
10/03/23 00:16:43
>>298
例外捕捉するように書いてみたけど問題なく通るからcatchが捕捉するのも何もないようで

ArgumentExceptionはハンドルされませんでした
使用されたパラメータが有効ではありません。



Program.csの
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());←ここで起きてる
}

何が悪いんだ?
ちなみにファイルを移動し終わっても異常は無いけどウィンドウを動かしたり最小化したりするとエラーが出てくる


302:デフォルトの名無しさん
10/03/23 00:18:49
しらねえよw
プログラム全部が見えないのにw

303:デフォルトの名無しさん
10/03/23 00:26:00
>>300
ありがとうございます。
再帰が未熟なのでNodeの追加で悩んでいます・・・。

>>301
映画タイトル決定「この春、Form1で何かが起こる!?」

304:デフォルトの名無しさん
10/03/23 00:27:01
>>303
MSの公式サンプル
URLリンク(support.microsoft.com)

305:デフォルトの名無しさん
10/03/23 00:33:12
>>304
ありがとうございます。
見ながらやってみます。

306:デフォルトの名無しさん
10/03/23 00:33:34
Cでいうところのfscanf (fp, "%s%lf%lf", name,&height, &weight)みたいに構造体でtxtファイルにデータの管理をするには
どうすればいいでしょうか?
今思いつくのはstring型を特定の文字で引っ付けたり分解するものを利用すること位です

307:デフォルトの名無しさん
10/03/23 00:35:38
テキストボックスに時刻を表示しようとしています。

Thread thread = null;
private void timer_Tick(object sender, EventArgs e){
thread = new Thread(Thread);
thread.IsBackground = true;
thread.Start();
}

private void Thread(){
textBox.Text = DateTime.Now.ToString("HH:mm");
}

これでデバッグしようとしたら、
InvalidOperationExceptionはハンドルされませんでした。
有効ではないスレッド菅野捜査、コントロールが作成されたスレッド以外のスレッドからコントロールtextBox.Textがアクセスされました。
とエラーになります。
これはどう対処したらよいですか?


308:デフォルトの名無しさん
10/03/23 00:37:04
>>275
ほんとだ。これでした。ありがとうございます。


309:デフォルトの名無しさん
10/03/23 00:38:43
>>307
URLリンク(codepad.org)

310:284
10/03/23 00:42:32
うんごめんなさい
画像をpictureboxから解放せずにその画像ファイル移動したらそりゃエラーもでるよね
ここに書いたプログラムとは全然関係ありませんでした
ごめんなさい
自己解決しました

311:デフォルトの名無しさん
10/03/23 00:42:56
>>307
すごい。速い…。
これ、Classはひとつの場合でも使えるんですか?


312:デフォルトの名無しさん
10/03/23 00:45:31
>311
早いっていうかスレッドネタは最近多かったのでネタだろと半分思ってるので
アドレスを取っておいた

一つの場合っていうか、スレッドから呼ぶならそれ改造すればクラスじゃなくてもいけるでしょ

313:デフォルトの名無しさん
10/03/23 00:55:58
>>312
ネタではなく、初心者で困っていての質問であります。
で、すみません、コードを拝見していたんですが、改造できませんでした…。
さきほどの307にあてはめると、どのようにしたらよいでしょう?
Invokeもdelegateもworkerもcallbackもshownも初めてで、かなり手に余っています。


314:デフォルトの名無しさん
10/03/23 01:06:48
生徒らの個人情報流出について陳謝する長崎市教委の鈴木徹学校教育部長(右)ら=22日午後、長崎市役所
URLリンク(img.47news.jp)

【春祭り 】また割れ厨のスクショと個人情報が晒されてるぞ避難所17
URLリンク(jbbs.livedoor.jp)


本スレはこちら
新たな大物をいっしょに探しましょう

315:デフォルトの名無しさん
10/03/23 02:49:27
あるクラスの中のデリゲートにメソッドを入れたいが、そのメソッドの引数の数が
実行時までわからなくても、問題なく入れられる方法ってありますか?

デリゲートのオーバーロードを行って、引数のバリエーション分の
デリゲートをあらかじめ用意しておく方法を思いつきましたが、
ほかにいい方法があれば教えてほしいです。

316:デフォルトの名無しさん
10/03/23 02:52:09
リストにできるものならリスト渡せばいいし
できないものならクラス化すればいいんじゃね

317:デフォルトの名無しさん
10/03/23 02:56:29
>>315
すべての基底クラスがなにか知ってる?

318:315
10/03/23 02:57:48
なんか勘違いしてたかも…もう少し設計練ります。
ありがとうございました。

319:デフォルトの名無しさん
10/03/23 03:08:18
timer_Tickでスレッド開始するってのが何がしたいのか意味不明。


320:デフォルトの名無しさん
10/03/23 05:10:14
ブラクラとか

321:デフォルトの名無しさん
10/03/23 14:12:24
>>319意味不明

322:デフォルトの名無しさん
10/03/23 15:42:08
フォームのタイマでは時計は作れないというのは有名な話
>>309のSetTextをスレッドタイマのコールバックで呼び出す
30行目以降はいらない

323:デフォルトの名無しさん
10/03/23 16:03:48
ここで言っていたようにif文内に正常処理を書かないようにし
邪悪なものを最初に弾くようにしたらものすごくコードが見やすくなった

他にこういうことしたらコードが見やすくなるよというのありますか?

324:デフォルトの名無しさん
10/03/23 17:42:48
リファクタリング

325:デフォルトの名無しさん
10/03/23 17:45:51
それと同じようなものだけど、例外的な状況を弾くような場合じゃなくて
通常の分岐のときは、なるべくelseを書いてifよりもelseの方が長くなるようにする

326:デフォルトの名無しさん
10/03/23 18:07:41
「もしtrueなら」じゃなくて「もしfalseなら」という書き方のほうがいいということですね

327:デフォルトの名無しさん
10/03/23 18:21:47
単に長いものは後回しにした方が見やすいからです

328:デフォルトの名無しさん
10/03/23 19:48:02
ていうか、


もし false なら 抜ける;

trueの時のコード
    ・
    ・
    ・
    ・
};

とかの方がインデントが浅くて良いとかじゃないのん。


329:デフォルトの名無しさん
10/03/23 20:20:40
if節が長いかelse節が長いかは判定式に否定演算子を
付けてまわれば逆転するわけで、あまり意味はないわな。

330:デフォルトの名無しさん
10/03/23 20:22:02
if節を短くしたほうが可読性が上がる

331:デフォルトの名無しさん
10/03/23 20:47:19
っていうかそんな長いメソッドにはならないから
ifでどうのこうのなんてないな

332:デフォルトの名無しさん
10/03/23 22:34:41
>>323
> ここで言っていたようにif文内に正常処理を書かないようにし
> 邪悪なものを最初に弾くようにしたらものすごくコードが見やすくなった

やっぱそう思う?
俺も前々からそんな気がしていた・・・

こういうtipsがまとめられたサイトとか本とか無いかな。
初級者以上中上級者未満を対象にした情報源ってあまり無いよな('A` )b

333:デフォルトの名無しさん
10/03/23 22:38:50
Code Complete

334:デフォルトの名無しさん
10/03/23 22:48:06
CodeComplete高い
近所の紀伊国屋書店さん3日間も立ち読みしてごめんなさい

335:デフォルトの名無しさん
10/03/23 22:48:12
正直、elseより後が長い方が可読的って感覚は微妙。

完全には否定しないけどね。
俺もCの二重インクルード防止のなんかには、一般的な作法じゃないけど
空っぽの#ifdefを書くようにしてるから気持ちは分かる。

ただ、ifのブロックなんてCのインクルードファイルほど行数あるわけじゃないからねえ。
普通は。

336:デフォルトの名無しさん
10/03/23 22:49:36
俺はif節がよほど短いならさっさと脱出させてしまうなぁ

337:デフォルトの名無しさん
10/03/23 22:52:57
ListView.ListViewItemCollection.AddRange(ListView.ListViewItemCollection items)
のオーバーロードバージョンてどうやって使うんですか?サンプルないですか?
listView1.Items.AddRange(listView2.Items)とかやるとArgumentExceptionになるんですが…


338:デフォルトの名無しさん
10/03/23 23:00:08
>>337
実質内部で使う用と考えていい

339:デフォルトの名無しさん
10/03/23 23:03:02
>>338
ありがとうございます。CopyToします。

340:デフォルトの名無しさん
10/03/23 23:08:09
インデント深くしたくないから、すぐ脱出するコード書くなぁ。

341:デフォルトの名無しさん
10/03/23 23:13:58
画像処理系のソフト作っているんだけど
DirectXSDKを使わないとグラボの性能ほとんど使わないのかな?

342:デフォルトの名無しさん
10/03/23 23:23:00
いやDirectXと画像処理は関係ない
グラボはリアルタイムな処理に使うものであって静的な画像処理にはあまり使われない
シェーダ使えばできるけど面倒で制限が多い割には体感的にそんなに速くなるとは思えない

343:デフォルトの名無しさん
10/03/23 23:27:04
思えないね

344:デフォルトの名無しさん
10/03/23 23:40:07
動画だとCUDAとかViewerでもグラボを使っているものがあるから
そんなに変わるのかなと思ったんだけど使い方によるんですね

345:デフォルトの名無しさん
10/03/23 23:40:46
ていうか、WPF使ったら勝手に使われる。

346:デフォルトの名無しさん
10/03/23 23:42:57
WPF使おうが何使おうが明示的にグラボ使わない限りアプリケーションの画像処理には関係ない

347:デフォルトの名無しさん
10/03/23 23:46:35
>>346
画像処理と言っても色々ある。
単純なファイル形式変換ならグラボ関係ないが、
拡大、縮小、色変換、フィルタリングとかかけるならWPFやSilverlight使った方が圧倒的に便利かと。

348:デフォルトの名無しさん
10/03/23 23:51:01
そうか?
簡単な拡大縮小などで細かい制御を必要としないならともかく
シェーダ書くなら余計に手間かかるよ

349:デフォルトの名無しさん
10/03/23 23:53:03
>>348
シェーダー書かんでも代わりに色々やってくれるところがWPFのいいところじゃないの。

350:デフォルトの名無しさん
10/03/23 23:56:56
WPFでフィルタなどのエフェクトを自作しようと思ったら
ビットマップのピクセルをCPUで直接処理するのが嫌ならピクセルシェーダを書くしかない

351:デフォルトの名無しさん
10/03/23 23:57:02
>>323
無駄なtrueを書かない。
× if ( flag == true ) { }
○ if ( flag ) { }

352:デフォルトの名無しさん
10/03/23 23:59:56
わざわざ28レスも前に指摘することかよ

353:デフォルトの名無しさん
10/03/24 00:01:58
ワラタ

354:デフォルトの名無しさん
10/03/24 00:10:45
Windows.Formのタイトルバー?(タイトルと拡大縮小閉じるボタンのところ)
にコンポーネントを追加することはできますか?

同じボタンを1つ増やしたいのですが。

355:デフォルトの名無しさん
10/03/24 00:11:54
>>347
おお、今までWPF使ったことなかったけど使ってみようかな
そんな難しい処理じゃなくて画像Viewer的なのを作りたいだけなので
勉強してみようかな

356:デフォルトの名無しさん
10/03/24 00:18:59
>>351
> 無駄なtrueを書かない。
> × if ( flag == true ) { }
> ○ if ( flag ) { }


C畑出身の古参か?

時代は可読性を求める時代だぞ。

357:デフォルトの名無しさん
10/03/24 00:24:06
>>356
それは「無駄な可読性」というものだ。
ただし、C#はC/C++と比べてif節はbool型しか取らないから、
自然、これまでよりも式が厳格になる傾向があるけどな(式が非ゼロかどうかの判定とか)

358:デフォルトの名無しさん
10/03/24 00:26:58
flagの名前によるな
isHoge
とかならif(isHoge==true)は冗長だろ

359:デフォルトの名無しさん
10/03/24 00:29:48
bool評価なのにわざわざ flag == true って可読性高い?
大切なことなので2回言いましたってことか?

360:デフォルトの名無しさん
10/03/24 00:29:57
>>354
まあ無理
どうしてもと言うならタイトルバーなしにしてそれっぽいのを自分で描画する

361:デフォルトの名無しさん
10/03/24 00:35:13
>>332
そこで.NET4.0の契約プログラミングですよ。

362:デフォルトの名無しさん
10/03/24 00:43:42
>>360
ありがとうございます。
小さいウインドウから元のサイズにするだけなので
コンテキストメニューで代用します。

363:デフォルトの名無しさん
10/03/24 00:46:41
>>359
ある種の思い込みがある人たちにとってはそうなんでしょ。
思い込みっていうか、たぶん「ifが取るのはbool型の値」という風に論理的に考えず、
経験的に「ifの後に来るのは2項演算じゃないと気持ち悪い」と感じるタイプ。

そういう人は自分の感覚を修正すべきだね。

364:デフォルトの名無しさん
10/03/24 00:51:35
flag==true って書くのはいいけど、
flag!=true とか !(flag==true) とか !(flag==false) とかいろんなパターンで使われたらもうイライラ。

365:デフォルトの名無しさん
10/03/24 01:19:50
これは言葉に直すと素直だけど
if(n>0)
これはわかりにくいよね
if(n<=0)
でもelseの方の文を長くしたいならこうなる
if(!(n>0))

366:デフォルトの名無しさん
10/03/24 01:21:31
>>365
もうねろよ。疲れてんだよ。

367:デフォルトの名無しさん
10/03/24 01:53:35
WPF負荷高いね
ボタン4つ作っただけなのにウィンドウサイズ変えると
c2dの使用率50%になっちゃう

368:デフォルトの名無しさん
10/03/24 01:54:22
ねーよ

369:デフォルトの名無しさん
10/03/24 01:59:06
負荷は大きい、小さい。高い低いじゃない。

370:デフォルトの名無しさん
10/03/24 02:04:15
大負荷 の検索結果 約 5,920,000 件中 1 - 100 件目 (0.28 秒)
小負荷 の検索結果 約 3,390,000 件中 1 - 100 件目 (0.32 秒)
高負荷 の検索結果 約 2,480,000 件中 1 - 100 件目 (0.27 秒)
低負荷 の検索結果 約 1,260,000 件中 1 - 100 件目 (0.42 秒)

371:デフォルトの名無しさん
10/03/24 02:09:59
中負荷 の検索結果 約 7,770,000 件中 1 - 10 件目 (0.21 秒)

372:デフォルトの名無しさん
10/03/24 02:11:12
結論

負荷は中というのが正しい。

373:デフォルトの名無しさん
10/03/24 02:15:40
>>322
いつ時計を作ってたの?
時計をタイマーで作るの?


374:デフォルトの名無しさん
10/03/24 02:22:53
"大負荷" の検索結果 約 10,500 件中 1 - 50 件目 (0.26 秒)
"小負荷" の検索結果 約 13,500 件中 1 - 50 件目 (0.28 秒)
"高負荷" の検索結果 約 461,000 件中 1 - 50 件目 (0.31 秒)
"低負荷" の検索結果 約 123,000 件中 1 - 50 件目 (0.39 秒)
"中負荷" の検索結果 約 16,500 件中 1 - 50 件目 (0.33 秒)

375:デフォルトの名無しさん
10/03/24 03:07:34
"負荷が大きい" の検索結果 約 2,120,000 件
"負荷が小さい" の検索結果 約 1,070,000 件
"負荷が高い" の検索結果 約 69,000 件
"負荷が低い" の検索結果 約 1,600,000 件
"負荷が中い"との一致はありません。

"負荷が中くらい" の検索結果 約 18,600 件

376:デフォルトの名無しさん
10/03/24 03:19:07
一方その頃、「そんな大きなフカヒレは入らないよう!」
という夢を中国が見ていた。

377:デフォルトの名無しさん
10/03/24 03:36:16
いつまでやってんだ。スレタイ読め

378:デフォルトの名無しさん
10/03/24 05:35:51
本当に下らないかもしれませんが・・・

*.exe形式で配布~ローカルにインストールして使う、
WEB上のXMLを取得して処理したり、
XML-RPCでブログ投稿
などを行うソフトを作りたいのですが、
こういうソフトは、どういう単語で検索すれば情報が集められるのでしょうか

勉強するとっかかりが、全くわかりません。
本1冊と、C#入門、みたいなサイトは一通り勉強してきましたが
この辺の情報はなかったです。
「WEBサービス」では、サーバサイドの話のようで・・・

379:デフォルトの名無しさん
10/03/24 07:06:03
XML Web サービスクライアント、だな。

380:デフォルトの名無しさん
10/03/24 08:41:42
ちなみに「*.exe形式で配布~ローカルにインストールして使う、」
というのは実行ファイル形式のインストーラーのことだ。
基本的にはこれは.NETで作らない方がいい。
自己解凍書庫、インストーラー作成ツールなどを使う。

381:デフォルトの名無しさん
10/03/24 11:18:09
グローバリゼーションの警告うぜぇ…

382:デフォルトの名無しさん
10/03/24 11:41:39
directxはc++とかと構造は同じ?


383:デフォルトの名無しさん
10/03/24 11:48:42
>>382
その質問は、カレーとスプーンが構造が同じかと問うていることに等しい。
ちなみに、DirectXはCOMでできている。

384:デフォルトの名無しさん
10/03/24 11:49:29
単なるAPIの塊なのにC++から呼び出す場合とC#から呼び出す場合で違ってたら笑えない

385:デフォルトの名無しさん
10/03/24 13:48:55
レジストリの登録について質問があります。
自作のアプリケーションでjpgファイルを開くために、
registryValue = programpath + " %1";
として登録しました。
これで、アイコンを選んで、右クリックで登録したメニューを実行すると、
「パスに無効な文字が含まれています」とエラーになります。

どうやら、%1を
C:\DOCUME~1\USERNA~1\MYDOCU~1\data\20EAE6~1\PIC~2.JPG
のように、アプリケーションのショート名(?)に展開しているようです。
これを回避するには、どのようにしたらよいでしょう?


386:デフォルトの名無しさん
10/03/24 14:39:12
>>383
あっそう

387:デフォルトの名無しさん
10/03/24 17:05:37
string形式の変数aの指定した行の文字列を取得したいのですがどうすれば取得できますかね

388:デフォルトの名無しさん
10/03/24 17:06:27
String.Splitで配列に分解してアクセスすれ

389:デフォルトの名無しさん
10/03/24 17:08:09
>>387
StringReader.ReadLine

390:デフォルトの名無しさん
10/03/24 17:11:51
>>379>>380
ありがとうございます。
知りたかった情報が見つかりました

391:デフォルトの名無しさん
10/03/24 17:31:41
>>385
8.3形式のファイル名が問題なんじゃなくて、programpathに半角スペースが入っているせいで実行ファイルが見つかってないんじゃない?

392:デフォルトの名無しさん
10/03/24 18:34:36
WPFとC#のコードの連携の説明がどこにもない
コードからウィンドウサイズ変えることすらできない
使えない

393:デフォルトの名無しさん
10/03/24 18:38:08
お前の使えなさっぷりをそんなにアピールしなくても大丈夫、世間は意外に優しいよ

394:デフォルトの名無しさん
10/03/24 20:56:25
WPFのスレで聞けばいいのに
みんな始めたばかりだからやさしいぞ

395:デフォルトの名無しさん
10/03/24 22:17:27
自クラスのprivateフィールド変数もプロパティを
通してでないとアクセスできないようにする方法ありますか?

396:デフォルトの名無しさん
10/03/24 22:20:18
無理だろ

397:デフォルトの名無しさん
10/03/24 22:22:23
特にないな
変数名を\uxxxx並べた理解不能なのにしとくとかどう?

398:デフォルトの名無しさん
10/03/24 22:25:15
自動実装プロパティにするくらい

399:デフォルトの名無しさん
10/03/24 22:35:14
自クラスくらい自分が責任持って扱えよって思っちゃうけど、
複数人で1つのクラスいじってるような場面だとそうはイカンザキ?

400:デフォルトの名無しさん
10/03/24 22:42:59
その自動プロパティはgetsetの中身を省略することらしいですが
ここに式を記述してもいいのでしょうか?
そしたら思っているようなことができそうなんですが

public string Name
{
set{ this.Name=valeu;}
}

例えばこんな感じ

401:デフォルトの名無しさん
10/03/24 22:44:20
できるようになったら個人的にうれしいけど無理

402:デフォルトの名無しさん
10/03/24 22:45:38
>>395
そんなフィールド(とプロパティ)が存在しうるとして、
プロパティーのセッターやゲッターは自分自身を呼び出してバッキングフィールドに
値を代入したり取得したりするんだろうか。

それって無限に再帰することになるんじゃないか?
少しは頭を使おうよ。

まあ気持ちは理解できなくもないがw
VBはせっかくメソッド内Static変数があるんだから、ゲッターからもセッターからも
アクセスできる位置にメソッド内Static変数が書ける構文さえ用意してくれれば
バッキングフィールドを不要にできるんだけどな。

ことほど左様に、VBチームはやる気がなさ杉気が利かな杉。
開発者までVB厨っぽい。

403:デフォルトの名無しさん
10/03/24 22:46:04
>>395
それって、ごく普通のプロパティ公開のシチュエーションじゃないの?

404:デフォルトの名無しさん
10/03/24 22:48:03
privateな範囲くらいテメェで管理しろってことだろーけどね

405:デフォルトの名無しさん
10/03/24 22:48:13
URLリンク(msdn.microsoft.com)

406:デフォルトの名無しさん
10/03/24 22:50:34
別ファイルにpartialで分けて、privateフィールドは見ない振りをする

407:デフォルトの名無しさん
10/03/24 22:51:34
ProrertyChangedイベントを使えば>>395のご所望に近いことが出来そうな気が
しないでもないでもない

408:デフォルトの名無しさん
10/03/24 22:54:45
privateなフィールドに値を代入する時に適切な定義域かどうか確認するのがメンドイとか、そんな理由だろ。
フィールドに属性か何かで定義域指定できるようになったら蝶うれしいぞ。

409:デフォルトの名無しさん
10/03/24 22:55:31
そしてDbcへ・・・

410:デフォルトの名無しさん
10/03/24 22:57:15
privateな範囲ならDebug.Assert入れとけばいいじゃん

411:デフォルトの名無しさん
10/03/24 23:02:04
正直契約プログラミングはかなり興味ある。

412:デフォルトの名無しさん
10/03/24 23:02:36
興味あるならVS2010試そうぜ

413:デフォルトの名無しさん
10/03/24 23:03:49
ああ、そういうことか。
自分のクラスのprivateなメンバ変数に対してアクセスせず、
常にプロパティ越しにアクセスしたい、ということか。
すればいいじゃん。

こういうのはコーディングテクニックじゃなくて、ポリシーで解決すべきことがらだ。

どうしてもこねくり回したいなら
private変数と抽象プロパティを定義した親クラスを作って継承すればいい。
そんな必要性は感じられないが。

だいたい、VSなら特定の変数がどこで参照されてるか全検索は簡単にかけられるんだから、
一括で修正してしまえば済む話。

414:デフォルトの名無しさん
10/03/24 23:04:34
すべての変数がプロパティになればいいのに

415:デフォルトの名無しさん
10/03/24 23:08:51
元の木阿弥

416:デフォルトの名無しさん
10/03/24 23:12:42
まあ現実的な妥協としてはEditorBrowsable(false)を付けるぐらいかね。
あとは>>413の言うようにベースクラスのプロパティをフィールド代わりにするか。

でも一番の方法は、そんな下らないことは考えないこと。

417:デフォルトの名無しさん
10/03/25 00:34:54
>>414
否、すべての変数はグローバル変数とするべきだ

418:デフォルトの名無しさん
10/03/25 02:21:04
( ̄ー ̄)ふっ

419:デフォルトの名無しさん
10/03/25 03:19:34
(^-^)♪

420:デフォルトの名無しさん
10/03/25 04:35:11
URLリンク(msdn.microsoft.com)
この連載いいねー簡潔でわかり易いし
疑問に思ってたことがいくつか解決した
C#4.0はpythonでやってたようなことができるみたいだな

421:デフォルトの名無しさん
10/03/25 07:32:33
C#のクラスってC言語でいう構造体の延長だろ
たくさんのデータを含めるし。

422:デフォルトの名無しさん
10/03/25 07:37:21
えっ!?

423:デフォルトの名無しさん
10/03/25 07:40:40
第12回の「4. スレッド プールの何が問題なのだろう?」の話がかなりでたらめな件


424:デフォルトの名無しさん
10/03/25 07:52:00
でたらめはお前だカス

425:デフォルトの名無しさん
10/03/25 07:52:18
Indexというプロパティで配列の添え字範囲チェックしてるんだけど
Indexを呼び出す側でもやっぱり添え字でチェックして2重になってるんだけど
やっぱそういうもんですか?
それとこの場合ゲッターの戻り値どうすればいいでしょうか?

public int Index{set{if(0<=value)_index=value;}}

private void hoge()
{

}

426:デフォルトの名無しさん
10/03/25 07:55:05
誤って途中で書き込んでしまった
private void hoge()
{
++Index;
if(0<=idx && list.Count>idx) a(list[idx]);
}

427:デフォルトの名無しさん
10/03/25 08:39:59
>>425
基本的に、添字チェックはCLIのレベルで自動でやってくれるから必ずしもやらなくていい。
(すなわち添字チェックは最悪ひとつも書かなくていい。失敗したら例外が発生する)
で、そのセッターってなんかおかしくね?

428:デフォルトの名無しさん
10/03/25 09:16:02
てことは、tryで包み込むということかな
なんかどこまで例外処理を書けばいいか迷うね
下手したら同じ例外処理をいくつものクラス間で
3重4重やってしまうことになるわけで

続行して問題が出る場合以外は
条件分岐を極力書かずにtryで済ませる方が
いいような気がしてきた

429:デフォルトの名無しさん
10/03/25 09:22:04
例えば、picturebox.loadにしてもファイルが無ければ平気でエラー出して強制終了なるし
GetDirectoriesでもアクセスできないディレクトリを検索してエラー吐くし
.Netで用意されているクラスですらエラー出すんだから
正常な値であるはずという前提で作っていった方がいいのかな

430:デフォルトの名無しさん
10/03/25 09:30:11
おいおい・・・

431:デフォルトの名無しさん
10/03/25 13:19:43
>>428
最初の質問の時に「2度も添字チェックが必要なのかと」問われたので
必ずしもやらなくてもいいと答えただけで、
例外処理と明示的な添字チェックと比較して、
より書きやすい方法で書けばいいんだよ。

で、添字処理を自前でやるsetter/getterって、
C#で今まで必要になったことが一度もないんだが。オレだけ?
標準ライブラリのコンテナ使うだけで、困った事無い。

432:デフォルトの名無しさん
10/03/25 15:12:48
Graphicsで縁取り文字列を書こうとしてて問題が出てきたので誰か良い案があったら教えて下さい
↓のようにAddStringでpathに作ったアウトラインをWidenで太くしてやるやり方が
ググッたらシンプルなので使おうとしたのだけど、フォントサイズに対してWidenで太くする
サイズ(コード内でいうwidth)がでかくなるにつれ漢字などの細かい部分で意図しないツノが生えてきてしまうんだ
(このコードで言えば「刷」の左上など)
この現象の回避策や、他のシンプルな縁取り文字作成方法があったら教えて下さい(元からそういうフォントを使えというのは無しで)

// gはGraphics, pathはGraphicsPath
Font font = new Font("メイリオ", 26.25, FontStyle.Bold);
Single sizeInPixels = font.SizeInPoints * g.DpiY / 72F; // ピクセル単位のサイズに変換
Single width = 5.0F;

path.AddString("印刷中", font.FontFamily, (Int32)font.Style, sizeInPixels, new PointF(10, 10), null);
using (Pen pen = new Pen(Color.Black, width)) {
path.Widen(pen);
}
g.FillPath(Brushes.Black, path);

433:デフォルトの名無しさん
10/03/25 15:50:35
>>432ですけど自己解決しました。
Widenに使うPen(コードで言うpen)のLineJoinプロパティをLineJoin.Miter(デフォルト)以外にしたら出なくなった。
ついでにLineJoinの値によっては柔らかい感じにもできることが分かって
さらに得した気分。
お邪魔しました~

434:デフォルトの名無しさん
10/03/25 17:06:25
添え字のエラーを例外で処理するのはダメだろ
原則「発生したらバグ」の類の例外だ
それにIndexOutOfRangeやNullReferenceのような例外は一度出たら
頻繁に出ることが多いので例外で処理すると極端にパフォーマンスが低下することがある

435:デフォルトの名無しさん
10/03/25 17:12:11
はぁ!?

436:デフォルトの名無しさん
10/03/25 17:19:05
public/protectedメソッドorプロパティで外部から渡されたのに出すのはいいだろ
privateな部分では(渡す前に)Length参照した方がスマートじゃないでしょうか

437:デフォルトの名無しさん
10/03/25 17:24:02
>>436
おいおい・・・

438:デフォルトの名無しさん
10/03/25 18:35:00
自前のファイル入出力クラスで指定ディレクトリにある
ファイルを取得しstring[]で返すのを作ったとして
そのクラスを利用する側もやっぱりファイルがあるのかないのかチェックし
さらにそのクラス利用する側もファイルがなかった場合を想定してコードを書かないといけない
この同じチェックは永遠に続くの?

439:デフォルトの名無しさん
10/03/25 18:52:03
>>438
書きたければ書けばいいし、例外処理で済ますなら済ませればいい。

440:デフォルトの名無しさん
10/03/25 19:00:47
カスタマイズ可能なキーボードショートカットを実装したいです。
まず、
Up, Scroll, 20
Down, Scroll, -20
Right, Next
Left, Prev
というふうなテキストファイルを読み込んで、キーとメソッドを結び付けたいです。
(この例では、左からキー、メソッド名、パラメータにしてます)
具体的な実装方法として思いつくのが
・キーとメソッド名をもつ連想配列を用いて、switch文で分岐してメソッド呼び出し。
・switch文ではなく、リフレクションでメソッド呼び出し。
なのですが、上のはコードが冗長になりますし、下のはパフォーマンス面で不利かもしれません。
キーとデリゲートを持つ連想配列を用いて呼び出せればスマートだとは思うのですが、
引数が異なると別のデリゲートと、それを入れる連想配列を用意する必要がある(と思う)
ので悩ましいです。スマートにこなす方法なんかがあればアドバイスお願いします。

441:デフォルトの名無しさん
10/03/25 19:06:18
>>440
匿名メソッド

442:デフォルトの名無しさん
10/03/25 19:24:27
パフォーマンス気にするところじゃないな

443:デフォルトの名無しさん
10/03/25 19:38:46
>>440
その1行分を表現する構造体を作って、XMLSerializerでさくっと読み書き。
アプリ上ではDictionaryか何かの表持たせておく。
キーイベントを受け取ったら表を見て登録したメソッドを呼び出す。
メソッドの登録はdelegateかラムダ式を使えばいい。

444:デフォルトの名無しさん
10/03/25 20:39:31
ラムダ式の登場です。

445:デフォルトの名無しさん
10/03/25 20:52:59
果たしてふらっとスレの行く末やいかに!?

446:デフォルトの名無しさん
10/03/25 21:05:06
質問です

ListViewのチェックボクスのチェックを付けたり、外したりするのは画面からクリックしたときではないと無理なのですか?
ソース内でチェックを書き換えたいのですが、CheckedListBoxのSetItemCheckedメソッドみたいなのが存在しないみたいなので困っています
もともとはCheckedListBoxを使用していたのですが、アイコンを表示するためにListViewに変えました

チェックの状態が変わらないとItemCheckイベントも起きないですし、何か方法はあるのでしょうか

447:デフォルトの名無しさん
10/03/25 21:23:25
ListViewItem.Checked

448:デフォルトの名無しさん
10/03/25 21:43:06
DataTable で自動で計算する項目があるんだけど、
DataColumn.Expression では計算できないので、
DataTable.TableNewRow イベントで値を計算して入れようと思ってます。

これを XML で保存するために WriteXml すると自動で計算した項目も出力されると
思うのですが、自動で計算した項目は出力しないようにする方法はあるのでしょうか?

449:デフォルトの名無しさん
10/03/25 21:55:30
>>448
属性をつける

450:デフォルトの名無しさん
10/03/25 21:58:30
>>447
listView1.SelectedItems[0].Checkedのことですよね?
これってSelectedItemsには今チェックされている項目が格納されてると思うんですが、
このプロパティではチェックされている項目のチェックを外すことは出来てもチェックが付いていない項目にチェックを付けることは不可能ではないですか?

451:デフォルトの名無しさん
10/03/25 22:02:17
>>448
Copyして列をRemoveしたあとでWriteXmlするとか?

>>450
Itemsからアクセスすりゃよかろう

452:デフォルトの名無しさん
10/03/25 22:03:59
おおこんな簡単だったんですね
ありがとうございました

453:デフォルトの名無しさん
10/03/25 22:16:13
>>449
それとあんたうざい

454:デフォルトの名無しさん
10/03/25 22:31:10
>>453
ハァ?
無視させたいフィールド、プロパティにXMLIgnore属性をつけておいて、
XmlSerializerに食わせて吐き出させればよい。

455:デフォルトの名無しさん
10/03/25 22:37:55
やってみろw


456:デフォルトの名無しさん
10/03/25 22:43:15
webBrowserコントロール上でマウスカーソルが動いた時にイベントを拾いたいんですけど
なにか方法がありますか?FormとかButtonだとMouseMoveイベントがあったけど、それと
同等の機能がwebBrowserには見当たりません。

457:デフォルトの名無しさん
10/03/25 23:12:08
>>454
DataTable のカラムに XMLIgnore 属性つけられるなら
やってみせてくれw

458:デフォルトの名無しさん
10/03/25 23:14:05
IXmlSerializable実装して自分でシリアライズするかどうか決めたら

459:デフォルトの名無しさん
10/03/25 23:14:56
>>457
ハァ?
てめーがやれ。

460:デフォルトの名無しさん
10/03/25 23:17:29
>>458
それ結局XML吐く処理を全て自前で書くという意味だけどわかってる?

461:デフォルトの名無しさん
10/03/25 23:18:25
>>460
おお

462:デフォルトの名無しさん
10/03/25 23:18:54
>>459
馬鹿だからできねぇってこと知らないの?

463:デフォルトの名無しさん
10/03/25 23:20:14
o(´・ω・`) ぶつお

464:デフォルトの名無しさん
10/03/25 23:53:40
エクスプローラだとフォルダのプロパティで
フォルダ数、ファイル数が瞬時に出ますが
こういう機能はありますか?

465:デフォルトの名無しさん
10/03/25 23:55:37
瞬時に出ないよ。たくさんフォルダ・ファイルがあるところで見ると、
一生懸命カウントしてるのがわかる。

466:デフォルトの名無しさん
10/03/26 00:06:03
なるほど
あれはGetDirectoriesやGetFilesやるしかないですか?
ファイルやフォルダ検索の進行状況を表示させたいので
まず数を取得してやろうと思っていたんですが

467:デフォルトの名無しさん
10/03/26 00:17:52
なるほどなるほど

468:デフォルトの名無しさん
10/03/26 01:51:45
>>441-444
設定ファイルを読み込んだときに、
delegate void Invoke();

Invoke inv = () => Scroll(20);
てな感じのデリゲートをこしらえて辞書に登録すれば、呼び出し時はスマートに済ませそうですね。
こしらえるときは地道にswitchで分岐するとして。
しかしこれは、戻り値を返すメソッドの場合は呼び出し側に値を返せない欠点があります。
でも、戻り値を返すようなメソッドをキーに割り当てる場面は今のところないのでこれでいってみます。

469:デフォルトの名無しさん
10/03/26 02:26:54
コマンドのシグネチャを

void Execute(object[] parameters);

みたいにして、パラメータを配列で渡せばいい

470:デフォルトの名無しさん
10/03/26 07:19:29
>>456
URLリンク(www.k4.dion.ne.jp)

471:デフォルトの名無しさん
10/03/26 10:40:57
お世話になります。
以下のこと、教えてください。
VisualStudioにてユーザーコントロールやカスタムコントロールを作成し、ビルドすると、
そのコントロールがツールボックスの”(プロジェクト名)コンポーネント”といったタブ内に
デフォルトで配置されます。
このデフォルトの配置場所を任意のタブ内(該当タブが無ければ新規作成)にすることは可能でしょうか?
属性でなんとかなりそうな予感がしていたのですが、どうにも見つけきれませんでした。

よろしくお願いします。

472:デフォルトの名無しさん
10/03/26 10:44:25
>>471
そこは開発側で手をいれるところでなく、運用側で対処すべき問題だと思うんだが、どうよ。

473:デフォルトの名無しさん
10/03/26 10:58:04
URLリンク(codepad.org)
WINDOWSフォームを作っていてテストでちゃんと読み込んでいるかチェックしようとしたのですが
chengebox1にチェックを入れるとエラーが起きます。どこがおかしいのでしょうか

474:デフォルトの名無しさん
10/03/26 11:06:27
>>472
やはりそこは個人々々でなんとかしてもらうしかないですかね。
ありがとうございました。

475:デフォルトの名無しさん
10/03/26 11:17:37
>>473
エラーが出たならエラーの内容書けよカス

476:デフォルトの名無しさん
10/03/26 11:32:32
>>473
URLのソースコードを見てみたが、
とりあえずbutton1を押した後じゃないとcheckBox1は押しちゃいけないように見える。
というか、こんなレベルで詰まってちゃ何もできないぞ。

不具合が出たらデバッガで1行ずつ動かしながら再チェックする習慣をつけよう。

477:デフォルトの名無しさん
10/03/26 14:42:01
>>475
カス

478:デフォルトの名無しさん
10/03/26 15:39:08
URLリンク(www.atmarkit.co.jp)
このサンプルを動かそうと思ったのですが
html = ExpandTabs(html);

ネットで調べたのですがExpandTabsの所在がわかりません。
どれをusing指定すればいいのでしょうか?

479:デフォルトの名無しさん
10/03/26 15:44:31
>>478
何も考えずにソースをそのまま入れてみて
ExpandTabsにカーソルを合わせてみ

480:デフォルトの名無しさん
10/03/26 15:46:44
xxxx.ExpandTabsの形でないってことは同一クラスってことなんだが

481:デフォルトの名無しさん
10/03/26 15:48:07
>>479
そういう意味じゃなくて・・・
2004年当時と違って場所が変わってるようなので
サンプルソースのusingだけだと

エラー 3 名前 'ExpandTabs' は現在のコンテキスト内に存在しません。

となるんです。

482:デフォルトの名無しさん
10/03/26 15:51:03
ああ・・・
失礼しました

sjis使わないので・・と思って頭の方全部すっとばしてみてませんでしたorz

483:デフォルトの名無しさん
10/03/26 15:57:11
しかし意味不明な言葉だ…
> サンプルソースのusing

484:デフォルトの名無しさん
10/03/26 16:41:26
コピペも満足にできないのはつらいな

485:デフォルトの名無しさん
10/03/26 19:38:17
URLリンク(msdn.microsoft.com)
のカレンダーで遊んでみようと思っています。
このプロジェクトを開くと、
Microsoft.Windows.Controlsと
Microsoft.Windows.Controls.Primitivesの参照が必要なので、
WPFToolkitをダウンロードし、参照を追加しました。

それでもMoonPhaseCalendar/MainWindow.xamlの、
<vsm:VisualStateManager.VisualStateGroups>
の行で、
アタッチ可能なプロパティVisualStateGroupsが、
型VisualStateManagerに見つかりませんでした。
とエラーになります。
これにはどう対処したらよいでしょうか?


486:デフォルトの名無しさん
10/03/26 21:07:29
WPFのデザイナにはよくあること
まず気にせず実行してみる

487:デフォルトの名無しさん
10/03/26 22:10:49
フォームのデザインを2種類、切り替えられるアプリケーションを作っています。
複数のフォームで値を共有するにはどういった方法が適切ですか?

今は1つのフォーム内(Form1.cs)に切り替えられるよう書いていますが、
デザイナが使えないのは何かとても間違っている気がします。

1つのコンポーネントを2つのフォームから参照できるとスマートだと思うのですが・・・

よろしくお願いします。

488:デフォルトの名無しさん
10/03/26 22:17:53
>>487
Document-Viewアーキテクチャだね。
Viewから保持するデータ(Document)を分離する。
もたせ方は、コンストラクタで渡そうがプロパティで引き渡そうが好きにすればいい。

それよりも、メインのフォームを切り替えるのがちょっと面倒そうだなー、と心配するかな。

489:デフォルトの名無しさん
10/03/26 22:35:56
>>488
ありがとうございます。

Document-Viewアーキテクチャを見ると、
「そのためにWPFがあるのです。」という空耳が聞こえます、気のせいですよね。

ご指摘の通り、そこで悩んでいます。
フォームの値をまとめた構造体Dataなどを作って、

Form2 a = new Form2();
a.Data = this.Data;
this.Close();

みたいにしてもいいのでしょうか?


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch