ふらっとC#,C♯,C#(初心者用) Part39

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

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

前スレ

ふらっとC#,C♯,C#(初心者用) Part38
http://pc11.2ch.net/test/read.cgi/tech/1235864730/
2デフォルトの名無しさん:2009/03/15(日) 02:19:41
3デフォルトの名無しさん:2009/03/15(日) 02:25:39
いちおつ
4デフォルトの名無しさん:2009/03/15(日) 02:26:04
前スレ>>995
でも2〜3秒待たされますよ?フリーズしたような気分になります。
普通のソフトならほぼ一瞬なのですが。

前スレ>>996
しばらくはいいのですが、時間が経つとメモリから消えてしまうのか、
再び起動が遅くなります。
5デフォルトの名無しさん:2009/03/15(日) 02:26:36
1Z。

前スレ最後はキナ臭かったが、まったりと頼むよ。
6デフォルトの名無しさん:2009/03/15(日) 02:27:19
2〜3秒待てないって完全にマジキチだろw
7デフォルトの名無しさん:2009/03/15(日) 02:28:43
>>4
ああ、それならそのPCがどこかおかしいわ
俺のP8600の非力なノートで起動は1秒もかからないよ

一度他人のPCで起動してみたら?
8デフォルトの名無しさん:2009/03/15(日) 02:29:07
.NETを疑うよりより統合失調症を疑った方が良いんじゃないか。
9デフォルトの名無しさん:2009/03/15(日) 02:30:10
>>6
2〜3秒かかることが問題というか、非.NETアプリに比べて起動が圧倒的に遅いのが気になるんです。
実際これは自分だけじゃなくて、2chやどっかのブログでもよく言われていることだと思います。
結構大きな問題だと思うのですが…。
10デフォルトの名無しさん:2009/03/15(日) 02:31:35
>>9
俺のP8600の非力なノートで起動は1秒もかからないよ
11デフォルトの名無しさん:2009/03/15(日) 02:32:17
煽りが増えてきました。
どっから沸いてきてんだよ。
12デフォルトの名無しさん:2009/03/15(日) 02:33:12
>>10
.NET 起動 遅い
http://www.google.co.jp/search?hl=ja&safe=off&client=firefox-a&rls=org.mozilla%3Aja%3Aofficial&hs=0es&q=.NET+%E8%B5%B7%E5%8B%95+%E9%81%85%E3%81%84&btnG=%E6%A4%9C%E7%B4%A2&lr=lang_ja

ググると同様の感想を持ってる人が少なくありません。レアケースではないと思うのですが?
13デフォルトの名無しさん:2009/03/15(日) 02:33:58
2〜3秒起動が遅れることで1万円の損失でも発生してるとかいうのなら問題かもしれん。

でもそういうわけじゃないだろ。

深呼吸でもすれば起動してるんだから。
14デフォルトの名無しさん:2009/03/15(日) 02:35:54
大きな問題って何よ。
お前は「気になる」としか言ってないだろ。
15デフォルトの名無しさん:2009/03/15(日) 02:36:25
>>12
誰も遅くないなんていってないよ

2〜3秒もかかるほど遅くないっていってんの
そんだけかかるってことは、そのソフトが何かおかしいか、あなたのPC環境がおかしい

だって俺のP8600の非力なノートでは1秒もかからないで起動するもの
16デフォルトの名無しさん:2009/03/15(日) 02:36:40
>>13
いや、一回起動しておしまいならそれでいいんです。
でもメモ帳のように、起動と終了を気軽に繰り返すには気になる、ということです。
一度起動するとしばらくは再起動も速いですけど、しばらくすると元に戻ってしまいますし。
17デフォルトの名無しさん:2009/03/15(日) 02:38:55
で、2秒間の損失はおいくらですか?
18デフォルトの名無しさん:2009/03/15(日) 02:39:20
>>15
俺のPCでも2秒くらいかかるが。
VistaだったらOSロード時にコンポーネントを同時起動するから速いらしい。
19デフォルトの名無しさん:2009/03/15(日) 02:41:03
アプリの中身にもよるだろうなあ
起動時にコードを山ほど詰め込んであれば当然遅くなるわけだし

>>18
SuperFetchってやつだっけ
20デフォルトの名無しさん:2009/03/15(日) 02:41:14
そもそも起動と終了を頻繁に繰り返すような構造なら常駐させるべきだと思うけど。
前提からしておかしい。
21デフォルトの名無しさん:2009/03/15(日) 02:41:40
>>18
E7200のXPだが一瞬だぜ
そのソフトだけじゃないの?

質問者は「どんな小さなアプリでも」だぜ?
22デフォルトの名無しさん:2009/03/15(日) 02:42:28
Vista だとそこそこデスクトップでよく使うソフトは大体一瞬に
なってしまうね。今試したら VS 2008 で一回目が 2-3 秒ぐら
い、2回目だと 1秒ぐらいな感じだった。
23デフォルトの名無しさん:2009/03/15(日) 02:44:04
>>20
それはないわ。
画像ビューアやテキストエディタまで常駐させろってか?
24デフォルトの名無しさん:2009/03/15(日) 02:44:12
なんか伸びてると思ったら何だこれは・・・
25デフォルトの名無しさん:2009/03/15(日) 02:45:33
頻繁だったら常駐でいいんじゃないか?
俺はテキストエディタを常駐させてるぞ
26デフォルトの名無しさん:2009/03/15(日) 02:47:50
特定の使い方をすると重くなるって言うのもなんか外してる気がしないでもないなあ。
27デフォルトの名無しさん:2009/03/15(日) 02:49:54
アンチウィルスで、いちいちスキャンする奴は起動が遅くなるときあるよな
あと他のリソースがHDDを動作させてるとき

これと別になんか起動が遅くなったなぁと思うときは、HDDの故障の前触れ
28デフォルトの名無しさん:2009/03/15(日) 02:50:47
>>23
そういう使い方を前提としたソフトをC#で書くなら
考慮した書き方はいくらでもあるだろと言いたいのよ

真意が伝わりにくかった事は詫びよう
29デフォルトの名無しさん:2009/03/15(日) 02:53:06
んで、起動は別にc++でもmfc使ってる限りは、.netとそんなにかわらない?
それでも.netのほうが多少は遅いの?
30デフォルトの名無しさん:2009/03/15(日) 02:53:52
>>26
そんなに特別な話ではないと思います。
関連付けてエクスプローラからカチカチするようなアプリだと、よくある使い方です。
31デフォルトの名無しさん:2009/03/15(日) 02:56:55
そろそろめんどくさくなってきたな。

不満ならお前が使わなければいい。

使ってくれと土下座されてるわけでもないだろ。
32デフォルトの名無しさん:2009/03/15(日) 02:58:08
ケチ付けたいだけみたいだからもう良いよ
33デフォルトの名無しさん:2009/03/15(日) 02:59:22
javaアプリのほうがもっと遅いよな
そう考えるとネイティブコンパイルできるC++かDelphiしか解決法はないということか。
34デフォルトの名無しさん:2009/03/15(日) 02:59:30
APIスレに沸く.NET厨も酷いがこれも酷いなw

結局「気になる」以上の不満は無いんだろ。
35デフォルトの名無しさん:2009/03/15(日) 03:02:10
煽ってる奴も大概だと思う。
36デフォルトの名無しさん:2009/03/15(日) 03:02:50
で、遅いの?遅くないの?
37デフォルトの名無しさん:2009/03/15(日) 03:03:29
遅いよ。超遅い。デラ遅い。
だから素人は使わないで。
38デフォルトの名無しさん:2009/03/15(日) 03:06:00
遅いの定義次第だな
何を持って遅いとするのか
39デフォルトの名無しさん:2009/03/15(日) 03:09:44
知らないならレスしないで下さい。ウザイだけです。
40デフォルトの名無しさん:2009/03/15(日) 03:12:23
↓今日一番非生産的なレス
知らないならレスしないで下さい。ウザイだけです。
41デフォルトの名無しさん:2009/03/15(日) 03:13:57
じゃあそのレスもらいます
42デフォルトの名無しさん:2009/03/15(日) 03:15:20
ウザイと思う奴はウザイという書込をみてウザイと思わないのかね
43デフォルトの名無しさん:2009/03/15(日) 03:18:04
OKWAVEでやれ
44デフォルトの名無しさん:2009/03/15(日) 03:43:52
結局、具体的になんの.NETアプリが遅いのか教えてよ。
45デフォルトの名無しさん:2009/03/15(日) 03:48:49
>>29
起動ってのが例えばウインドウが表示されるまでだとしたら、
ウインドウを表示するコードもJITコンパイルされるので.netの方が遅いよ。

つーかね、そんな事気にしてたらこの先Windows使えないっすよ。
46デフォルトの名無しさん:2009/03/15(日) 04:22:22
>>45
起動を別にって言ってるのにそういう例を提示するということは、
一つのアプリがフォームを新たに表示しようとするたびにコンパイルされて
表示が遅いということだな?
47デフォルトの名無しさん:2009/03/15(日) 04:39:25
プロジェクトが2つあって一つがクラスライブラリなんですが
クラスライブラリの出力タイプを持つプロジェクトを直接起動することはできませんとでて実行できません
F5押したときにもう一方のプロジェクトだけ起動するようにするにはどうすればいいんですか?
48デフォルトの名無しさん:2009/03/15(日) 04:41:13
ソリューションのプロパティスタートアッププロジェクトの設定で解決しました
49デフォルトの名無しさん:2009/03/15(日) 04:44:33
ファイルは必ずnamespaceのなかにクラス作らなきゃいけないんですか?
50デフォルトの名無しさん:2009/03/15(日) 05:28:45
スレッド セーフってなんですか?
51デフォルトの名無しさん:2009/03/15(日) 05:31:15
"必ず"ではない。
だが、たいていの人は名前空間を必ず指定する。
52デフォルトの名無しさん:2009/03/15(日) 05:40:42
ユーザから見たら起動が遅いってのはストレスだからなぁ。
個人的には解決したい事項の1つ。ngenはあまり効果ないみたいだし。
exeがクリックされたら、アンマネージでスプラッシュWindow出しつつ
裏で.NET起動とか、なんか体感速度的にでもごまかす方法ないかなぁ。
あ、でも、頻繁に起動するアプリでスプラッシュWindowは返ってウザイか。
Windowの閉じるボタン押されたらとりあえず非表示にして、
裏でタイマー回して1時間後に終了とか。
53デフォルトの名無しさん:2009/03/15(日) 05:53:03
仕組みがよくわからないんですが、namespaceは同じで2つのファイルにクラスをそれぞれ作った場合
同じプロジェクト内の第3者ファイルで使う場合はusingで名前を指定しなくても2クラスとも使えるようになりますよね
最初にusingでいっぱい指定してある奴ってどこにあるプロジェクトなんですか?
同じソリューションで2つプロジェクトを作って、片方のプロジェクトからもう一方のプロジェクトのクラスが見えないんですけど
usingしてから使おうとしても現在のコンテキスト内に存在しませんといわれるんですが、どういうことですか?


54デフォルトの名無しさん:2009/03/15(日) 05:53:18
.NETアプリってなんで起動読み込み時にマウスカーソルの砂時計状態が普通のカーソルに戻るんだろ?
それのおかげで起動したのか、ダブルクリック失敗したのか迷うことがある
55デフォルトの名無しさん:2009/03/15(日) 06:03:04
単語をクリックしたときにダイナミックヘルプにいろいろ出てきますが、
これの項目が2重にダブってて、中をよく比べたら
.NET Framework クラス ライブラリ
Silverlight 用 .NET Framework クラス ライブラリ
の2つが同時に表示されてるんですが、Silverlight 用だけ表示させないようにするにはどうすればいいんでしょうか
56デフォルトの名無しさん:2009/03/15(日) 06:03:42
>>53 つ参照
57デフォルトの名無しさん:2009/03/15(日) 06:38:26
プロジェクトのConsoleApplication1を
プロジェクトのConsoleApplication2の参照に追加できましたが、
using ConsoleApplication1;
と書いてもConsoleApplication1の中のクラスが使えるようになりません。あとどうすればいいですか?
58デフォルトの名無しさん:2009/03/15(日) 06:40:32
クラスをpublicにすればいい
59デフォルトの名無しさん:2009/03/15(日) 07:15:44
できました。ありがとうございました
60デフォルトの名無しさん:2009/03/15(日) 07:25:03
public class Class1 {
 int a = 1;
 public void num() {
  int b = new int();
  b = 2;
  int c = 3;
 }

 public void test() {
  Console.Write(a);
  Console.Write(b);
  Console.Write(c);
  String name = Console.ReadLine();
 }
}
これの
Console.Write(b);
Console.Write(c);
のbとcで、コンテキスト内に存在しませんとエラーが出るんですが
どうすれば他のメソッドの変数が使えるようになりますか?
61デフォルトの名無しさん:2009/03/15(日) 07:26:41
なりません
62デフォルトの名無しさん:2009/03/15(日) 07:28:51
メソッドから出せ
public class Class1 {
 int a = 1;
 int b;
 int c;
 public void num() {
  b = 2;
  c = 3;
 }

 public void test() {
  Console.Write(a);
  Console.Write(b);
  Console.Write(c);
  String name = Console.ReadLine();
 }
}
63デフォルトの名無しさん:2009/03/15(日) 07:31:00
なんという初心者らしい質問
おじさんの髪の毛に希望ができたよ
64デフォルトの名無しさん:2009/03/15(日) 07:32:18
なごむ(´ω`)
65デフォルトの名無しさん:2009/03/15(日) 08:58:21
メソッドの変数は外と連絡とれないんですね。
ということはnewは省略可能なだけってことなんですねありがとうございました。

public class Class1 {
 public int b = new int();
 public Class1() {
  b = 1;
 }
 public void num() {
  b = 2;
 }
}

class Program2 {
 static void Main(string[] args) {
  String name;
  Class1 cls = new Class1();
  using (Class1 cls2 = new Class1()) {
   cls2 = cls;
   cls.num();
   Console.Write(cls2.b);
  }
  cls2.num();
  Console.Write(cls2.b);
  name = Console.ReadLine();
 }
}

これのusingでエラーがでるんですが、IDisposeへの変換が可能でなければならないってどういうことですか?
66デフォルトの名無しさん:2009/03/15(日) 09:31:11
すいませんIDisposableの派生クラスにしたらできました。
67デフォルトの名無しさん:2009/03/15(日) 16:25:35
何の本見て勉強したんだか分からんが、
new int()とか、何も分かってないのにIDisposeだの
基礎がガタガタなので、何か本買って勉強し直すといいよ。
68デフォルトの名無しさん:2009/03/15(日) 16:28:48
new int()

これコンパイル通るのか?
69デフォルトの名無しさん:2009/03/15(日) 16:29:22
通るよ
70デフォルトの名無しさん:2009/03/15(日) 16:32:58
using (Class1 cls2 = new Class1())
……何がやりたいのかさっぱり分からない。
71デフォルトの名無しさん:2009/03/15(日) 16:37:29
何のためにusingしてるのか良く分からん
72デフォルトの名無しさん:2009/03/15(日) 17:30:01
Linux上でもMonoのAOTコンパイラを使うとネイティブコードが作れると聞きましたが
VM上のJITコンパイラやC++と比較してパフォーマンスはどの程度期待できるでしょうか
73デフォルトの名無しさん:2009/03/15(日) 17:36:19
値型と参照型の違いが分かってないとか?
new int()なんて通すなよ
74デフォルトの名無しさん:2009/03/15(日) 17:40:54
そんな責めるなよw
75デフォルトの名無しさん:2009/03/15(日) 18:04:38
別にSystem.Int32のコンストラクタ呼んだっていいじゃん。
値型はコンストラクタ呼べないとでも思ってるのか?

Point p = new Point();

全然おかしくない。
76デフォルトの名無しさん:2009/03/15(日) 18:48:29
75はC++/CLIをやると、愕然とすると思う。
77デフォルトの名無しさん:2009/03/15(日) 19:03:23
C++ は new の有無で値型か参照型(ヒープにメモリアロケート)か区別するけど、
其の文化が C# にはないからなぁ。
78デフォルトの名無しさん:2009/03/15(日) 21:32:44
C#スレを見ると当たり前のようにラムダ式とかFuncとか使ってるけど、
.NET3.0以上を入れないとそのアプリを利用できないことはスルー?
特定の人向けの場合は別として、そのためだけに新しく.NETを入れさせるのってどうなのよ?
一般向けのフリーソフトを作りたい場合はせめて2.0までの構文で抑えるべきだと思うんだが。
79デフォルトの名無しさん:2009/03/15(日) 21:37:43
これはひどい
昨日のネタはいいところを突いてきたと思ったんだが
80デフォルトの名無しさん:2009/03/15(日) 21:38:10
Vista なら、3.0 は最初っから入ってるし・・・
81デフォルトの名無しさん:2009/03/15(日) 21:45:31
まだXPの人も多いでしょ。
実際、「動作には.NET2.0以上が必要です」って書いてあるだけで興味失う人も多いようだが?
そろそろ普及してきた感のある2.0ですらそうなんだから、3.0とかありえないレベルだろ。
自動アップデートじゃ入らないんだから、入れてない人もかなりいるはずだし。
82デフォルトの名無しさん:2009/03/15(日) 21:48:54
言わんとすることは理解できる。が、ここは「C#でフリーソフトを作ろう」スレじゃないしな・・・
使える範囲で使えばいいだけだろ。

それを踏まえると、質問するのにあたって、「C# 2.0 で」って指定はありだろうね。
83デフォルトの名無しさん:2009/03/15(日) 21:49:23
実際にやってみてから言え、クソが
84デフォルトの名無しさん:2009/03/15(日) 21:49:29
Windows 7 だと 3.5SP1 かな。
個人的にゃそんなこと気にするやつなら初めから C++ で作るので
どうでもいいが。
もっというとどうせインストーラ作らなきゃいけなくてそこで入れるだけ
だからさらにどうでもいいが。
85デフォルトの名無しさん:2009/03/15(日) 21:50:03
.net3.0インストールしたくないなら.net3.0アプリ使わなきゃいいんだし。
.net3.0アプリ使いたければ.net3.0インストールすればいいんだし。
使うかどうかは自由じゃないか?
86デフォルトの名無しさん:2009/03/15(日) 21:52:21
.NETまで勝手に入れるインストーラとかウザすぎだわ
87デフォルトの名無しさん:2009/03/15(日) 21:52:54
Microsoftに聞いてください
88デフォルトの名無しさん:2009/03/15(日) 21:54:45
あと.NET 2.0対象でもコンパイラで完結する機能は使用可能なことをお忘れ無きよう。
89デフォルトの名無しさん:2009/03/15(日) 22:29:51
WinForms
ボタンを押したらアニメーションを再生/一時停止するような
プログラムを作るにはどうすればいいですか?
90デフォルトの名無しさん:2009/03/15(日) 22:32:27
ASP.NET
ボタンを押したら牛丼が出来上がるよな
プログラムを作るにはどうすればいいですか?
91デフォルトの名無しさん:2009/03/15(日) 22:40:38
自動アップデートで3.5入ってるだろ
92デフォルトの名無しさん:2009/03/15(日) 22:40:48
C++で作ったクラスやlibファイルはC#で使えるの?
9389:2009/03/15(日) 22:42:41
×WinForms
○WinFormsで

//Form1.Desginer.cs
this.Click += new System.EventHandler(this.Play_Clicked);
//Form1.cs
private void Play_Clicked(object sender, EventArgs e)
{
}

↑この関数の中でどうやってアニメーションを開始すれば?
94デフォルトの名無しさん:2009/03/15(日) 22:46:33
>>89
マネージドなコントロールはないと思うんで、Media Player を埋め込みで。

>>92
無理
95デフォルトの名無しさん:2009/03/15(日) 23:17:51
>>78
ラムダ式は.NET2.0でも使える。
96デフォルトの名無しさん:2009/03/15(日) 23:29:37
>>46
違います。初めて実行する処理が遅いだけです。
フォームの表示であれば、違うフォームでも表示するコードは内部で共通なので2枚目以降はそれほど遅くないでしょう。

それと、なぜmfc使ってる場合と比較したがるのかよく分からないのですが。
97デフォルトの名無しさん:2009/03/15(日) 23:36:10
>>96
Vistaなら早いよ(^O^)
まぁそういう事なんでしょう…
98デフォルトの名無しさん:2009/03/15(日) 23:59:49
>>96
遅いです。問題視しました。これでいいのか?
どういう方向に話しを持って行きたいのかさっぱりわからない。
99デフォルトの名無しさん:2009/03/16(月) 00:03:20
>>96
C++でMFC使わずWinAPI直に使うとか・・生産性悪すぎて話しにならん
同等の機能を実現するのにC#とは比べ物にならんくらいの時間と労力がいる。

ここはプログラムを"作る人"のための板なわけだが、お前さんは作った事あるのか?
ソフトウェア板にでも行った方が良くないか?
100デフォルトの名無しさん:2009/03/16(月) 00:08:00
質問です。
VS2008 .NET3.5でWebClietnを使ってます。

WebClientはDownloadData()と
DownloadFile()の二つのメソッドを実行します。

DownloadDataは問題ないのですが
アプリをWindowsVistaからproxyサーバを介して
DownloadFileを実行すると
「サーバーによってプロトコル違反が発生しました。
Section=ResponseStatusLine」
という例外が発生します。
WindowsXPでは発生しません。
proxyサーバはubuntu8でsquidを使用しています。

WebClientからこれを回避する方法をどなたかご教授ください。
よろしくお願いします。
101デフォルトの名無しさん:2009/03/16(月) 00:16:54
>>98
>遅いです。問題視しました。これでいいのか?
何がですか?あなたの話こそ意味が分かりません。
あなたはどのレスした人ですか?

>>99
>C++でMFC使わずWinAPI直に使うとか・・生産性悪すぎて話しにならん
>同等の機能を実現するのにC#とは比べ物にならんくらいの時間と労力がいる。
飛躍しすぎてると言うか、そんな話は誰もしてないです。

前スレ>>989
>c++もmfc使っていれば、.netと同じでdll経由してるから、同じようなもんじゃいの?
と言っていたので、dllの初回ロードと.netの初回実行時コンパイルは、最初に実行されるってことでは同じだけど、違う性質の処理です。
それなのになぜあなたはMFCのdll呼び出しとの比較にこだわるんですか。
ということを質問しただけです。
102デフォルトの名無しさん:2009/03/16(月) 00:26:14
>>101
お前は何が言いたいんだ?叩きたいだけなのか?
満足できないなら自分でC++使って作ればいいじゃないか。
103デフォルトの名無しさん:2009/03/16(月) 00:28:59
C#質問スレなんだからC#の話しようぜ!
104デフォルトの名無しさん:2009/03/16(月) 00:29:06
起動が遅いとか欠点があるのは承知で使っている。
それよりも得られる利点のほうが多いと踏んで。
105デフォルトの名無しさん:2009/03/16(月) 00:30:50
何度いってもわからないやつは馬鹿もしくは池沼
106デフォルトの名無しさん:2009/03/16(月) 00:36:59
>>102
C#を叩いているつもりは毛頭無いし、むしろC#好きです。
ただMFCのdll呼び出しと比較するようなもんじゃないよということを言いたかっただけ。

スレ的に邪魔そうなんでもう消えます。
107デフォルトの名無しさん:2009/03/16(月) 00:38:41
Vistaなら…
108デフォルトの名無しさん:2009/03/16(月) 00:42:21
>>106は最初に起動が遅いのが云々言っていた輩とは別とおも。

ところで、C#2005のソースはSHIFT-JISで保存されているんだけど
これってデフォルトだっけ?出来ればUTF-8に変えたいんだけど。
109デフォルトの名無しさん:2009/03/16(月) 02:34:55
>Shift-JIS
うん

>UTF-8
BOM付ければ勝手に認識したと思う
だめなら codepage オプションかなんかだったかと
110デフォルトの名無しさん:2009/03/16(月) 06:12:53
>>108
テンプレートを UTF-8 版に(手動で)変更する、とかしないとダメだったかと。
111デフォルトの名無しさん:2009/03/16(月) 09:07:37
112デフォルトの名無しさん:2009/03/16(月) 10:49:23
初回コンパイルが気になるなら
インストール後にngenするようにインストーラに書いときゃいいだろ
113デフォルトの名無しさん:2009/03/16(月) 11:29:28
IntPtr pt = Marshal.AllocHGlobal(1228800);

ImageBuf = new Bitmap(640,
480,
2560,
System.Drawing.Imaging.PixelFormat.Format32bppArgb,
pt);

こういうコード書いた場合
ガーベジ働いたら,ptが勝手に解放されたりとか
Bitmap内の画像メモリバッファが動いたりして
軽くヤバイんでしょうか?

現状,ptに対して,Marshal.Copy()にて画像コピーしまくっています
114デフォルトの名無しさん:2009/03/16(月) 12:16:39
アンマネージドメモリにGCは干渉できない
115デフォルトの名無しさん:2009/03/16(月) 12:52:07
メソッドとフィールを書く順番って決まってるんですか?どっちが上か下かとか
116デフォルトの名無しさん:2009/03/16(月) 12:56:49
namespaceの名前の付け方なんですが
これ複数のプロジェクトから少しづつ使えそうなコード持ってきて
新たにプロジェクトで使うときのusingがめんどくさいし、統一できてないんですが
これ名前の付け方ってデフォルトだとプロジェクト名じゃないですか
namespaceの存在理由が他のnamespaceと区別を付ける目的だとしたら
自分が使うプロジェクトはすべて同じnamespaceに書き換えるのはありですか?
この辺どうやってますか?
117デフォルトの名無しさん:2009/03/16(月) 13:00:16
クラス名 インスタンス名;
クラス名 インスタンス名 = new クラス名();

この2つの違いがわかりません
newしなくても同じように使えてる気がするんですが、何がちがうんでしょうか
118デフォルトの名無しさん:2009/03/16(月) 13:06:39
同じように使えてませんよ
119デフォルトの名無しさん:2009/03/16(月) 13:07:36
>>117

List<string> list1;
List<string> list2 = new List<string>();

list1.add("test"); //こっちは実行時エラーになる、当然コンパイルは通る
list2.add("test");
120デフォルトの名無しさん:2009/03/16(月) 13:08:40
>>114

ってことは,ガーベジにてBitmapオブジェクト内の
画像バッファのアドレスは,絶対動かないってことですね

サンクスです
121デフォルトの名無しさん:2009/03/16(月) 13:09:09
>>115
自由
プロジェクトで規約が示されたりするかもしれないけどな

>>116
基本はこれ
<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]
そもそも
> これ複数のプロジェクトから少しづつ使えそうなコード持ってきて新たにプロジェクトで使う
てのが好ましくない
モジュール化を進めてDLLとして再利用できる形にしたほうがいいと思う
122デフォルトの名無しさん:2009/03/16(月) 13:10:10
ガーベジとか中途半端な略し方はやめて それじゃただのゴミだ
123デフォルトの名無しさん:2009/03/16(月) 13:36:34
>>119>>121
thx
newしなくても使えたような気がしたんだけど気のせいかな・・・
あともうひとつ教えてください
一つのファイルに100行ぐらいしかなくてファイル数ばっかり大量にあるんですが
これっておかしいですか?なんか一つのファイルに2つ以上クラスがあるとすごい見ずらいんで細かく分けるようにしたんですが
で、usingの部分をいつも追加するのがいやになりました。まとめてusingだけのファイルから参照するとかはできないですか?
124デフォルトの名無しさん:2009/03/16(月) 13:42:41
>>123
newしなくても使えてるのは値型。値型と参照型があるんで調べてみ。
C#で書いたclassは全て参照型。
125デフォルトの名無しさん:2009/03/16(月) 13:47:52
>newしなくても使えてるのは値型
ブブー
126デフォルトの名無しさん:2009/03/16(月) 13:56:15
>>123
別に同一プロジェクト内で"クラスの追加"をしていった場合、
usingを追加する作業は要らないと思うんだけど
127デフォルトの名無しさん:2009/03/16(月) 14:03:09
>>125
フィールドの値型なら暗黙に初期化されるから強ち間違いではない……とか
// 苦しい弁護だな
128デフォルトの名無しさん:2009/03/16(月) 14:14:12
>>126
そうなんですか?
using System;
using System.Collections.Generic;
using System.Linq;
クラスファイルを追加するとこれしかなくて
全体に追加したいusingを毎回手動追加してるんですが
129デフォルトの名無しさん:2009/03/16(月) 14:30:43
>>92
libをDLLにすればそれを呼び出せるよ。
130デフォルトの名無しさん:2009/03/16(月) 15:22:35
>>127 つ構造体
131デフォルトの名無しさん:2009/03/16(月) 15:32:15
>>130
値型でもローカル変数なら明示的な初期化が必要だぜ
// 配列の要素なら暗黙に初期化されるから……うん、やっぱり苦しいな
132デフォルトの名無しさん:2009/03/16(月) 15:42:00
newと初期化が関係あるのかと
133デフォルトの名無しさん:2009/03/16(月) 15:55:23
newとかusingとか、同じキーワードを全然違う意味のところに使いまわすのは
どういうセンスなんだぜ?
134デフォルトの名無しさん:2009/03/16(月) 15:56:42
VBの惨状を回避するため
135デフォルトの名無しさん:2009/03/16(月) 15:58:02
>134
詳しく
136130:2009/03/16(月) 17:23:46
>>131はnew と初期化をごっちゃにして
無駄なインスタンスnewしまくってるやつに思えてならない。
あと何言ってるのかさっぱりわからない。
137デフォルトの名無しさん:2009/03/16(月) 19:45:19
素人な質問でスイマセンが教えてください。
TextBoxを派生させてOnPaintをオーバーライドしているのですが、
文字入力中だけ背景色や文字のサイズなどが変わってしまいます。
(OnPaintが呼ばれてない?)
文字入力中も見た目を制御するにはどうすればいいのでしょうか?
138デフォルトの名無しさん:2009/03/16(月) 21:18:38
入力中じゃなくても常にTextBoxのOnPaint/Paintは呼ばれなかったと思うけど。
RichTextBox使うんじゃ駄目?
139137:2009/03/16(月) 23:44:18
確かにデフォルトでは、OnPaintは呼ばれませんでしたが、
SetStyle(ControlStyles.UserPaint, true);
にしてやると、文字入力のとき以外は呼ばれるようになりました。
RichTextBoxは全然使ったことなかったです。
とりあえずRichTextBoxでできるところまで試してみます。
また頭が死にそうになったら質問するかもしれないですが、
そのときはよろしくお願いいたします。
ありがとうございました。
140デフォルトの名無しさん:2009/03/17(火) 01:16:52
メソッドから抜けても値を保持していて、
再びメソッドが呼び出された時に使えるローカル変数って作れないんでつか?
タイマーイベントをカウントしたい時とか、グローバルっぽい変数作ると混乱してくるけど
上手い方法が分からないのでこんな感じですが↓もっといい方法やってる人いますか?

public class Form1 : System.Windows.Forms.Form
{
int YaranaikaCount = 0;
(・・・略・・・)
private void timer1_Tick(object sender, EventArgs e)
{
YaranaikaCount++;
if (YaranaikaCount > 4)
{
YaranaikaCount = 0;
Ahhhhh();
}
else
{
UhoUho();
}
}
}
141デフォルトの名無しさん:2009/03/17(火) 01:21:08
作れません
なぜならそういうのはローカル変数とは言わないので
142デフォルトの名無しさん:2009/03/17(火) 01:23:25
な、なんか崩れてしまいましたので再送します…

: public class Form1 : System.Windows.Forms.Form
: {
:   int YaranaikaCount = 0;
:   (・・・略・・・)
:    private void timer1_Tick(object sender, EventArgs e)
:   {
:     YaranaikaCount++;
:      if (YaranaikaCount > 4)
:       {
:         YaranaikaCount = 0;
:         Ahhhhh();
:       }
:       else
:       {
:         UhoUho();
:       }
:   }   
: }
143デフォルトの名無しさん:2009/03/17(火) 01:31:01
Cのstaticみたいな物はないので、フィールドで代用する。
144デフォルトの名無しさん:2009/03/17(火) 03:01:36
メソッドに引数にメンバの中身を渡すのではなくて、メンバを渡すにはどうすればいいんですか?
どのメンバかを判断したあと、そのメンバの中を参照したいんです。
145デフォルトの名無しさん:2009/03/17(火) 03:04:54
そのオブジェクトのインスタンスを渡せばいいんでないの?
146デフォルトの名無しさん:2009/03/17(火) 08:34:39
>>144
ref
147デフォルトの名無しさん:2009/03/17(火) 08:35:36
変数を変えると一括変換のアイコンが出てくるじゃないですか
あれ変更したくない時マーク消す方法はありませんか?
148デフォルトの名無しさん:2009/03/17(火) 09:30:00
日本語でおk
149デフォルトの名無しさん:2009/03/17(火) 11:12:13
>>140
そういうのは普通メンバ変数で管理するもんだろjk
150デフォルトの名無しさん:2009/03/17(火) 20:31:35
ある条件が通ったときに、ボタンを押したと同じ意味になるプログラムってどういう風に書けばいいでしょうか
ただ、ボタンのメソッドというか処理とかはないです。IDだけで。
なぜなら、CollapsiblePanelていうので、プロパティとして?使ってるからなんじゃないかと思います。
なんでCollapsiblePanelに開いた状態のプロパティがないんだろう・・・初期状態の開閉プロパティはあるのに。
意味がわからない;;助けてください
151デフォルトの名無しさん:2009/03/17(火) 20:34:11
日本語でおk
152デフォルトの名無しさん:2009/03/17(火) 20:37:50
読んでると脳内がごちゃごちゃしてくる文章だなあ
153デフォルトの名無しさん:2009/03/17(火) 20:43:29
一個ずつ解決しようとするなら、
まず
if(i=1)
{
ボタンAをクリック
}
という処理はかけますか?
154デフォルトの名無しさん:2009/03/17(火) 20:45:40
CollapsiblePanelはとりあえず置いとこうぜ
155デフォルトの名無しさん:2009/03/17(火) 21:36:31
無理かな?
if(i=1)
{
CollapsiblePanelがパカっと開く
}
これでも考えてるのだけど
156デフォルトの名無しさん:2009/03/17(火) 21:55:50
WPFならRaiseEventとかあったと思う。
157デフォルトの名無しさん:2009/03/17(火) 22:10:05
自分用の2ch専ブラウザを作っているのですが
htmlテキストの取得まではできたのですが
書き込みはどのようにするといいんでしょうか?
テキストセットしてボタンを自動で押させるのだと思うんですが
158デフォルトの名無しさん:2009/03/17(火) 22:14:34
159デフォルトの名無しさん:2009/03/17(火) 22:15:21
>>157
WebBrowser でやるならそんな感じ。リクエストを投げるなら、
HttpWebRequest で Post。
160デフォルトの名無しさん:2009/03/17(火) 22:18:49
さっそくどうも
う〜ん難しそうですね
よく読んでみます
161デフォルトの名無しさん:2009/03/18(水) 15:09:29
クラスAで初期化(インスタンス?)したクラスBの
プロパティをクラスCから読み書きしたい場合は
クラスAのインスタンスをPublicにしてアクセスするもの
なんでしょうか。定石があれば教えて下さい。
162デフォルトの名無しさん:2009/03/18(水) 15:26:20
よくわからんけどこんな感じのことを言ってる?

public ClassA{ public ClassB b = new ClassB(); }
public ClassB{ public string s = "test"; }

ClassC
{
  public ClassC()
  {
    ClassA a = new ClassA();
    Console.WriteLine(a.b.s);
  }
}
163デフォルトの名無しさん:2009/03/18(水) 16:00:08
正にそう言うことです。
そういうアクセスの仕方が一般的なのかと思いまして。
164デフォルトの名無しさん:2009/03/18(水) 16:10:54
プロパティはどこに行ったんだ
165デフォルトの名無しさん:2009/03/18(水) 16:11:59
直接フィールド公開するのは論外として、
ClassAがstring型プロパティとして公開するか直接ClassBを公開するかは場合による
166161:2009/03/18(水) 17:46:13
>>165
今回の場合、以下のような構成になっています。
・クラスA(メインフォーム。起動時に各種設定値を読み込みクラスBに格納)
・クラスB(設定値を保持する為のクラス。プロパティやフィールドのみ)
・クラスC(クラスAから開かれるオプション画面)

クラスAからクラスCを開いたときに既に読み込まれたクラスBの設定値を
読み込みクラスCの各種コントロールに反映したいのですが、クラスCで
クラスBを初期化すると値まで初期化されてしまい困っています。

こういう場合はどのようにするのが定石でしょうか。
>>161,163は携帯からだったので端折ってしまってすいません。
167デフォルトの名無しさん:2009/03/18(水) 17:50:36
ClassCもフォームなんだよね?

そういう場合はClassAの側でClassCのプロパティを設定してやる方がいいんじゃないかな
ClassCのコンストラクタにClassBの参照渡すとかね
168161:2009/03/18(水) 18:17:10
>>167
フォームです。ClassCでプロパティを作成するのは面倒なので
後者の方法についてどのようにするか色々調べてみます。
有り難う御座いました。
169デフォルトの名無しさん:2009/03/18(水) 19:09:49
IEnumerableをシリアル化するには、どのような方法を利用すればいいですか?
170デフォルトの名無しさん:2009/03/18(水) 19:36:26
ToArray
171デフォルトの名無しさん:2009/03/18(水) 20:10:29
フォームを最大化する時にその中のコンポーネントも連動して
同じ比率で大きくしたいんですけどどうすればいいですか?
最大化する時に一々それぞれのサイズをいじるしかない?
172デフォルトの名無しさん:2009/03/18(水) 20:25:16
>>171 Control.Anchorプロパティとかで解決できるかな?
173デフォルトの名無しさん:2009/03/18(水) 20:26:00
>>171
普通はSplitContainerを使う
174デフォルトの名無しさん:2009/03/18(水) 22:55:24
変数の型で同じバイト数のものならやっぱり
少数型より整数型のほうが速いですか?
175デフォルトの名無しさん:2009/03/18(水) 22:56:02
>少数型
そんなものはありません
176デフォルトの名無しさん:2009/03/18(水) 22:59:27
失礼 小数
177デフォルトの名無しさん:2009/03/18(水) 23:01:45
初めから答える気のない奴が
揚げ足を取るだけのためにレスしてるだけだから気にすんな
178デフォルトの名無しさん:2009/03/18(水) 23:04:15
自己紹介するスレじゃないよ
179デフォルトの名無しさん:2009/03/18(水) 23:04:43
速いかどうかは環境依存
180デフォルトの名無しさん:2009/03/18(水) 23:05:13
お前も自己紹介してるやないけ
181デフォルトの名無しさん:2009/03/18(水) 23:06:55
くやしかったかい?
182デフォルトの名無しさん:2009/03/18(水) 23:07:48
はい
くやしかったです
183デフォルトの名無しさん:2009/03/18(水) 23:07:52
最後までレスし続けたほうが勝ちかい?
184デフォルトの名無しさん:2009/03/18(水) 23:08:32
そう思います
185デフォルトの名無しさん:2009/03/18(水) 23:08:37
いや君の勝ちでいいよ?
186デフォルトの名無しさん:2009/03/18(水) 23:08:40
じゃあ俺の勝ちだろ
お前ら弱すぎワロタ
187デフォルトの名無しさん:2009/03/18(水) 23:08:59
これだから理系は困る
188デフォルトの名無しさん:2009/03/18(水) 23:10:04
理系って?文系って?なに?説明してくれない?
189デフォルトの名無しさん:2009/03/18(水) 23:10:12
175 名前: デフォルトの名無しさん [sage] 投稿日: 2009/03/18(水) 22:56:02
>少数型
そんなものはありません

とりあえずさらしage
190デフォルトの名無しさん:2009/03/18(水) 23:11:40
中卒には関係ないよ 区別があるのは高校からですよ
191デフォルトの名無しさん:2009/03/18(水) 23:11:42
必死だな
192デフォルトの名無しさん:2009/03/18(水) 23:11:47
>>174
とりあえずint(System.Int32)で扱えば一番良いはず。
193デフォルトの名無しさん:2009/03/18(水) 23:12:53
理系とか文系という言葉に強烈に反応するのが約一名いるのは仕様ですか?
194デフォルトの名無しさん:2009/03/18(水) 23:13:40
おまえら#regionで畳んどけよ
195デフォルトの名無しさん:2009/03/18(水) 23:14:29
変換ミスぐらい許容できないバカがいるから荒れるんだよな
196デフォルトの名無しさん:2009/03/18(水) 23:15:20
いやその後の方が問題だ
197174:2009/03/18(水) 23:15:23
>>192
どうも
できるだけ32bitのものを使おうとおもってますが
最近はjavaとかも64bit版あったりするんでどんなもんかなと思いまして
198デフォルトの名無しさん:2009/03/18(水) 23:17:02
基本クラスのメソッドに含まれるメンバ変数の値を
派生クラス側で変更して、そのメソッドを使いたいんですが
どうしたらいいのでしょうか?
199デフォルトの名無しさん:2009/03/18(水) 23:19:03
>>197
実際のところ64bit整数は32bitと同じかそれ未満の速度になるよ
200デフォルトの名無しさん:2009/03/18(水) 23:20:52
>メソッドに含まれるメンバ変数
とは何だ?
201デフォルトの名無しさん:2009/03/18(水) 23:22:19
>>198
値って引数のこと?
202デフォルトの名無しさん:2009/03/18(水) 23:23:54
>>198
やりたい事をそれっぽいコードで示してみ
203174:2009/03/18(水) 23:24:26
そうですか
これらの速度をベンチマークで比較してるとこがあればいいんですけどねえ
204デフォルトの名無しさん:2009/03/18(水) 23:26:06
virtual?
205デフォルトの名無しさん:2009/03/18(水) 23:26:56
きっと斜め上の回答が来る筈。
って事で、メソッド内のローカル変数だと予想
206デフォルトの名無しさん:2009/03/18(水) 23:28:49
>>198
>>60-62と同じような質問にも読める
207デフォルトの名無しさん:2009/03/18(水) 23:34:07
結局どれなんだよ・・・
208デフォルトの名無しさん:2009/03/18(水) 23:35:34
>>202
こういう感じです
派生クラスでメソッドを書き直すしかないですか?

public class A{
int x = 10;
public MethodA(){
Console.WriteLine("ここに表示される値を変えたい→ " + x);
}
}

public class B : A{
new int x = 20;
}

public class DEMO{
public static void Main(){
B b = new B();
b.MethodA(); //ここで20と表示したい
}
}
209デフォルトの名無しさん:2009/03/18(水) 23:40:05
>>208
これでどうだ
public class A
{
protected int x = 10;
public void MethodA()
{
Console.WriteLine("ここに表示される値を変えたい→ " + x);
}
}
public class B : A
{
public B()
{
this.x = 20;
}
}
public class DEMO
{
public static void Main()
{
B b = new B();
b.MethodA(); //ここで20と表示したい
}
}
210デフォルトの名無しさん:2009/03/18(水) 23:49:16
>>209
おー、これです
ありがとうございます
211デフォルトの名無しさん:2009/03/19(木) 00:05:49
選択した文字列を引数としてプログラムを起動するにはどうしたらいいですか?
212デフォルトの名無しさん:2009/03/19(木) 00:08:21
213137:2009/03/19(木) 00:55:19
>>210
しかと吟味の上、よきに計らえ
214デフォルトの名無しさん:2009/03/19(木) 00:57:01
ごばorz
215デフォルトの名無しさん:2009/03/19(木) 01:30:02
どこの誤爆だよwww
216デフォルトの名無しさん:2009/03/19(木) 03:00:49
現在アクティブになっている他アプリのウィンドウ名を取得することはできますか?
出来るのであればご教授お願いします。
217デフォルトの名無しさん:2009/03/19(木) 03:18:50
>>211
Main関数の中に配列いれろ
218217:2009/03/19(木) 03:20:26
言い方が悪かった

static void Main(string[] args)

こういう感じね


後選択した文字列ってのが意味解らない
219デフォルトの名無しさん:2009/03/19(木) 03:22:41
user32.dllのGetForegroundWindowとGetWindowTextをDllImportして使う。
HWNDにIntPtr、LPTSTRにStringBuilderを使っとけばおk

詳しいやりかたはぐぐれ
220デフォルトの名無しさん:2009/03/19(木) 03:26:09
>>211
System.Diagnostics.Process.Start("app.exe", "args");
こういう事をしたいのか?
221デフォルトの名無しさん:2009/03/19(木) 03:32:12
>>219
ありがとうございます。
そのヒントを元に検索し、緑のバイクさんのところのコードを参考にして解決しました。
222デフォルトの名無しさん:2009/03/19(木) 03:44:03
>>211
Processじゃないの?


文字列で思い出したのでついでに質問

ブラウザなどで範囲選択している文字列をコピーすることはできないでしょうか?
SendKeyで Ctrl+Cを送ると、なぜかブラウザ名と開いてるページが帰ってきてしまいます。
何かいい方法無いですか?
223デフォルトの名無しさん:2009/03/19(木) 10:37:38
一番汎用的なのがSendKeysなのは間違いない
Ctrl+Insertの方が安定してるかも

対象限定ならともかく完全にどんなのでも使えるやりかたってのは存在しない
224デフォルトの名無しさん:2009/03/19(木) 10:41:19
変数名を変えると一括で変換してくれるマークが出てくるじゃないですか
あれを出ないようにしたくはないんですが、他は変更しない時マークを消したいんですが
マークを押した時に出てくる2つの選択肢どっちを選んでも思い通りになりません教えてくだしあ
225デフォルトの名無しさん:2009/03/19(木) 16:59:26
2次配列の宣言で
int[][] da = new int[8][];  として後で

da[0] = new int[8];
da[1] = new int[8]; …としていくとできますが

for (i = 0; i < 8; i++)
da[i] = new int[8];
こうするとビルドは出来ますが実行で赤Xがでてエラーになります

for などを使って一括して定義する方法ないでしょうか?
da[0,0] このタイプは使いたくないのです
226デフォルトの名無しさん:2009/03/19(木) 17:06:08
エラーはちゃんと読みなさい。
227デフォルトの名無しさん:2009/03/19(木) 17:08:59
>こうするとビルドは出来ますが実行で赤Xがでてエラーになります 

日本語でOK
228デフォルトの名無しさん:2009/03/19(木) 17:09:54
エラーでないぞ?
iを定義してないだけじゃないか?
229デフォルトの名無しさん:2009/03/19(木) 17:20:25
なんか、めちゃくちゃえげつない初期化が出来るね。

int[][] da = new int[][] { new int []{1,2,3}, new int []{5,6}, new int []{7}, new int []{8,9,10}};
230デフォルトの名無しさん:2009/03/19(木) 17:22:22
もう一息
var da = new int[][] { new []{1,2,3}, new []{5,6}, new []{7}, new []{8,9,10}};
231デフォルトの名無しさん:2009/03/19(木) 17:49:43
>>228
でないですか?iの定義はしてるはずなんですが
>>226
エラーというか画面全体に×が出るあれです
232デフォルトの名無しさん:2009/03/19(木) 18:13:52
宣言する場所と実際にデータを使う場所が悪かったようです
直りました、どうもすいません
233デフォルトの名無しさん:2009/03/19(木) 22:49:45
 
日本を狙う 朝鮮人の原爆ミサイル建造費用は

  日本国内の 在日パチンコ屋からの送金

パチンコの市場規模は 年間30兆円

  日本の国家予算の 3分の1以上

  北朝鮮の国家予算の なんと100年分!

これを在日朝鮮人が 自由に動かし

  パチンコマネーを 北朝鮮に送金している

パチンコ屋を 全面営業禁止にしない限り

  北朝鮮は制裁など 痛くもカユくもない
 
在日朝鮮人なら 生活保護もらい放題

  毎月二十数万円もらって 毎日遊んで暮らしてる

  住宅費・医療費・教育費なんでも無料

  税金は1円も払わない 超特権階級(貴族)

  民主党は 選挙権まで与える予定

  日本は 在日天国  <丶`∀´> ウハウハ〜♪

http://2cchan.ham-radio-op.net/kimuchi.html
234デフォルトの名無しさん:2009/03/20(金) 00:36:39
>>223
おお、Ctrl+Insertで望んでいた動きができました
なぜCtrl+Cで上手くいかなかったんだろうなぁ

ありがとうございました
235デフォルトの名無しさん:2009/03/20(金) 03:02:46
すみません。質問いいですか?

実にくだらないのですが、解りません・・・

データグリッドビュー内の全てのRow毎にForeachループを廻したいのですが
やり方が解りません。

どなたか教えては頂けませんか?
宜しくお願い致します。
236デフォルトの名無しさん:2009/03/20(金) 03:06:15
foreach(DataGridViewRow row in dataGridView1.Rows)
{
うんたらうんたら;
}
237デフォルトの名無しさん:2009/03/20(金) 20:30:07
C#3.0勉強中
匿名メソッドのラムダ式の便利さはわかったけど、
ExpressionTreeというのが、どういう場合に使われて便利なのかよくわからない
これは便利だっていうサンプルが乗ってるサイトとかありますか?
238デフォルトの名無しさん:2009/03/20(金) 22:56:48
http://www.opentk.com/project/opentk
のExampleの中のWinForms 1 : Simple GL Controlのサンプルを、
ボタンを押したら箱が回るアニメーションが再生/一時停止するようにするには
どうすればいいですか?
箱を描画する処理は作れるんですが、アニメーションを実装する方法が良く分かりません・・
シングルスレッドで処理したいんですが、ApplicationContextクラスを作ったりしなければならない?
239238:2009/03/20(金) 23:13:52
BackGroundWorkerとかデリゲートの非同期呼び出しとか
使わず
while(ウィンドウが閉じられていない間)
{
メッセージ処理

ゲームの描画処理とかSleepとか
}
見たいな事はC#では出来ないんでしょうか
240デフォルトの名無しさん:2009/03/20(金) 23:21:28
マルチスレッドが嫌ならDoEventsでも使えば
241238:2009/03/20(金) 23:31:18
>>240
メッセージ処理をDoEventsでするんですか?
しかしApplication.Run(new Form1());
した後どこから>>239みたいなループに入れば・・?
OnClick()の中にwhile文入れたりとかは駄目ですよね・・?
242デフォルトの名無しさん:2009/03/21(土) 00:11:27
>>237
マニアックな例になるけど、
http://ufcpp.net/study/csharp/sp3_expressionsample.html
とか。

あと、C# 4.0のdynamicは内部的に式木使って動的コード生成してる。

いずれにせよ、あんまりエンドユーザー向けの機能ではない。
243デフォルトの名無しさん:2009/03/21(土) 11:12:18
株式の情報とかを取得するのに
皆、Yahooファイナンスから情報を得ているのが多いみたいですが
あれは?ファイナンスのHTMLを取得して
中を読み取り表示しているだけなのかな?
244デフォルトの名無しさん:2009/03/21(土) 11:14:56
YahooのWebAPIではファイナンスの情報提供してないみたいだからそうなんじゃない?
245デフォルトの名無しさん:2009/03/21(土) 11:29:19
Yahooの株式データはurlにクエリ付けて操作できる
246デフォルトの名無しさん:2009/03/21(土) 11:47:11
URLにクエリですか?
247デフォルトの名無しさん:2009/03/21(土) 11:48:41
だけど取得はHTMLだから仕様変更されたら一発でアボーン。
つか金融系でAPIを公開しているところないよなぁ・・・
純金の相場を取得するモジュール作ったけど、仕様がいつ変わるかわからないのが怖い。
248デフォルトの名無しさん:2009/03/21(土) 11:50:23
>>246
クエリ文字列。

http://stocks.finance.yahoo.co.jp/stocks/detail/?code=4686.q
なら
code=4686.q

つまりURLの後ろの?以降の文字列。
249デフォルトの名無しさん:2009/03/21(土) 11:55:39
>>248
銘柄のコードでですね。

それでHTMLを取得してから
中を自分で作るしかないのか・・・・・

>>247さんの言う通り
HTMLが変わったら終わりですね。

どうするかなぁ〜( ̄ヘ ̄;)ウーン
250デフォルトの名無しさん:2009/03/21(土) 12:20:33
スクレイピングなんてそんなもん。

正規表現を設定ファイルに出すとかしておいて、
変更時の修正が最低限に済むようにしとけ。
251デフォルトの名無しさん:2009/03/21(土) 12:25:08
携帯から失礼。ふと疑問に思ったのでよろしくお願いします。

オブジェクトを作るとき、+=と=の場合があるんですがどう違うんですか?
252デフォルトの名無しさん:2009/03/21(土) 12:47:17
たぶん、イベントハンドラの関連づけを勘違いしてるんじゃないかな。
253デフォルトの名無しさん:2009/03/21(土) 12:48:45
YAHOOファイナンスは銘柄コード以外に日付もクエリに指定する事が出来て
過去10年分の株価時系列データが意外と簡単に取得出来るな
詳しいやり方は忘れた
254243:2009/03/21(土) 13:04:14
色々な意見ありがとうございます。
ちょっと考えてから作るか作らないか検討します。
255デフォルトの名無しさん:2009/03/21(土) 13:07:14
>>252
たぶんそうです。
+=と=の違いってどうなんですか?
256デフォルトの名無しさん:2009/03/21(土) 13:10:34
調べろよ。

x = x + y;

x = y;

の違い。
257デフォルトの名無しさん:2009/03/21(土) 14:14:23
>>242
おお ありがとう
あと見ておくべきところとしてはこんなところかな?
なんかいろいろあるなぁ

・ASP.NET MVC 1.0
・ASP.NET AJAX
・ASP.NET Dynamic Data
・ADO.NET Entity Framework
・ADO.NET Data Services
・Silverlight 2.0
・Silverlight Controls for ASP.NET
・C#3.0 匿名メソッド
・C#3.0 ラムダ
・C#3.0 初期化子
・C#3.0 匿名型
・C#3.0 暗黙型付け
・C#3.0 拡張メソッド
258デフォルトの名無しさん:2009/03/21(土) 14:28:45
>>256
ハンドラーに+=ってイメージがつかないんです(ノ_・。)
259デフォルトの名無しさん:2009/03/21(土) 14:34:45
継ぎ足していくイメージだな
260デフォルトの名無しさん:2009/03/21(土) 15:05:28
>>258
 delegate void FooHandler(string s);
 void Bar(string s) { Console.WriteLine(s); }
 void Test() {
   FooHandler f = null;
   f += Bar; // ..1
   f = f + Bar; // ..2
   f = (FooHandler) Delegate.Combine(f, new FooHandler(Bar)); // ..3
   f("hello");
 }
1.2.3 は全部同じ意味。
261デフォルトの名無しさん:2009/03/21(土) 15:13:23
でも実際、delegateの場合は+=演算子がオーバーロードされて、
Delegate.Combineメソッドが実行されるってこと?
262デフォルトの名無しさん:2009/03/21(土) 17:29:32
演算子オーバーロードではなく、糖衣構文。
コンパイラが自動的に Delegate.Combine() に変換してくれるのであって、
Delegateクラスで + 演算子が定義されているわけではない。
263デフォルトの名無しさん:2009/03/21(土) 19:32:07
264デフォルトの名無しさん:2009/03/21(土) 20:11:21
WEBサイトを画像化するには
どういった方法をとるのが適切ですか?
よければサンプルコードの掲載されてるようなURLもいただけるとありがたいです。
265デフォルトの名無しさん:2009/03/21(土) 21:11:11
throw new System.Exception();

│               _∧∧∧∧∧∧∧∧∧∧_
│               > そ、その動きはトキ! <
│                ̄∨∨∨∨∨∨∨∨∨∨ ̄
│ ≡  ('('('('A` )
│≡ 〜( ( ( ( 〜)
↓ ≡  ノノノノ ノ  サッ
266デフォルトの名無しさん:2009/03/21(土) 22:51:33
>>257
LINQを学べば自動的にC#3.0の追加要素は全部学べるよ。
267デフォルトの名無しさん:2009/03/21(土) 23:22:15
>>266
LINQ TO SQLはキャンセルの方向だからお勧めできないよ
268デフォルトの名無しさん:2009/03/21(土) 23:33:19
>>267
>>257 のリストのどこにもLINQ TO SQLとかいてないな。
ひょっとしてLINQ = LINQ TO SQLとか思ってる人なの?
269デフォルトの名無しさん:2009/03/21(土) 23:39:27
>LINQ TO SQLはキャンセルの方向
そうなのか
知らんかった
理由は何?
270デフォルトの名無しさん:2009/03/21(土) 23:43:32
ひとことでいうと DB 屋さんが作ったものじゃないから。
ある意味 Linq の参考実装だったものがそのまま出てきたような
もの。でもライトでいいんだけどねあれ。実質 SQL Server 限定で
なければ。
DBLinq はどうなってるんだっけか。
271デフォルトの名無しさん:2009/03/21(土) 23:57:35
>>268
EntityにはLINQ TO SQLが内包されてるし、
一言でLINQと説明しているC#関連のサイトのほとんどはLINQ TO SQLだからね
272デフォルトの名無しさん:2009/03/22(日) 00:06:44
EntityにはLINQ TO SQLと同等のExpression<T>を使ったクエリ文は使用しているが内包はしていない。
>一言でLINQと説明しているC#関連のサイトのほとんどはLINQ TO SQLだからね 
これは君の脳内ソース。
273デフォルトの名無しさん:2009/03/22(日) 00:22:14
LINQでLINQ TO SQLを説明してるサイトのほうが少ないと思うんだが、
いったい普段どういうサイトを見てるんだろうか
274デフォルトの名無しさん:2009/03/22(日) 00:29:31
>>272
紛らわしいが、普通に理解して貰えれば、Entity Frameworkのことを差しているのは明白だと思うんだけど。
EntityFrameworkはSP1になって実装されたものだからC#3.0(VS2008)の特徴として紹介されてる
LINQ関連は、ほとんどLINQ TO SQLっていってるわけ。

実際にC#でLINQ TO SQLでないものを紹介していれ例は少ないよ。
脳内ソースというか、普通にググればわかるレベル。
275デフォルトの名無しさん:2009/03/22(日) 00:38:37
つまり、ググると混同してるのやら誤解しているのやらがたくさん出てくると
276デフォルトの名無しさん:2009/03/22(日) 00:42:17
>>274
はいはい(笑)
277デフォルトの名無しさん:2009/03/22(日) 00:44:56
あの論点が見えないのですが
>>266-276 の繋がりがよく分からないあたりから
食い違いがあるのではないでしょうか
278デフォルトの名無しさん:2009/03/22(日) 00:45:53
…Linq to SQL が sqlmetal とかの特定技術であることすら知らない?
Entity Framework の Linq 技術周りに関して言えばそれは
Linq to Entities だ。EDM に対してのクエリである ObjectQuery の
構築で使用している。
Linq to Entities と Linq to SQL は生まれも実装もラインも別。マジで。
つながりでいえば Linq のプロバイダとして実装されているぐらいしか
共通点はない。
279デフォルトの名無しさん:2009/03/22(日) 00:45:59
訂正 >>266-267 でした
280デフォルトの名無しさん:2009/03/22(日) 00:46:05
>>275
>>276
はいどうぞ

>また、VS 2008 SP1&.NET Framework 3.5 SP1では
>「ADO.NET Entity Framework(ADO.NETエンティティ・フレームワーク)」
>(以降、Entity Framework)という新しいデータベース・アクセス・テクノロジが追加されている。

http://www.atmarkit.co.jp/fdotnet/special/vs2008sp1/vs2008sp1_03.html
281デフォルトの名無しさん:2009/03/22(日) 00:50:35
>>280
だから何?って感じなんだがwww
何の証明にもなってない
282デフォルトの名無しさん:2009/03/22(日) 00:51:16
>>281
>>278は華麗にスルー?
283デフォルトの名無しさん:2009/03/22(日) 00:52:39
>>282
うん
だから何?って感じだし
なんでそんなに必死なのかさえ理解できないし
284デフォルトの名無しさん:2009/03/22(日) 00:54:20
脳内ソース出しちゃう人の話なんか誰も取り合っちゃくれんよ
それが2chです
285デフォルトの名無しさん:2009/03/22(日) 00:55:09
なんか論点がずれてる気がするな。
その記事ではEFとLINQ TO SQLをちゃんと区別してるんだから、
そうなると誰もそれには異論は唱えてないことになると思うのだけど
IDがないとわかんね。
286デフォルトの名無しさん:2009/03/22(日) 00:56:27
だから

>LINQ To EntitiesはEDMのモデル向けの“LINQ To SQL”といってもよいものだが、
>LINQ To SQLにはない機能(例えば、複数のテーブルから1つのエンティティを作成する機能など)が搭載されている。

>EDMに基づくLINQ To Entitiesは、データベースやオブジェクトの変更にも強いなどのメリットがあるため、
>今後はLINQ To Entitiesの方が(LINQ To SQLよりも)より多くの場面で活用されていくのではないだろうかと筆者は予測している
287デフォルトの名無しさん:2009/03/22(日) 01:12:59
linqとして紹介されてたものが実はlinq to sqlのことだとも知らなかったのか。。
288デフォルトの名無しさん:2009/03/22(日) 01:15:53
>>287
君か、引っ掻き回してたのは
289デフォルトの名無しさん:2009/03/22(日) 01:19:00
何を?
勘違いしてた人はいるみたいだけどね
290デフォルトの名無しさん:2009/03/22(日) 01:19:46
Linq だけならふつーは Linq to Objects を指すんじゃない。
291デフォルトの名無しさん:2009/03/22(日) 01:25:58
じゃあ事実関係から

1 Linq To SQLはLinq To Entityとは別物 ここまではok?
http://www.atmarkit.co.jp/fdotnet/special/vs2008sp1/vs2008sp1_03.html

2 VS2008と.NET3.5は同じ時期にリリースされた ここまではok?
http://itpro.nikkeibp.co.jp/article/COLUMN/20080113/290936/

3 Linq To SQLは.3.5に搭載されている ここまではok?
http://d.hatena.ne.jp/atsushieno/20081103/p1

4 Linq To Entity(Entity Framework)は3.5 SP1で搭載された ここまではok?
http://d.hatena.ne.jp/atsushieno/20081103/p1

従って3の時点でリリースされていないLinq To Entity(Entity Framework)を
C#の特徴として紹介できない(将来の機能の紹介は別)。 ここまではok?
292デフォルトの名無しさん:2009/03/22(日) 01:31:57
>>290
同感

だが、メソッドのネーミングがSQL由来なので
使った事が無い人はSQLの利用がメインだと思うかもね
293デフォルトの名無しさん:2009/03/22(日) 01:34:27
>>291
SP1は既にリリースされてるわけで将来の機能というわけではないよ。
ただ、議論をする上で扱いは決めておく必要はある。
というわけで含まない前提でどうぞ。
294デフォルトの名無しさん:2009/03/22(日) 01:40:49
>>293
普通に解釈すれば、3時点から見た「将来」と読めるから、
その突っ込みはズレてると思うぞ?
295デフォルトの名無しさん:2009/03/22(日) 01:43:48
3の時点でリリースされていないLinq To Entity
3の時点で紹介できない
どちらが普通かは難しいけが後者で了解
296デフォルトの名無しさん:2009/03/22(日) 01:48:39
それ前提ならC#とLINQの解説は、SP1公開以前のものがほとんどだから
少なくともLinqToEntitiesを解説したものは圧倒的に少ないな
どっちにしろSQLのほうはなくなるらしいから学ぶならEntitiesのほうだろ
297デフォルトの名無しさん:2009/03/22(日) 02:37:11
学ぶならまずはLINQ to Objectsですよ。
第一、Linqの説明で一番多いのはLINQ to Objectsだし。
SQL系に隠れてスルーされ気味ですが、非常に有益な技術です。
298デフォルトの名無しさん:2009/03/22(日) 03:49:08
LINQ to XML使ってる俺はどうなんの
299デフォルトの名無しさん:2009/03/22(日) 10:18:18
LINQといえばまず第一にLINQ to Objectsだろ
ないと絶対に困るレベルのプログラムの基本部品だ

LINQ to SQLとかEntityなんてのはそれを応用して作った
ただのORマッパーだろ
LINQという技術の射程の長さは表れてるけど
それがLINQの代表というわけじゃない
300デフォルトの名無しさん:2009/03/22(日) 10:27:11
>>298
まあ、XML操作が必要な作業してるんなら、
LINQ to XMLはかなり使いやすいXMLライブラリだと思う。

>>299
応用というか、同じ書式で書けるってのがポイントか。
301sage:2009/03/22(日) 10:59:30
OS  :WindowsXP
開発環境:VisualStudio2008 Pro
開発言語:C# 3.0

AccessデータベースをOLEで接続し、
データバインドしたDataGridViewでデータを表形式で表示しつつ、
DataGridViewの右横にデータバインドしたテキストボックスを配置し、
DataGridViewでデータを選択し、それをテキストボックスで
データ更新が出来る名簿ソフトを作成しています。

それに、DataViewのRowFilterでDataGridViewでのデータの絞込みが出来る
用に機能追加し、またデータバインドのソースをDataViewにして、絞込みした
状態でデータ更新ができるようにしようとしました。

しかし、
RowFilterでフィルタをかけている状態で、下記のコマンドをボタンで更新処理を
実行しようとすると、DataGridのフォーカスを手動で変更をしないとデータベースが
更新されないのです。

フォーカスを移動しなくても更新されるようにEndCurrentEdit
メソッドを事前にかけているのですが、何かコマンドが足りないのでしょうか?
恐れ入りますが、ご教示いただけないでしょうか?

以下コマンド-----------------
int iRow; //更新したレコード数
this.BindingContext[dbCustomer1, "M_Customer"].EndCurrentEdit();
iRow = oleDbDataAdapter1.Update(dbCustomer1, "M_Customer");
MessageBox.Show("更新 " + iRow + "件");
-----------------------------
302デフォルトの名無しさん:2009/03/22(日) 11:06:11
C#にはデフォルト引数がなく、同様の機能はオーバーロードを使って表現するみたいですが、
これって冗長じゃないですか?いくつも同じ名前のメソッドが増えてなんだか回りくどいような気がします。
Pythonだとデフォルト引数、名前付き引数がサポートされてるので、
それに慣れていたせいもあってかいまいち理解できません。
オーバーロードの方が優れている点ってあるのでしょうか?
それとも、そもそもデフォルト引数を使うような事自体が珍しいんでしょうか。
303デフォルトの名無しさん:2009/03/22(日) 11:17:12
デフォルト引数をまとめたクラスを一個作ればいいだけだからねえ
304デフォルトの名無しさん:2009/03/22(日) 11:58:12
>>302
4.0からデフォルト引数と名前付き引数に対応するよ
305デフォルトの名無しさん:2009/03/22(日) 13:59:30
相談室スレから誘導されてきました。いまさらだけどあっちのソースだいぶまちがってる・・・。

今ラジアンで角度を処理するクラスを作っているのですが、次のような動作をさせたいんです
1.値を代入したときは値を正規化してからいれる(負値だったら正値に、2π以上だったら2πで剰余算)
2.値を参照するときはそのまま参照
3.floatと同じように扱える
プロパティを使って実装すると次のようになりますが
  class RegularizedAngle
  {
    private float InAngle;
    public float Angle
    {
      get { return Angle; }
      set
       {
         //Angleが負値だったら正値に
         if (value < 0) Angle = (float)(Math.PI * 2f) + Angle;
         //valueが2π以上だったら2πで剰余算
         Angle = value % (float)(Math.PI * 2f);
       }
    }
  }
これを普通のfloatと同じように扱いたいんです。たとえば・・・

RegularizedAngle Ang = (float)(Math.PI * 2f);   //すなわち6.28・・・の代入
Ang += 1;                         //代入したとき内部で正規化がおこなわれて1になる。
Ang += Ang;                       //これで2になる?

こんなかんじで見た目を組み込み型みたいにしたいんです。
しかし上記のプロパティをつかった方法だとアクセスするときに
Ang.Angle としなければなりませんし、宣言するときにはnewが必要です
組み込み型を継承したクラスを作ればよいのでしょうか・・・?
306デフォルトの名無しさん:2009/03/22(日) 14:04:08
http://msdn.microsoft.com/ja-jp/academic/cc998611.aspx

現在↑のページの
1.3 Visual C# による実践コンポーネント指向プログラミング
簡易ドローツールを作成しているところなのですが
手順通りに作成しても、ソースをコピーしても

 Windows Form Designer generated code

の部分でエラーを吐いてうまく作成ができません
これを解決する為のお知恵をお貸しいただけないでしょうか
お願いいたします。
307デフォルトの名無しさん:2009/03/22(日) 14:08:45
>>306
//Windows Form Designer generated code
とコメントアウトすればいいのかな?
308デフォルトの名無しさん:2009/03/22(日) 14:18:32
>>307
いえ、そうしてもエラーが増えるばかりで、そうしていいやら・・
309デフォルトの名無しさん:2009/03/22(日) 14:25:03
>>308
VS2002/2003の頃の記事だから、percial class じゃないんだな。

そこはおそらく、これだ。画面は自分で準備しろということじゃないかな。
#region Windows Form Designer generated code
・・・・
#end region

をIDE上で閉じてるイメージ。
310デフォルトの名無しさん:2009/03/22(日) 14:29:20
>>305
演算子オーバーロードしまくれば大体望みの動作になると思うよ
でも普通にプロパティアクセスする方が分かりやすいよ
311デフォルトの名無しさん:2009/03/22(日) 14:29:43
>>306
それは手順通りではないでしょ。
追加するのは、イベントハンドラの部分。
312デフォルトの名無しさん:2009/03/22(日) 14:30:13
>>302
デフォルト引数の値を変更したとき、
利用者側の再コンパイルが必要って言うデメリットもあるから今まで対応してこなかった。
さすがに開発者からの要望に折れて、4.0で実装。
313デフォルトの名無しさん:2009/03/22(日) 14:32:21
>>309
レスありがとうございます
「pertial識別子が型hにありません。この型に別のpartial宣言が(ry」
までたどり着けました
314デフォルトの名無しさん:2009/03/22(日) 14:33:15
.>>310
あんまり賢い方法ではないってことですね・・・。
プロパティで実装してみます。ありがとうございました。
315デフォルトの名無しさん:2009/03/22(日) 14:35:48
>>313
駄目だこりゃ。
どうしてもこの教材である必要がなければ、他のあたって。
316デフォルトの名無しさん:2009/03/22(日) 14:38:41
>>315
私が根本的に勘違いしているみたいですね・・・
すみませんとりあえず他のをあたります
317315:2009/03/22(日) 14:42:35
うん
Form1.Designer.csの内容をこのサンプルから省いて、
Form1.csに追加が必要なメンバ変数とイベントハンドラの記述をすれば
動くので、原理的に難しい話では全くないんだけど、
それができる人は、そもそもこのチュートリアルをやる必要がありません。
318デフォルトの名無しさん:2009/03/22(日) 14:45:51
>>305
普通に演算子オーバーロードすれば良いと思う。
newでインスタンス作りたくなければ、構造体にすればいい。
けど、フィールドの初期化しなきゃいけないので、宣言だけはnewで我慢かなぁ
319デフォルトの名無しさん:2009/03/22(日) 14:50:26
>>314
floatと完全互換ならこの程度で済みそうだけど、複雑になるとoverloadの山になるな。
struct RegularizedAngle {
 float inAngle;
 public RegularizedAngle(float f) { inAngle = f; }
 public float Angle { 
   get { return inAngle; } 
   set { inAngle = value; } // いろいろ省略
 }
 public static implicit operator RegularizedAngle(float f) {
     return new RegularizedAngle(f); 
 }
 public static implicit operator RegularizedAngle(double f) {
     return (RegularizedAngle) (float) f;
 }
 public static implicit operator float(RegularizedAngle ra) {
     return ra.Angle;
 }
 public override string ToString() { return Angle.ToString(); }
}
--
static void Main() {
    RegularizedAngle x1 = 12.3;
    RegularizedAngle x2 = 10;
    float f = x1 * 3;
    RegularizedAngle x3 = x1 * x2;
320デフォルトの名無しさん:2009/03/22(日) 15:01:40
>>319
ちびっと訂正
>public RegularizedAngle(float f) { inAngle = f; } 
public RegularizedAngle(float f) { inAngle = 0; Angle = f; }
321デフォルトの名無しさん:2009/03/22(日) 15:46:43
なんかlinqを使うより、IEnumerable<>のSelect<>メソッドやWhere<>メソッドを使ったほうが
わかりやすい気がするのはなぜですか?
linqtがfromから始まるのが気持ち悪いからですか?
322デフォルトの名無しさん:2009/03/22(日) 15:46:54
>>319-320
ありがとうございます。参考になります。
しかし完全に理解するのは難しそうですね・・・。
それの上にさらに正規化処理を入れなければならないのですよね・・・。
323デフォルトの名無しさん:2009/03/22(日) 16:01:10
>>321
クエリ式が分かりにくいと感じるなら拡張メソッドでLINQやればいい
fromからなのはインテリセンス効かせるため
324デフォルトの名無しさん:2009/03/22(日) 16:02:59
>>321
それもLINQ
325デフォルトの名無しさん:2009/03/22(日) 16:08:46
クエリ式なんかただのSQLっぽく見せるためのプリプロセッサなんだから
SQL大好き人間以外は使う必要の無いものだよ
SQL大好き人間でも最終的には拡張メソッドに適応すべきだろう
326デフォルトの名無しさん:2009/03/22(日) 16:30:24
LINQってなんて読むの?ラインクエリ?
327デフォルトの名無しさん:2009/03/22(日) 16:37:16
なるほど、そんなもんなんだ
機能としては、ADO.NETのDataTable.Select();が、より簡単に使えるようになりました的な感じなのね
メモリ上にデータをもって検索するとか、xmlから検索するとかに便利そうね

つか配列を検索しやすくしましたって感じ?
データベースから引っ張ってくるのは結果セットだけ取得して、
それを単に表示させるだけのほうが再計算入るよりパフォーマンスがよさそうなんだがそのあたりはどうなんだろう
328デフォルトの名無しさん:2009/03/22(日) 16:44:47
LINQをSQLに使えばSQL文が生成され
データベースに問い合わせされ結果セットだけが取得されるんだよ
329デフォルトの名無しさん:2009/03/22(日) 16:59:20
>>325
letとか多重from使おうとするとメソッド形式ではちと厳しい。

>>326
リンク。
linkと同じ音で読めってさ。

330デフォルトの名無しさん:2009/03/22(日) 17:05:29
へー、その場で動的にクエリを生成してくれるのね
難しい処理はストアドに記述してしまうし、
ある程度の決まった処理ならxsdファイルのDataSetに記述したほうが楽そうだけど、
DataSetでは、where文を動的に生成することができなかったから、
それが簡単に記述できるようになるのなら確かに便利かもしれん
331デフォルトの名無しさん:2009/03/22(日) 17:28:33
ボタンを押したらtextBoxのフォントサイズを
変えようとしてるのですが

iの中にはint で18 が入ってる

textBox1.Font.Size = i.ToString();

でどうもうまくいきません、どう記述したらよいでしょうか?
332デフォルトの名無しさん:2009/03/22(日) 17:32:38
ReadOnleyプロパティだからそれ。
333デフォルトの名無しさん:2009/03/22(日) 17:34:19
やどりぎ+どくどく
334デフォルトの名無しさん:2009/03/22(日) 17:35:31
>>333
すいません、ありがとうございます、リッチテクストでも同じでしょうか?
335デフォルトの名無しさん:2009/03/22(日) 19:39:34
EnterpriseLibrary4.1の使い方が全く分かりません・・・
ダウンロードしてインストールして・・・
そこからどうすればいいのか・・・
336デフォルトの名無しさん:2009/03/22(日) 20:42:35
文字列から数字取り出すのってどうやったら良いですか?1 2でなく12 3 434とかで 
337デフォルトの名無しさん:2009/03/22(日) 20:51:11
>>336
new Regex(@"\d+").Match(str);
338デフォルトの名無しさん:2009/03/22(日) 20:53:46
ありがとうございますた
339デフォルトの名無しさん:2009/03/22(日) 22:01:47
linq試してみました
簡単にsqlが取得できるのはすごいね
ただアドホッククエリは今までと同じようにEntitySQLとか使って取得するのね
結局は型無しになってしまうし・・・

簡単にクエリ書けるのはいいけど、ソースコードの中でばんばん書けてしまうと、
mvcモデルの原則に反するんじゃないのかな?
普通に使用するなら型付きDataSetのほうが楽でわかりやすい気がするんだけど、
そうなるとLinqToEntitiesを導入する最大の利点ってなんなんだろう・・・
DBデータの取得、更新を行う再利用可能なクラス(Model)が作りやすいってことなのかな?
340デフォルトの名無しさん:2009/03/22(日) 22:23:24
モデルの中にかけばいいんじゃねーの?
341デフォルトの名無しさん:2009/03/22(日) 23:26:37
>>339
ビジネスロジック層とデータ層の間を繋ぐもの的な位置づけ。
342デフォルトの名無しさん:2009/03/23(月) 01:08:46
C++/CLI から来ました。方向性が間違ってたらすみません。
>>305
class RegularizedAngle {
  private float InAngle;

  public float Angle {
    get {
      return this.InAngle;
    }
    set {
      if (value <= 0.0) // valueが負値だったら正値にする正規化
        this.InAngle = value + (int)(value / (Math.PI*2.0f) + 1.0) * Math.PI*2.0f;
      else // valueが正値だったら2πで剰余算する正規化
        this.InAngle = value - (int)(value / (Math.PI*2.0f)) * Math.PI*2.0f;
    }
  }
}
343305:2009/03/23(月) 02:13:02
>>342 ありがとうございます。処理を見直した結果-3.14〜+3.14までを格納するように改めました。
  //角度を格納するが強制的に正規化される型
  //doubleとしてアクセスできる
  public class RegularizedAngle
  {
    private double InAngle;
    public RegularizedAngle()
    {
      InAngle = 0;
    }
    public RegularizedAngle(double i)
    {
      InAngle = 0;
      Angle = i;
    }
    public double Degree
    {
      get { return StgUtil.RadToDeg(InAngle); }
      set { Angle = StgUtil.DegToRad(value); }
    }
    private double Angle
    {
      get { return InAngle; }
      set
      {
        //6.28以上だったら6.28で剰余算
        if (value > StgUtil.PIx2) value %= StgUtil.PIx2;
        InAngle = value;
      }
    }
344デフォルトの名無しさん:2009/03/23(月) 02:16:15
    //lはrより左方向
    public static bool operator >(double l, RegularizedAngle r)
    { return AngCheck(l, r.Angle); }
    public static bool operator >(RegularizedAngle l, double r)
    { return AngCheck(l.Angle, r); }
    public static bool operator >(RegularizedAngle l, RegularizedAngle r)
    { return AngCheck(l.Angle, r.Angle); }
    //lはrより右方向
    public static bool operator <(double l, RegularizedAngle r)
    { return !AngCheck(l, r.Angle); }
    public static bool operator <(RegularizedAngle l, double r)
    { return !AngCheck(l.Angle, r); }
    public static bool operator <(RegularizedAngle l, RegularizedAngle r)
    { return !AngCheck(l.Angle, r.Angle); }
    //lから右回りと左回り、どっちがrへの移動量がすくない?
    private static bool AngCheck(double l, double r)
    { return (l + r >= 0); }    //ここの処理をなんて書いていいのかわかりません。。。

    //doubleを代入された場合
    public static implicit operator RegularizedAngle(double f)
    { return new RegularizedAngle(f); }
    //doubleを代入された場合
    //doubleとして参照された場合
    //演算子の動作もdoubleに準拠
    public static implicit operator double(RegularizedAngle l)
    { return l.InAngle; }

    public override string ToString()
    { return Angle.ToString(); }
  }
ぐぐってみるとY座標から右回り左回りを算出するという手段がありました。おそらく0度が真右になるからできるんだと思いますが、
このクラスは角度だけを扱いたいので角度(ラジアン)だけから算出したいのです。何か良い方法があったらどうかお教えください。
345デフォルトの名無しさん:2009/03/23(月) 11:08:45
C#はじめて2Weekの新参者ですが教えてください
サーバーエクスプローラからTBを選択してForm上にDRAG&DROPすると
oleDbDataAdapter1が作成されるのですが、同じmdbの別TBを
DRAG&DROPすると別のoleDbDataAdapter2が作られるのですが、
二つのoleDbDataAdapterを作成しなければいけないのでしょうか?
oleDbDataAdapter1だけにはできないんでしょうか?
C#2003です、よろしくお願いします
346デフォルトの名無しさん:2009/03/23(月) 11:33:11
嫌です
347デフォルトの名無しさん:2009/03/23(月) 12:42:50
同意
348デフォルトの名無しさん:2009/03/23(月) 17:56:52
御意
349デフォルトの名無しさん:2009/03/23(月) 18:22:15
ザムディン
350デフォルトの名無しさん:2009/03/23(月) 19:36:18
質問です。
System.Windows.Forms.Formクラスの
FormBorderStyleプロパティをNoneにし、
WindowStateをMaximizedにすると
タスクバーがフォームに隠れてしまうのは仕様ですか?
またFormBorderStyleをNoneにしたまま
これを回避する方法はどなたかご存知ですか?
351デフォルトの名無しさん:2009/03/23(月) 20:39:37
仕様じゃないですかね
とりあえずスクリーンのWorkingAreaを
MaximizedBoundsに設定したらいいんじゃない?
352デフォルトの名無しさん:2009/03/23(月) 20:56:08
System.Windows.Forms.Screen
から作業領域取得して設定
353350:2009/03/23(月) 21:37:29
this.MaximizedBounds = Screen.GetWorkingArea(this);
で修正できました。
ありがとうございます。
354デフォルトの名無しさん:2009/03/24(火) 16:25:49
a += b * c;
はb*cの結果とaを足してくれるんですか?
355デフォルトの名無しさん:2009/03/24(火) 16:31:41
それくらい試せよ
356デフォルトの名無しさん:2009/03/24(火) 16:32:23
>>354
試してみればいい。
357デフォルトの名無しさん:2009/03/24(火) 17:46:10
なるほど
ありがとうございました
358デフォルトの名無しさん:2009/03/24(火) 17:57:07
a += b * c;

a = a + (b * c);
だけど
a += b + c;

a = (a + b) + c;
足し算だから結果は変わらない
これは試してわかるようなレベルじゃない
359デフォルトの名無しさん:2009/03/24(火) 18:02:19
結合法則考えればすぐ分かるだろ
360デフォルトの名無しさん:2009/03/24(火) 18:05:05
a * = b + c
は?
361デフォルトの名無しさん:2009/03/24(火) 18:07:48
a = a * (b + c)
362デフォルトの名無しさん:2009/03/24(火) 18:10:05
演算子の優先順位なんて基礎だろ基礎
MSDNで「C# の演算子」調べろよ
363デフォルトの名無しさん:2009/03/24(火) 18:16:51
うそばっかりだなこの擦れ
364デフォルトの名無しさん:2009/03/24(火) 18:25:10
if(!>>1-362)
{
Console.WriteLine(>>363);
}
365デフォルトの名無しさん:2009/03/24(火) 18:30:23
>>358
こいつ馬鹿
a = a + ( b + c )
だろ
366デフォルトの名無しさん:2009/03/24(火) 19:20:46
演算子の優先順位が"人から見て"不明瞭な式っていうのは、
括弧で明示するのが基本だと思う。

&&が||より優先されるために条件式を
条件1 || 条件2 || 条件3
みたいに書く(条件1,2,3は各々&&で条件を連結している)とか、
優先順位が関係する定型的な書き方は知っておくべきだけど。
367デフォルトの名無しさん:2009/03/24(火) 19:24:14
int a = 10;
a += 10 >> 1; // a == 15
a = a + 10 >> 1; // a == 10

つまり a += x op y; は a = a + (x op y);

勝手に問題をすりかえて話をこじらせた挙句、
数行のコードを試せばわかることを「試してもわからない」という
文面とともに間違いを教える>>358が謎過ぎる。
368デフォルトの名無しさん:2009/03/24(火) 19:24:56
見やすくなるけどスピード負担はやや増えるのかな?
369デフォルトの名無しさん:2009/03/24(火) 19:37:31
なんのすぴーどだよ
370デフォルトの名無しさん:2009/03/24(火) 19:43:53
島袋の負担は増える
上原の負担は減るんじゃなかろうか
371デフォルトの名無しさん:2009/03/24(火) 19:59:18
解散しちまえ
372デフォルトの名無しさん:2009/03/24(火) 20:00:25
プログラマなら上原多香子好きだろ?
はしのえみのほうがいい?
373デフォルトの名無しさん:2009/03/24(火) 20:48:53
http://azumaya.s101.xrea.com/wiki/index.php?%B3%D0%BD%F1%2FC%A2%F4%2FC%A2%F4%A4%C7%A5%DB%A5%C3%A5%C8%A5%AD%A1%BC%A5%B3%A5%F3%A5%C8%A5%ED%A1%BC%A5%EB%A4%F2%BA%EE%A4%EB

↑にある↓の意味はどういうことですか?

if((k & WinApi.HOTKEYF_ALT) != 0)
    ret |= Keys.Alt;
if((k & WinApi.HOTKEYF_CONTROL) != 0)
    ret |= Keys.Control;
if((k & WinApi.HOTKEYF_SHIFT) != 0)
    ret |= Keys.Shift;
return ret;
374デフォルトの名無しさん:2009/03/24(火) 20:54:44
ビット演算だな
AltとControlとShiftのビットを立てている
375デフォルトの名無しさん:2009/03/24(火) 21:13:02
>>373
ビット演算でググれ。
376デフォルトの名無しさん:2009/03/24(火) 21:30:33
>>373
フラグの使い方の悪い見本だな
377デフォルトの名無しさん:2009/03/24(火) 21:57:06
そうか?
378デフォルトの名無しさん:2009/03/24(火) 22:01:38
!= 0 ←これが気に食わないんでしょたぶん
379デフォルトの名無しさん:2009/03/24(火) 22:07:45
>>376
そういう風におっしゃるのなら、
>>376さんは>>373のような処理が必要なときはどんなコードにしているのでしょうか?
興味があるのでご教授ください
380デフォルトの名無しさん:2009/03/24(火) 22:19:50
理由書かない奴は気にするな
381デフォルトの名無しさん:2009/03/24(火) 22:20:58
理由分からない奴は気にするな
382デフォルトの名無しさん:2009/03/24(火) 22:27:52
>>379
どうせくだらない理由だから気にスンナ
383デフォルトの名無しさん:2009/03/24(火) 22:43:03
なるほど
ありがとうございました
384デフォルトの名無しさん:2009/03/24(火) 22:45:05
入れ替える必要はなさそうだけどな。
385デフォルトの名無しさん:2009/03/24(火) 23:02:26
!= 0 以外の良い書き方ってあるんですか?
386デフォルトの名無しさん:2009/03/24(火) 23:03:38
[flags]enumの比較は
if((f & Flag.Hoge) == Flag.Hoge)
と行うという例がMSの[flags]関連のどっかに書いてあった。
387デフォルトの名無しさん:2009/03/24(火) 23:09:23
>>385
!(1 = 0)
388デフォルトの名無しさん:2009/03/24(火) 23:10:51
なるほど
ありがとうございました
389デフォルトの名無しさん:2009/03/24(火) 23:10:52
アホは無理にレスしなくていいよ
390デフォルトの名無しさん:2009/03/24(火) 23:34:19
質問です
フォームを最大化してノーマルに戻して、
フォームのLocationをドラッグで移動したときに
フォームのあった矩形領域がデスクトップの左上からの画像になって
再描画されないんだけど
(ゴミ箱のアイコンが左上にあったとしたら、
フォームのあった位置の左上がゴミ箱の画像。背景もしかり)
考えられる原因って誰か知ってます?
また強制的にFormの裏側をリフレッシュする方法ってありますか?

391デフォルトの名無しさん:2009/03/24(火) 23:36:56
OnPaintみたいなのをoverrideしてるくせに描画してないんじゃないの
392デフォルトの名無しさん:2009/03/24(火) 23:38:45
他のメーカーのグラボが乗ってるPCでチェクしてからだな
393デフォルトの名無しさん:2009/03/24(火) 23:49:28
>>373は×、>>386は○になる具体例を提示しろ
できないなら>>376=糞
394デフォルトの名無しさん:2009/03/24(火) 23:49:56
とても基本的なことで恐縮ですが質問させてください。
このように呼び出し元のクラスを参照し、値を書き換えるクラスを作りました。
class Target
{
  private int member;
  Process pro = new Process(10,2)
  public void Do()
  {
    pro.OverwriteTargetMember(this)
  }
}
//目標値tgtまでvolずつ加算する
class Process
{
  int tgt,vol;
  public Process(int tgt,int vol)
  {
    this.tgt = tgt;
    this.vol = vol;
  }
  public void OverwriteTargetMember(Target tgt)
  {
    if(tgt.member != tgt) tgt.member+= vol;
  }
}
target.do()するたびにtargetのmember2 4 6 8 10 10 10・・・となる処理です。
本当はProcessをキューに入れて数値の変動を予約できるようにしています。
ですが、このような実装はあまりオブジェクト志向の設計思想に則していない様に感じられます。
このスレッドのみなさんでしたらどのような実装を行いますか?
どうかお聞かせください。
395デフォルトの名無しさん:2009/03/24(火) 23:53:36
なんでそんな変な名前つけてるの?
396デフォルトの名無しさん:2009/03/24(火) 23:56:18
アホは無理にレスしなくていいよ
397デフォルトの名無しさん:2009/03/24(火) 23:56:54
名前に意味はありません。
Target=メンバーを書き換えたいクラス
Process=引数に渡されたTargetのメンバーを書き換えるクラスです。

要約するとTargetがDo()するたびに数値を変動させたいのですが、
その動作をキューに入れて管理したいのです。

たとえば
0から1ずつ加算して10になるというパラメータをもったProcessクラスと
10から2ずつ加算して20になるというパラメータをもったProcessクラスを順にキューに入れると、
Target.Do()の結果が実行するごとに
1 2 3 4 5 6 7 8 9 10 12 14 16 18 20 20 20 20・・・
となるようにしたいのです。
398デフォルトの名無しさん:2009/03/25(水) 00:23:07
     ⌒ ⌒               ____
   (     )          ゝ/     __ヽ
      | | |              /        | h
   , ── 、 __          i >>376  |-||
 /         ヽ     /   ヽ      (|| | /^ヽ
/       /)ノ)ノ   //   \∧/   ノ /ヽノ
| >>393 ///⌒ヽ   /   , ─/ ̄ ̄`─ ´ / ______/
ヽ     /)─|  ミ|      /  /     ,-─ ′ ─────/
∠   (| |.  ヽ__ノ>     ( ̄ノ/     /    −、        /
∠_ / ` /^\__ >      ̄ |─── |─┬┘ |───/
  ノ    (__          ヽ___ノ─┴ 、__ノ ̄ ̄/
 / ̄ ̄\┌─ ′ /^−、    -、_/  /_____ /
/ ̄ ̄ ̄⌒ヽ   (   丿  /   |  /─────/
        \  / ̄/   (__ノ ̄ ̄  //  /
          \/  /         //  /
399デフォルトの名無しさん:2009/03/25(水) 00:25:19
Queue<int>にint詰めて順に足せばいいじゃん

Processにtgt(目標値)を渡す意味も、そもそもProcessをクラス化する意味も
読み取れない
パラメタをvolだけでなく複数にするなら構造体で十分
400デフォルトの名無しさん:2009/03/25(水) 00:31:40
>>399
申し訳ありません。情報が足りませんでした。
私の作った処理でjはキューした時点では値は確定していません。
キューが実行された瞬間にさらに処理をして値を設定するようにしたいのです・・・。
401デフォルトの名無しさん:2009/03/25(水) 00:37:42
このように呼び出し元のクラスを参照し、値を書き換えるクラス
なら引数にrefを付ける

でも、俺なら3つクラス作って別のクラスでpublic void Do()を実装する
402デフォルトの名無しさん:2009/03/25(水) 00:38:17
IEnumerable<int> Process()
{
for(int i = 0; i < 10; i++)
{
 yield return i;
}
for(int i = 10; i < 20; i += 2)
{
 yield return i;
}
while(true)
{
 yield return 20;
}
}

これが一番シンプルだと思うけど
可変の部分があるならその部分を引数にすればいい
403デフォルトの名無しさん:2009/03/25(水) 00:51:08
>>401
C#でクラスを引数に設定した場合は参照渡しだったと記憶していますが、
あえて明示的にrefをつけるというのはどのような意図を以て行うのでしょうか?

また、3つクラスを作ると仰られましたが、どのように分割するのでしょうか?
Processにあたるクラスは、いろいろな種類を作ろうと考えています。
今回挙げた単純な加算だけではなく、四則、べき乗、などなど・・・。角度を扱う可能性もあります。
もしよろしければご教示お願いいたします。

>>402
かなり私の求めている正解に近いものかもしれません。
頭の中にあった蟠りが一つ解けて、理解が深まりました。
IEnumberableを使うということは考えてもいませんでした。
お答えくださり本当にありがとうございます。
404デフォルトの名無しさん:2009/03/25(水) 00:54:45
(?_?)
405デフォルトの名無しさん:2009/03/25(水) 01:09:07
>>403
オブジェクトを渡すときは参照の値渡し
違いはググれ

> 今回挙げた単純な加算だけではなく、四則、べき乗、などなど・・・。角度を扱う可能性もあります。
どこまで裾野を広げたいのか分らないが,四則"計算",べき乗"計算"と計算という概念で分類すればいいんでないか?
あと,角度を"扱う"っていうのが,どういう意味をさしているのか具体的に言わないと扱えないぞい
406デフォルトの名無しさん:2009/03/25(水) 01:18:45
>>405
角度でラジアンを持ちますが、ラジアンでπ2以上または-π2以下になった場合に丸められます。オーバーフロー防止です。
ですが、よくよく考えてみれば>>402さんの処理でreturnするときにreturn i % (Math.PI * 2);などと記述すればよいのかもしれませんね。

このような稚拙な質問に丁寧にお答えくださり本当にありがとうございました。
407デフォルトの名無しさん:2009/03/25(水) 03:44:54
「オブジェクト志向の設計思想」云々言ってて解が>>402・・・いみふ
408デフォルトの名無しさん:2009/03/25(水) 04:57:21
もう終わった話題のようだが、
stateパターンのようなことをやりたかったんだろうか?
409デフォルトの名無しさん:2009/03/25(水) 07:08:14
>>393(>>373>>386>>376)
勘違いするやつが現れないように代わりに答えておこうか。

まず先に一言、[Flags] enum に限れば「(e & MyEnum.Foo) != 0」は基本 NG だが
元の例はそもそも [Flags] enum じゃないから関係ない。
で、enum の話しに戻すと、

[Flags]
enum MyEnum { A = 0x1, B = 0x2, AB = A | B }

var e = MyEnum.A;
if((e & MyEnum.AB) != 0) {
  Console.WriteLine("I'm AB.");
  if((e & MyEnum.AB) != MyEnum.AB) Console.WriteLine("Really?")
}

例え Flags が付いていたとしても、全ての定数が排他とは限らない。
結合定数を定義することは十分有り得るし、Keys のような特殊な例もある。
「... != 0」と書けるのは、事前に列挙定数の具体値に関する知識を持っていて、
大丈夫であることが分かっている場合のみ。
410デフォルトの名無しさん:2009/03/25(水) 07:36:31
>>407
私の書いたソースではあれがネストしていたんです。
呼び出し元の呼び出し元の呼び出し元の・・・という形で参照しているので、
可読性が大変悪く、動作の高速性よりソースの可読性や整備性を重視したオブジェクト指向の設計思想に反していると感じたのです。
411デフォルトの名無しさん:2009/03/25(水) 09:27:24
オブジェクト指向なんてのは
それに従ってさえいればいいコードが書けるというような
万能の方法論では全く無いからな
412デフォルトの名無しさん:2009/03/25(水) 10:53:22
Formの状態についてお願いします。
状態     通常     最大化
サイズ    (800,600)  (1280,1024)

Formが通常→最大化され、閉じられた場合に
最大化される前のサイズをapp.configにひとつの設定要素として保存させたいのですが、
最大化された後のサイズが保存され、うまくいかないです・・・
Form1_Resizeのイベントでは無理でしょうか?
413デフォルトの名無しさん:2009/03/25(水) 10:57:32
RestoreBoundsで通常時のサイズを取得できるが。
414デフォルトの名無しさん:2009/03/25(水) 10:59:37
>>413
瞬殺されました
どうもありがとです
415デフォルトの名無しさん:2009/03/25(水) 23:05:24
異なるスレッドで作成されたControlをAddすることは可能でしょうか。
別スレッドのContextに設定されたフォームが閉じられた時、そこに使用されていたControlを再利用したいのですが。
416デフォルトの名無しさん:2009/03/26(木) 10:23:18
意味の分からない質問かもしれませんが、
System.Console.ReadLine()
を使うと、実行が止まりますよね。
これは何の効果で止まってるんですか?
ReadLineの中で何らかのループが回ってるんでしょうか
それともsleepみたいなコトになってるんでしょうか

独学でずっとやってきて体系的に学んでいないので思い出したように気になりました
良く意味が分からないかもしれませんがよろしければエスパーしてください。
417デフォルトの名無しさん:2009/03/26(木) 10:43:58
ループ
418デフォルトの名無しさん:2009/03/26(木) 11:42:53
419デフォルトの名無しさん:2009/03/26(木) 11:43:58
switch文について

VBの場合
case 1,2,5-8
のように一文で複数の判断をさせることができますが
C,C#では一つの判断しかできませんよね?

これはif文の羅列で処理するしかないのでしょうか?
C#で代わりに同じことをやらせる効率のよい方法ないでしょうか?
420デフォルトの名無しさん:2009/03/26(木) 12:03:22
VBのSelect Caseはelse ifのようなもんだからねぇ
工夫次第かな
int a[8] = {1,1,0,0,1,1,1,1};
if (a[i]) hoge();
とすれば1,2,5-8にヒットする
421デフォルトの名無しさん:2009/03/26(木) 12:05:30
やっぱりそうですか
ありがとうございます
422デフォルトの名無しさん:2009/03/26(木) 12:09:07
>>416
OSは標準入力からデータの読み出しが完了するまで
ReadLineを呼んだプロセスの実行を停止してる。
完了したら実行を再開させる。

納得いかなければ マルチタスク ブロッキングI/O プロセス+状態遷移
なんかでぐぐっておくれ。
423デフォルトの名無しさん:2009/03/26(木) 15:39:07
>>419
case 1: case 2: case 5: case -8:
424デフォルトの名無しさん:2009/03/26(木) 15:48:27
>>423
その書き方でいいんですか
5-8のところが不思議な感じですね

これはjavaとかでは無理でC#特有の書き方なんですかね?

とりあえずやってみます ありがとうございました
425デフォルトの名無しさん:2009/03/26(木) 15:49:04
>>422
ありがとうございます。
ググってみます。
426424:2009/03/26(木) 15:53:31
javaでもコンパイルできました
C系統ではOKみたいですね
どうもです
427デフォルトの名無しさん:2009/03/26(木) 15:55:23
おいおい
428423:2009/03/26(木) 15:56:22
ごめん。アホなこと書いてた
429デフォルトの名無しさん:2009/03/26(木) 15:58:22
ん?-8がやっぱおかしいの?
全部だめなの?
430デフォルトの名無しさん:2009/03/26(木) 16:00:08
コンパイルが通ればすべてよし、みたいに考えるのがまずいんだよw
試してみること、ドキュメント探してみること、いろいろやろうぜ。
431デフォルトの名無しさん:2009/03/26(木) 16:02:32
ちょっとワラタw
432デフォルトの名無しさん:2009/03/26(木) 16:15:10
case 1: case 2:
と複数並べるのは確認できました
5-8の範囲はさすがに無理みたいですね
433デフォルトの名無しさん:2009/03/26(木) 20:06:31
throw new NotImplementedException();
これの仕組みがわからないんですが
メソッドの中にドーンと書いてあるんですが
何に対してのエラーを識別するんですか?
指定範囲内のコードで例外があったらとかならわかるんですが
これより前後に書いたコードに対して適用されるとかなんですか?
434デフォルトの名無しさん:2009/03/26(木) 20:21:32
throw new NotImplementedException
これはなんて書いてあるかわかる?
わかればOK!
435デフォルトの名無しさん:2009/03/26(木) 20:24:17
投げる 新しい ちがう 実装される 例外
436デフォルトの名無しさん:2009/03/26(木) 20:25:49
0で除算するメソッドで引数にゼロが代入されていたときなんかに自分で書くんだよ

if (引数 == 0)
 throw new ゼロだぞ( ゚Д゚)ゴルァ!!
437デフォルトの名無しさん:2009/03/26(木) 20:33:17
わざわざ用意するほどのものなんですか?
好きなところに飛ばした方が話が速いと思うんですが、これって公開ライブラリとかじゃない限り
使う意味ないですよね?
438デフォルトの名無しさん:2009/03/26(木) 20:37:37
いや、使う意味が無いと思ってる人は使わないよ。問題ない。
同じプロジェクトにいないならな
439デフォルトの名無しさん:2009/03/26(木) 20:39:34
つーかそんなん、リファクタリング機能でメソッド作ったときに
自動的にできるくらいだろ?
440デフォルトの名無しさん:2009/03/26(木) 20:44:26
>>433はな
throw自体が無意味って話に変わったんじゃないの
441デフォルトの名無しさん:2009/03/26(木) 20:52:17
意味がわかりませんこれプロジェクトのひな形なんですが、何がしたいんですか?
例外時にNotImplementedException()に飛ばしたいのはわかるんですが、
何に対しての例外かが読み取れなく無いですか?
コードを追加するときはこの行を消すとかはあり得ないですよね

public class ContentProcessor1 : ContentProcessor<TInput, TOutput>
{
 public override TOutput Process( TInput input, ContentProcessorContext context )
 {
  // TODO: process the input object, and return the modified data.
  throw new NotImplementedException();
 }
}
442デフォルトの名無しさん:2009/03/26(木) 20:52:58
throwってなにかね?
443デフォルトの名無しさん:2009/03/26(木) 20:54:34
NotImplementedException(); つまり、
要求されたメソッドまたは操作が実装されていないエラーであることがわかるじゃん

http://msdn.microsoft.com/ja-jp/library/system.notimplementedexception(VS.80).aspx
444デフォルトの名無しさん:2009/03/26(木) 20:55:40
でも再利用できる機能をまとめて一つのメソッドに並べる場合は便利じゃね?
public boolLogin(string id, string password)
{
try
 return _login.(id, password);
catch (BadPasswordException e)
 //ログインできません例外
catch (BadIDException e)
 //そんなID存在しません例外
catch (ExpireException e)
 //パスワードの期限切れです例外
}
とか
445デフォルトの名無しさん:2009/03/26(木) 20:56:36
>>441
消すんだよ。
446デフォルトの名無しさん:2009/03/26(木) 20:58:42
この場合はthrowの前に独自コードを記述してthrowの前に分岐でreturnに飛ばして
returnに辿りつかなかったら最後のthrowを実行するように書けばいいんですかね
447デフォルトの名無しさん:2009/03/26(木) 21:00:26
>>445
やっぱり消すのが自然ですよね
MSのひな形なんですが、このパターン初めてなので消してはいけない理由があるのかと思ったんですが
普通消しますよねTHX!
448デフォルトの名無しさん:2009/03/26(木) 21:01:54
>>447
実装されてないことを示す例外だから、実装が終わったら消せばいい。
ということ。
449デフォルトの名無しさん:2009/03/26(木) 21:02:45
setjmp,longjmpと同様に、大域脱出に使われるので、乱用はよくない。
プロジェクトによっては、自前で例外throwするのは禁止してることもあるよ。
だから、必須の機能とは言えない。
450デフォルトの名無しさん:2009/03/26(木) 21:03:45
あ、禁止ってわかりにくいな。
そのプロジェクトのコーディング規約(≒ローカルルール)で禁止ね。
451デフォルトの名無しさん:2009/03/26(木) 21:04:23
>>449
誰も必須だとか言ってないだろハゲ
452デフォルトの名無しさん:2009/03/26(木) 21:04:50
>>433
要求されたメソッドまたは操作が実装されない場合にスローされる例外。
453デフォルトの名無しさん:2009/03/26(木) 22:06:51
NotImplementedException を初めて見た時は感心した。
スタブを示す、標準的な例外が用意されているのは便利。
// TODO: とかより、ずっといい。
454デフォルトの名無しさん:2009/03/26(木) 22:19:35
中身が空なだけで実際にメソッド自体はあるのに、NotImplementedってのも変な話だな。
ぜひ「空関数例外」みたいな名前に変えて欲しい。
俺の中ではNotImplementedはSystem.Reflectionでひっかかったときに投げるイメージ。
455デフォルトの名無しさん:2009/03/26(木) 22:23:02
勝手に作れよハゲ
456デフォルトの名無しさん:2009/03/26(木) 22:48:15
NotImplementedException 使うかどうかとかは開発スタイルによるかも
しれないなぁと思った。俺は結構使うほう。
457デフォルトの名無しさん:2009/03/26(木) 23:07:21
抽象クラスのvirtualメソッドに使ったりするかな
これを継承したクラスで要るメソッドだけオーバライドして実装
NotImplementedExceptionじゃなくてNotSupportedExceptionでやる場合もあるけど
458デフォルトの名無しさん:2009/03/27(金) 00:41:56
>>455
失礼な
まだほんのりと残っていますぞ
459デフォルトの名無しさん:2009/03/27(金) 00:51:28
>>454
中身が空っぽのメソッド作るのは、
「宣言だけして実装してないよ」って感じだと思うんだけど。
C++ みたいに宣言と実装が分かれてないから空っぽの動体付けてるだけで。

>>457
NotSupported は、
「interface 的には実装しないといけないんだけど、
このクラスでは実装しません」みたいな時に使いたい。
460デフォルトの名無しさん:2009/03/28(土) 01:50:52
NotImplementedExceptionはよく使うなー
午前7時に盲状態でコード書かなきゃいけないときとか頼りになる
461デフォルトの名無しさん:2009/03/28(土) 09:02:10
レビューで指摘されたんですが
usingディレクティブの記述順序がパフォーマンスに影響する事ってあるんですか?

単に視覚的な問題くらいの認識しかなかったので
ググってみましたが、そういったソースはみあたりませんでした。

教えて!エロい人!
462デフォルトの名無しさん:2009/03/28(土) 09:17:08
using の順序が問題になるのって、
拡張メソッドのインポート時くらいしか知らない。
463デフォルトの名無しさん:2009/03/28(土) 16:21:29
コントロールにイベントを実装しようとおもって、delegateを記述してるんだけど、
メソッドの戻り値がvoidのとき、Func<void, string> _EventHandlerみたいに記述できないの?
delegateを記述するの面倒だよ(´・ω・`)ショボーン

464デフォルトの名無しさん:2009/03/28(土) 16:22:53
>>463
Action<>
465デフォルトの名無しさん:2009/03/28(土) 16:41:31
おおありがとう(`・ω・´)シャキーン
466デフォルトの名無しさん:2009/03/28(土) 18:46:07
EventHandler<T>にしようよ。
467デフォルトの名無しさん:2009/03/28(土) 19:58:59
クラスのメンバで
public string Name;
とすることと
private string _name;
public string Name
{
 get { return _name; }
 set { _name = valiue; }
}
はどう違いますか?
468デフォルトの名無しさん:2009/03/28(土) 20:18:48
なんの釣りだよ。
469デフォルトの名無しさん:2009/03/28(土) 20:19:50
いや本当に違いがよくわからないので教えて下さい
470デフォルトの名無しさん:2009/03/28(土) 20:21:43
ぐぐったんですか?
471デフォルトの名無しさん:2009/03/28(土) 20:23:51
プロパティ public privateで試してみましたが書かれているサイトはよくわかりませんでした
何か専門用語があるのかもしれませんがそれがわからないのでぐぐれません
472デフォルトの名無しさん:2009/03/28(土) 20:34:58
>>467のコードの通りなら、特に使う上での違いはないのでは?
フィールドをPublicにするのは習慣としておすすめできない、というくらいで。
473デフォルトの名無しさん:2009/03/28(土) 20:39:03
フィールドをpublicにするくらいなら、自動プロパティにしろ
public string Name
{
 get;
 set;
}
474デフォルトの名無しさん:2009/03/28(土) 20:42:11
>>473
なんでpublicじゃだめなのかを聞いてるのに自動プロパティにしろなんてのは筋違いだろ
475デフォルトの名無しさん:2009/03/28(土) 20:43:15
private string _name;

public string Name{
476デフォルトの名無しさん:2009/03/28(土) 20:48:12
>>474
誰がそんなこと聞いてる?
477デフォルトの名無しさん:2009/03/28(土) 20:48:26
誰も訊いてない。
478デフォルトの名無しさん:2009/03/28(土) 20:54:34
class cls
{
float[,] test;
}

これって動的配列なんでしょうか?
float a = 0;
for(i=0;i<100;i++){
for(j=0;j<100;j++){
test[i, j] = a;
a++;
}
}
こうやって他のクラスから自由に配列の大きさを決めて格納するのに使えるんですか?
479デフォルトの名無しさん:2009/03/28(土) 21:00:12
配列は確保するまで使えません
未割り当てエラー出すだけ

つーかそのくらい実行してみりゃ分かるだろうが
480デフォルトの名無しさん:2009/03/28(土) 21:27:17
フィールドをプロパティに変えたときに互換性が取れなくなるから
最初からプロパティにしとけって話だろうけど
再コンパイルすればいいだけだからほとんど意味は無いよね
481デフォルトの名無しさん:2009/03/28(土) 21:30:52
>>476
>>467の趣旨はそういうことだろ?
482デフォルトの名無しさん:2009/03/28(土) 23:24:58
>>481
そんなの本人じゃないと分からない。単に違いを聞いてるだけに読める。
>>467の字面通りなら、ほとんど違いはないけど、作法としてパブリックフィールドは
推奨されていない、としか答えようがない。
483デフォルトの名無しさん:2009/03/28(土) 23:36:10
>>482
少なくとも自動プロパティを使えはおかしいだろ
何をいってんだ?
484デフォルトの名無しさん:2009/03/28(土) 23:46:58
>>467
プロパティってのは実はメソッド。
private string _name;
public string Name
{
 get { return _name; }
 set { _name = value; }
}
てのは
private string _name;
public string get_Name()
{
return _name;
}
public void set_Name(string value)
{
_name = value;
}
と書いてるのと同じ。
485デフォルトの名無しさん:2009/03/28(土) 23:48:07
で、どう違うんだ?
486デフォルトの名無しさん:2009/03/29(日) 00:02:01
プロパティならそのまま格納取り出しするだけじゃなくて
条件チェックやらなんやら色々できるだろ
487デフォルトの名無しさん:2009/03/29(日) 00:03:37
そういう理屈なら格納取り出しするだけの自動プロパティって何のためにあるんだよ
488デフォルトの名無しさん:2009/03/29(日) 00:11:28
今は格納取り出しするだけかもしれないけど後でなんか書きたくなるかもしれんだろ
489デフォルトの名無しさん:2009/03/29(日) 00:17:26
まずpublicなフィールドとして記述し、アクセサが必要とされた時点でプロパティに書き換えればいいじゃない
490デフォルトの名無しさん:2009/03/29(日) 00:25:44
フィールドとプロパティではメタデータ上でも区別される
491デフォルトの名無しさん:2009/03/29(日) 00:30:58
ソースレベルで互換性があればいいだろ
そこだけアップデートされるようなライブラリを作ってるなら別だけど
492デフォルトの名無しさん:2009/03/29(日) 00:36:24
使いたくなきゃ使わなきゃいいじゃない
493デフォルトの名無しさん:2009/03/29(日) 00:42:17
じゃメンバ関数をpublicにするということと等価ってこと?
494デフォルトの名無しさん:2009/03/29(日) 00:44:13
もうそれでいいよ
495デフォルトの名無しさん:2009/03/29(日) 00:55:53
屁理屈すぎてもう面倒臭い
496デフォルトの名無しさん:2009/03/29(日) 01:01:32
自分の理屈に合わない理屈は屁理屈ということにしたいんですね わかります
497デフォルトの名無しさん:2009/03/29(日) 01:07:10
>>496
それを屁理屈って言うんだよ。
498デフォルトの名無しさん:2009/03/29(日) 01:09:11
>>497
まるですじの通らない理屈とは思えないが?

>へ‐りくつ【×屁理屈】
>まるですじの通らない理屈。道理に合わない理屈。「―を並べる」「―をこねる」
499デフォルトの名無しさん:2009/03/29(日) 01:09:11
フィールド直接触るとかやめてくれ・・。
未来の自分でさえ信用できないのに、他人の利用者を信じれるわけがないだろJK
500デフォルトの名無しさん:2009/03/29(日) 02:10:30
いやいや好きにやりゃいいじゃん
そいつにとってフィールドもプロパティも一緒つーなら
それ以外の使い方しないんだろうから
どうせ個人でやるだけだろうしw
501デフォルトの名無しさん:2009/03/29(日) 02:18:35
じゃ違うの?
502デフォルトの名無しさん:2009/03/29(日) 02:22:27
Control.DataBindingsと組み合わせるならpublicフィールドの選択肢は無いけどね。
503デフォルトの名無しさん:2009/03/29(日) 02:29:35
なんで?
504デフォルトの名無しさん:2009/03/29(日) 02:39:07
>>503
FormにTextBox2つ貼り付けて
class MyData
{
public string PublicField;
public string PublicProperty { get; set; }
}
作って
textBox1.DataBindings.Add("Text", data, "PublicField");
textBox2.DataBindings.Add("Text", data, "PublicProperty");
として動かしてみたらわかる。
PublicFieldはDataBindの対象にならない。
505デフォルトの名無しさん:2009/03/29(日) 03:01:01
>>501,503
その頭の悪そうなレスはやめてくれ
506デフォルトの名無しさん:2009/03/29(日) 03:42:08
>>505
同意

とりあえずここ読め
http://ufcpp.net/study/csharp/oo_property.html

オブジェクト指向には実装の隠蔽というものがあってだね(ぶつぶつ
507デフォルトの名無しさん:2009/03/29(日) 13:13:36
パブリックプロパティを自動実装すると
パブリックフィールドを直接公開するよりも一般に良いということを示さない限り
一般にプロパティにするべきだという理屈は屁理屈でしかないだろ
508デフォルトの名無しさん:2009/03/29(日) 13:20:52
なんでそこまで拘るんだw
自分しか使わない&拡張する予定がなければフィールド使えばいいじゃない。
509デフォルトの名無しさん:2009/03/29(日) 13:27:47
>>508
拡張する予定があっても他人が使っていても
フィールドで問題ないだろ
どういう時に問題が起きるわけ?
510デフォルトの名無しさん:2009/03/29(日) 13:31:33
フィールドで問題ない問題ない
511デフォルトの名無しさん:2009/03/29(日) 13:38:43
はいはい、その通りですね。
君はパブリックフィールド使えばいい。私は今まで通りプロパティ使うけどな。
512デフォルトの名無しさん:2009/03/29(日) 13:44:41
はいはい、その通りですね。
君はプロパティ使えばいい。おいらは今までどおり使い分けるけどな。
513デフォルトの名無しさん:2009/03/29(日) 13:46:51
春だな
さすがに今日は言っても文句ねえだろ
514デフォルトの名無しさん:2009/03/29(日) 13:51:35
桜も咲いてるしな・・・
515デフォルトの名無しさん:2009/03/29(日) 14:19:23
・get setを制限する必要がない
・setされた値を事前に評価する必要がない
・バッキングストアを仮想化する必要がない
・プロパティ自体をvirtualにしたりsealedにしたりする必要がない
など、すなわち単なる「変数」であれば、プロパティのほうがコストが
高いのは明らかだから、あえてプロパティを使わずフィールドを公開して
構わないと思うよ。

また、将来上記のうち上3点(最後の1点はまるっきりの変更なんで別だが)の
方針が変更される可能性があったとしても、その時点でフィールドを
プロパティに変更すればソースレベルでの互換性は保てるので、問題ない。
(ただし、公開クラスライブラリで、バイナリ互換性が必要な場合を除く)
516デフォルトの名無しさん:2009/03/29(日) 14:21:23
setを制限したければreadonlyにすりゃいいじゃん
517デフォルトの名無しさん:2009/03/29(日) 14:39:21
明示的に初期値が設定できない自動実装なんて
518デフォルトの名無しさん:2009/03/29(日) 15:06:45
プロパティもインライン化されればコストは変わらないんじゃないの
519デフォルトの名無しさん:2009/03/29(日) 17:12:56
自作クラスを2つのプロジェクトで使いたい場合、使いたいクラスはどっちのプロジェクトに含ませればいいんですか?
今どっちのプロジェクトにも同じクラスを書いていて修正するときなんか無駄があるような気がしてきました
この場合どっちのプロジェクトにも含ませない方法とかがあってそうした方がいいんでしょうか?変更は頻繁にするんですが
520デフォルトの名無しさん:2009/03/29(日) 17:15:44
>>519
片方のプロジェクトからもう1つを参照してもいいし、
別にライブラリプロジェクト作って、それを2つのプロジェクトから参照してもいいし、
ソースを「リンクとして追加」もできるし。
521デフォルトの名無しさん:2009/03/29(日) 17:52:48
できました。ありがとうございました
読み込まれるプロジェクトの順番が大事なのかとか変な方向に考えてましたどうもです
522デフォルトの名無しさん:2009/03/29(日) 20:07:04
イベントハンドラのサンプルなんかだと、フィールドでそのまま公開されてるようにみえるけど、
これもプロパティで表示したほうがいいの?

http://msdn.microsoft.com/ja-jp/library/db0etb8x.aspx
523デフォルトの名無しさん:2009/03/29(日) 20:16:17
>>522
event キーワードがついてると、普通のフィールドじゃなくなる。
プロパティのデリゲート版みたいな状態のなので、
そのまま公開されてるわけじゃない。
524デフォルトの名無しさん:2009/03/29(日) 20:22:34
そうなんだ意味が違うんだね サンクス
525デフォルトの名無しさん:2009/03/29(日) 22:08:28
ReadBytesで2次元配列に格納する方法がわかりません
これは1次元としてしか扱えないんですか?
526デフォルトの名無しさん:2009/03/29(日) 23:56:19
>>525
嫁が欲しいなら2次元で我慢しとけ
527デフォルトの名無しさん:2009/03/29(日) 23:59:32
質問です。
C#の本買って勉強してるんですがNorthwindが何なのかわかりません。
Northwindってなんですか?
ぐぐっても
http://www.dreamsoft.jp/northwind/index.html
こんなのとか
http://msdn.microsoft.com/ja-jp/library/ms143221.aspx
こんなのしか見つかりませんでした。
528デフォルトの名無しさん:2009/03/30(月) 00:00:56
MSのデータベース関連のサンプルにちょくちょく出てくる
サンプルデータの名前。
航空会社かなんかのデータっていう想定のサンプル。
529デフォルトの名無しさん:2009/03/30(月) 00:01:05
>>527
後者のリンクにある、サンプルデータベースじゃないの?
530デフォルトの名無しさん:2009/03/30(月) 00:01:12
VS2008EEでプログラムを勉強してる素人です。
拡張コントロールをいくつか作ることで、継承のありがたみは
少しずつ理解できてきたところなんですけど、
インターフェースや抽象クラスの存在意義がなかなか理解できません。
インターフェースの実装を明示することで
その機能が実装されてることが一目でわかるというようなこと以外にメリットが思いつかないんですが
大規模なものを書かないとそこら辺の概念は理解できないものなのでしょうか。
531デフォルトの名無しさん:2009/03/30(月) 00:14:27
>>530
↓の14章を読んでみればどうかな?
それでも理解できなければ、今は使う必要性がないんだよ。

http://www.atmarkit.co.jp/fdotnet/csharp_abc2/csabc2_014/cs2_014_01.html
532デフォルトの名無しさん:2009/03/30(月) 00:15:15
うぐ、あげちまった
533デフォルトの名無しさん:2009/03/30(月) 00:16:12
ありがとうございます。読んでみます。
534530:2009/03/30(月) 00:17:11
↑530=533です。ID出ないの忘れてました。
535デフォルトの名無しさん:2009/03/30(月) 00:22:40
>>530
インターフェースと抽象クラスの説明は確かに難しいのかも
例えば家電でいうと・・・

・抽象化
家電は電気製品なのでどんな製品にも必ず電源のオンオフスイッチがある→抽象クラスで記述

・インターフェース
家電は電気製品なのでどんな製品にも必ず通電する必要がある→
だけど電源を供給する方法は、コンセント、電池、バッテリー、ソーラーパネルと多種多様なので、
電源を供給するための端子は付けておくけど、実際の供給方法は製品に任せる

こんな感じ?
536デフォルトの名無しさん:2009/03/30(月) 00:36:10
>>525
どんなデーター形式でも扱えるよ。
537530:2009/03/30(月) 00:42:32
>>535
なるほど。既に定義されてるインターフェースを使ってみたら
だいぶそういう概念が理解できてきました。
もっとも自分で定義して実装する必要性を感じるには
もっと大規模なコードを書く必要があるみたいです。
少しずつ使えるようになりたいと思います。ありがとうございました。
538デフォルトの名無しさん:2009/03/30(月) 01:07:27
>>537
stringをフィールドに持つクラスと、intをフィールドに持つクラスで、
それぞれ共通に名前を持つフィールドを持ち、
さらに、それぞれstringに保存された文字列の文字数とintに保存された数字の桁数を取得するメソッドを
interfaceを用いて取得する方法を記述してみれ

abstract public class BaseClass
 public string Name { get; set; }

public class StringClass : BaseClass
 public string StringData{ get; set; }

public class IntClass : BaseClass
 public int IntData { get; set; }

ここまではわかるっしょ 
539デフォルトの名無しさん:2009/03/30(月) 01:18:46
>>538
先生!なぜabstractのBaseクラスを定義しているのかわかりません!
その場合インターフェイスじゃなくて
abstract int GetLength();をBaseクラスに書くのが適切だと思います!
540デフォルトの名無しさん:2009/03/30(月) 01:30:02
boolのような論理値やimageを格納するclassもあるので、
すべて一様にGetLength()が適用できないんです><

でも、それぞれ名前はもってるんです><
541デフォルトの名無しさん:2009/03/30(月) 01:40:42
Interfaceってのは、RubyやPythonなんかの動的型付言語なら不要だけど、
C#みたいにコンパイル時に確定してないと我慢できない潔癖な処理系に
対して、私はこのメソッド持ってますよと、とりあえず宣言するための
姑息な手段。
うっかり安心して呼び出すと実体は、
throw new NotImplementedException();と書いてあるだけなので、結局
1行目と同じ結果になる。


って、あんまり夜中にアンサイクロペディアとか読みふけってちゃ駄目だな。
542デフォルトの名無しさん:2009/03/30(月) 01:53:11
>私はこのメソッド持ってますよと、とりあえず宣言するための姑息な手段。
リフレクションで代用できないの?

それはともかく、まぁ、姑息かどうかはわからんけども、
interfaceを継承してるクラスは、そのinterfaceで宣言した型にキャストして実行できるから、
メソッドを持っていますよと、とりあえず宣言するためだけの手段ではないんでないの?
キャストできますよという意味と同義で書いてるのならその通りかもしらんが。
543539:2009/03/30(月) 02:22:10
>>540
interfaceだって戻り値がintのGetLength()作ったら同じことではないの?
abstract int GetLength()をovarrideするのと何が違うの?

俺の言いたかったのはinterfaceの例題を出すなら抽象クラスを使ったら駄目じゃないのかいと言いたい。

>>538のサンプルの場合
public Interface ISample
{
int GetLength()
}

を定義したとしてそのInterfaiceを実装するのはBaseClass?それとも
IntClassや StringClass?
BaseClassがInterfaceを実装したとして
publice abstract int GetLength();
544539:2009/03/30(月) 02:26:17
を定義して IntClassや StringClassがそれをoverrideするなら
GetLengthを呼び出す側はわざわざInterfaceで呼ぶ必要もなくなるわけで。

IntClass StringClassがInterfaceを実装するなら 初心者にはBaseClassは混乱の元
545デフォルトの名無しさん:2009/03/30(月) 02:33:03
>>543
>IntClass StringClassがInterfaceを実装するなら 初心者にはBaseClassは混乱の元
すべてはobject型を継承するのは混乱の元?

>interfaceだって戻り値がintのGetLength()作ったら同じことではないの?
違うでしょ
bool型などの論理型にはGetLength()は必要ないわけで。
その理屈をとことん突き詰めれば、すべては同じobject型を継承しているので、
objectクラスにGetLength()を作って、それをoverrideするなり、privateにして隠蔽すればいいことになる。

>そのInterfaiceを実装するのはBaseClass?それとも IntClassや StringClass?
インターフェースを実装するのはintclassやstringclassだね
intclassやstringclassをキャストしてISample型のarrayに保存したり、
is ISample で型を確かめてGetLengthを実行したりとか。
546デフォルトの名無しさん:2009/03/30(月) 02:38:16
>>543
じゃ、お題をこんなふうにすればいいかい?

stringとintとboolをフィールドに持つクラスで、
それぞれ共通に名前を持つフィールドを持ちながら、
さらに、intとstringを持つクラスだけに、stringに保存された文字列の文字数と、
intに保存された数字の桁数を取得するメソッドをinterfaceを用いて取得する方法を記述してみれ
ただしBoolClassは論理値なので桁数とかないので桁数を取得するメソッドは追加する必要はない

abstract public class BaseClass
 public string Name { get; set; }

public class StringClass : BaseClass
 public string StringData{ get; set; }

public class IntClass : BaseClass
 public int IntData { get; set; }

public class BoolClass : BaseClass
 public bool BoolData { get; set; }

こんなんでいい?
547539:2009/03/30(月) 02:56:29
>>545


>>IntClass StringClassがInterfaceを実装するなら 初心者にはBaseClassは混乱の元
>すべてはobject型を継承するのは混乱の元?

継承が悪い(混乱の元)とは言っていなくて、
抽象クラスとInterfaceの使い方を知らない人に
Interfaceの例題を出そうとしてabstractクラスを使っちゃ混乱するでしょと言いたいの。

>>interfaceだって戻り値がintのGetLength()作ったら同じことではないの?
>違うでしょ
>bool型などの論理型にはGetLength()は必要ないわけで。

例題に
class boolClass:BaseClass なぞ書いていないでしょw

>その理屈をとことん突き詰めれば、すべては同じobject型を継承しているので、
>objectクラスにGetLength()を作って、それをoverrideするなり、privateにして隠蔽すればいいことになる。

どう突き詰めれば>>538のBaseClassにGetLength()を定義することがこんな解釈になるのか謎w

>>そのInterfaiceを実装するのはBaseClass?それとも IntClassや StringClass?
>インターフェースを実装するのはintclassやstringclassだね

IntClassやStringClassがInterfaceを実装するなら話は分かるんだけど、
例題に IntClassやStringClassがInterfaceを実装するとどこにも書いてないわけで。
BaseClassがInterfaceをabstractで実装してサブクラスがoverrideすることもできるわけで
話が混乱するでしょ。


結論:初心者に例題出すなら もっといい例題を出そうね。
548530:2009/03/30(月) 03:00:38
水を差すつもりはないですけど
ぶっちゃけお二人(だと思うけど)の議論を見てるだけでも勉強になります
経験を積んだ人間に話しを聞ける環境にいないので
自分の理解の甘さが改めて実感できて、素人にはありがたいッス。
549デフォルトの名無しさん:2009/03/30(月) 03:09:22
>>547
面倒くせぇなあお前

もし返答があったら、単にinterfaceで記述しただけじゃ抽象クラスに記述するのと同じだから、
>>540で記述したように抽象クラスで実装できない例の存在を示して、
interfaceの型で宣言した変数にキャストして実行できる利点を記述しようとおもったら、すべて台無しじゃねーか

>>548
というわけで関係ない人がすべて解答してくれたわけで答えが出てしまったわけだが、
まあ、なんだがんばれ
550539:2009/03/30(月) 03:09:41
>>546
そんなんでいいと思います。

ただ BaseClassをabstractにする必要はないかも?

newさせたくないっていう理由でabstractクラスにするとしても
例題としてはabstractいらないかも。

2次関数を知らない人に教えるときにいきなり 
(sinx)^2 + (sinx) + 5 = 0
みたいな合成関数で例題出されたら混乱すると思う。
丁寧に教えるならシンプルにしてあげないと。
551530:2009/03/30(月) 03:16:51
>>549
いや、本当に勉強になります。
問いを与えてもらえて良かったです。
538辺りからをもうちょい読み返してみます。
552539:2009/03/30(月) 03:25:40
>>549

>面倒くせぇなあお前
ありがとう

>もし返答があったら、単にinterfaceで記述しただけじゃ抽象クラスに記述するのと同じだから、
>>>540で記述したように抽象クラスで実装できない例の存在を示して、
>interfaceの型で宣言した変数にキャストして実行できる利点を記述しようとおもったら、すべて台無しじゃねーか

小出しにするほうが面倒くさいと思う。
553デフォルトの名無しさん:2009/03/30(月) 03:43:37
>小出しにするほうが面倒くさいと思う。
んなこと理解しててわざとやってるっていってんの。
後で反証を説明したほうが効果的に理解してもらえるかなと思ったから。

>>面倒くせぇなあお前
>ありがとう
そのわざとやってるところにチャチャいれられてすべて台無しになってるから面倒くせぇっていってんの
面倒くさいの質が違う

わざと言ってるんだろうけどw
554デフォルトの名無しさん:2009/03/30(月) 07:37:45
using(@) {A}
で、@では自作ログ出力クラスのインスタンスを生成しています。
この際、インスタンス初期化時にログファイルを開けない場合は
StreamWriterのコンストラクタが出力する例外をそのままthrowするのですが、
それをcatchするには、
try {using(@) {A}}
みたいに全体を囲わないといけないのでしょうか。
この場合、Aまでtryに含まれてしまうのが嫌なのですけど・・・。
555デフォルトの名無しさん:2009/03/30(月) 08:46:39
Log log = null;
try {
    log = new Log();
}
catch (...) {
    throw;
}
using (log) {
}
なんてのもできんではないが全体try-catchでいいと思うよ
556デフォルトの名無しさん:2009/03/30(月) 09:08:44
try
{
MyLogger logger = null
logger = new MyLogger();

// ...


}
catch (MyLoggerException myloggerex)
{
if (myloggerex.InnerException is IOException)
{
// ...
}
}
finally
{
if (null != logger)
{
logger.Dispose();
}
}

自作ログ出力クラスが独自の例外を送出するようにすればよくない?
557デフォルトの名無しさん:2009/03/30(月) 20:15:45
AクラスをBクラスのメソッドの引数として渡した場合はアドレス参照で渡されるのはわかりましたが
そのメソッド内で、渡されたAクラスをBクラスのフィールド宣言に代入した場合もアドレスが保持されるだけなんでしょうか
558デフォルトの名無しさん:2009/03/30(月) 20:19:28
アドレス参照って誤解を言い方を止めろ
参照渡しと値渡しだ

参照型は指定しない限り常に参照のコピーを取るだけ
値型は常に値そのもののコピー
559デフォルトの名無しさん:2009/03/30(月) 21:23:16
>>558
参照渡しと値渡しと
参照型と値型は別物ぞよ
560デフォルトの名無しさん:2009/03/30(月) 21:33:54
>>559
そうですね^^;
561554:2009/03/30(月) 22:48:41
>>555-556
ありがとうございます。
独自の例外を作って、tryは今まで通りusing全体を囲うのが一番シンプルになりそうですね。
独自の例外なら問題なくcatchで切り分けられるし。
562デフォルトの名無しさん:2009/03/31(火) 05:00:24
すみません、質問いいですか?

例えばラベルをある数だけ生成したい場合コントロールの名前はどうつけたら
いいのでしょうか?

デザイナで置くとlabel1とか自動で付きますよね
forループで廻すとなるとどうするのでしょうか・・・
563デフォルトの名無しさん:2009/03/31(火) 07:28:59
意味不なんだがエスパーすると。
forループの中でコントロールを自分で作る。
564デフォルトの名無しさん:2009/03/31(火) 07:55:10
こういうことをやりたいのか?
for (int i = 0; i < 100; i++)
new Label() { Name = "label" + i.ToString() }
565デフォルトの名無しさん:2009/03/31(火) 08:04:16
まさにそれです
自己解決しました
566デフォルトの名無しさん:2009/03/31(火) 14:40:25
まさにそれですって
…自己解決ちゃうやん
567デフォルトの名無しさん:2009/03/31(火) 15:22:21
ワロタ
568デフォルトの名無しさん:2009/03/31(火) 18:50:25
ttp://msdn.microsoft.com/ja-jp/library/ms747027.aspx
ここの「コードを使用してイメージをレンダリングする方法」(一番下のソース)を実践したいのですが、
WPFアプリケーションプロジェクトに貼り付けただけではウィンドウに表示されません。
(貼り付ける場所がおかしいのだと思いますが…。)
どういう風に書けばいいのか教えてください。
VSC#2008Expressを使ってます。
569デフォルトの名無しさん:2009/03/31(火) 23:52:30
.NET 2002(C#) で FTPクライアント処理を実装したいのですが、
おすすめのライブラリはありますか?
570デフォルトの名無しさん:2009/04/01(水) 00:01:53
質問です。
埋め込んだリソースファイル(WAVE)を指定した場所に直接コピーしたいのですが
どのように記述したらできるのでしょうか?
571デフォルトの名無しさん:2009/04/01(水) 00:08:08
ストリームを直接ファイルストリームに出力すればいいんでね?
572デフォルトの名無しさん:2009/04/01(水) 01:22:06
>>569
市販の?
573デフォルトの名無しさん:2009/04/01(水) 01:24:51
>>569
basp21はどうよ?
574デフォルトの名無しさん:2009/04/01(水) 01:40:38
すいません。質問です。

フォームにデザイナで追加したコントロールには、何か、インデックスのようなものが割り振られてたりはしないのでしょうか?
自分はボタンをデザイナで一個一個大量に配置してしまったのですが、
それをプログラムコードから利用するときにめんどくさくて大変です。
最初から配列でとっておけばよかったと今では後悔していますが、
今からでも添え字があれば、それを元にエレガント且つ簡潔にコードからの利用が可能になるはずです。
誰かうまいやり方など知ってる方がいらっしゃいましたらお教えくださいませ。
575デフォルトの名無しさん:2009/04/01(水) 01:53:07
作り直せば?
576デフォルトの名無しさん:2009/04/01(水) 01:54:17
自分で配列に入れるコードを書けばいいじゃん。
577デフォルトの名無しさん:2009/04/01(水) 01:56:21
>>574
>フォームにデザイナで追加したコントロールには、何か、インデックスの
>ようなものが割り振られてたりはしないのでしょうか?
ない
プログラム内で配列でコントロールを生成して使ったことがある。
578デフォルトの名無しさん:2009/04/01(水) 02:04:02
Control.Controls
579デフォルトの名無しさん:2009/04/01(水) 02:09:20
なんと、そんなのが有ったのか・・・>>577のないは訂正だ。
580デフォルトの名無しさん:2009/04/01(水) 02:47:59
類似質問ですが
グループボックス内にテキストボックスやプログレスバーなどが沢山あり
それを実行時にグループボックスごと追加する場合
ユーザー定義コントロールを作ってnewするのがいい方法なのでしょうか?

又、その場合ユーザー定義コントロールの作り方が良くわかるサイトなどご存知ないでしょうか?

宜しくお願い致します。
581デフォルトの名無しさん:2009/04/01(水) 03:10:49
574っす。
>>575-579
ありがとやんした!!
582デフォルトの名無しさん:2009/04/01(水) 03:43:54
583568:2009/04/01(水) 03:53:22
別のスレで聞いてきます。どうも〜
584デフォルトの名無しさん:2009/04/01(水) 06:23:48
質問です。
今使用しているアンマネージDLLに int WINAPI hoge(float *p, int size); のような関数があります。
float *pは呼出元で確保した配列のポインタなのですが、16バイトアライメントされている必要があります。
C#でアライメントを考慮した配列を確保する方法などあるのでしょうか?
585デフォルトの名無しさん:2009/04/01(水) 07:28:15
[StructLayout(LayoutKind.Sequential, Pack=16)]
struct Test
{
  データ
}

586デフォルトの名無しさん:2009/04/01(水) 09:21:18
yield の使い道って何かあるのでしょうか?
なんとなく気になって@ITとか見てみたんですがなんかわかりづらい・・・・
わかりやすい解釈のページとか教えていただけると助かります。
587デフォルトの名無しさん:2009/04/01(水) 09:30:26
列挙処理書くならかなり便利なんだけど。
588デフォルトの名無しさん:2009/04/01(水) 09:36:26
>>587
そのような記述を多く見るのですが・・・orz
いかんせん読解力が無いようで・・
589デフォルトの名無しさん:2009/04/01(水) 09:40:11
>>588
今は大抵 LINQ の標準ライブラリであらかた機能がそろうけども、
特定の条件だけ満たす要素を取り出したり、
特定のプロパティの値を取り出すような関数書いてみ。

それも、いったん new List() するんじゃなくて、遅延評価で。
590デフォルトの名無しさん:2009/04/01(水) 10:00:47
>>588
すべてを終えるには時間のかかる処理をしながら、条件を満たした項目から表示していくプログラムを作れば理解できるよ
記憶領域を使わないですむし、演算の終わった項目から並列処理にかけたりできるしね
591デフォルトの名無しさん:2009/04/01(水) 10:02:48
yieldは別に速くはならないだろ
592デフォルトの名無しさん:2009/04/01(水) 10:06:41
>>589-590
ありがとうございます。
そういう条件でちょっとサンプルでもつくってやってみます。
593デフォルトの名無しさん:2009/04/01(水) 12:20:42
594デフォルトの名無しさん:2009/04/01(水) 12:45:17
最近更新してないと思ったらやはり板移転検出してた・・・
595デフォルトの名無しさん:2009/04/01(水) 13:12:07
>>593
情報ありがとうございます。
こういう使い方が出来ると言うことなんですね。

確かに >>599が言うように
>特定の条件を満たす要素を・・・
というのはその通りかと
処理がそれを呼び出す側ですっきりしそうです。

使い道が少しですがわかった気がします。
タイミングさえあれば今度どこかで実装してみようと思います。
596デフォルトの名無しさん:2009/04/01(水) 13:26:44
質問ですが、
aspxでファイルにResponse.Redirect(ファイルURL)でダウンロードさせてるんですが、
複数ユーザの同時アクセス数を制限するにはどうしたらいいのですか?
例えば上限を10にしておいて同時アクセス数が11になったらエラーページに飛ばすみたいな。

static Queue _queue = new Queue();
static object _lock = new object();
page_Load()
{
lock(_lock)
{
if(_queue.Count > 10)
Response.Redirect(ErrorPage);

_queue.Enque(new object());
}
try
{
Response.Redirect(DownloadURL);
}
finally
{
lock(_lock)
{
_queue.Deque();
}
}
}

こんなんしか思いつかないんですが・・・
定石みたいなのあるのでしょうか。
597596:2009/04/01(水) 13:32:33
>>596に追加で
ダウンロード時間を30秒と決め付けて
finally句でDeque前に
Thread.Sleep(30 * 1000);
598596:2009/04/01(水) 14:44:42
Sleepじゃ駄目だ〜(T_T)
あと DequeueのlockとEnqueueのlockでデットロック起こしてる〜(T_T)
ってワケで作り直し。

private volatile static Queue _queue = new Queue();
protected void Page_Load(object sender, EventArgs e)
{
if (_queue.Count >= 10)
{
Response.Write("混雑してます 同時アクセス数" + _queue.Count);
Response.End();
}

_queue.Enqueue(new System.Threading.Timer(new TimerCallback(tmr_Tick), null, 10 * 1000, System.Threading.Timeout.Infinite));

try
{
Response.Write("同時アクセス数" + _queue.Count);
Response.End();
}
finally
{
System.Diagnostics.Debug.WriteLine("finally");
}
}

private static void tmr_Tick(object state)
{
_queue.Dequeue();
System.Diagnostics.Debug.WriteLine("Deque Count" + _queue.Count);
}
599デフォルトの名無しさん:2009/04/01(水) 14:50:04
それでできる? 俺なら、外部(データベースとか)に、接続数を保持しとくな。
600デフォルトの名無しさん:2009/04/01(水) 15:21:19
共有リソースへのアクセス数を制限するならセマフォ使えばいいしょ
601596:2009/04/01(水) 17:28:08
>>600 セマフォ使ってみました。
5スレッドまで。1秒待っても駄目だったら混雑中。
private volatile static Semaphore _pool = new Semaphore(0, 5);
static Default() {_pool.Release(5); }
protected void Page_Load(object sender, EventArgs e)
{
if (!_pool.WaitOne(1000))
{
Response.Write("混雑しています。");
Response.End();
}
try
{
Response.Redirect(URL);
}
finally
{
Thread t = new Thread(() => {
Thread.Sleep(10 * 1000);
int cnt = _pool.Release();
System.Diagnostics.Debug.WriteLine("cnt " + cnt);});
t.Start();
System.Diagnostics.Debug.WriteLine("finally");
}
}
}
602デフォルトの名無しさん:2009/04/01(水) 20:35:20
初心者なので、用語の使い方を間違っていたらすみません。
良く経験の長い方のレスなどを見ていると

フレームワークを拡張するというような記述がありますが
具体的にはどのようなことをいうのでしょうか。
フレームワーク内で既に定義されているクラスを
継承して拡張した自分なりのクラスを持っているという理解で正しいでしょうか。

また、拡張したフレームワークを使用してアプリを作った場合
そのアプリは、拡張されていないフレームワーク上ではキチンと動作しないものなのでしょうか。
よろしくお願いします。
603デフォルトの名無しさん:2009/04/01(水) 20:52:15
フレームワークの拡張という言葉はあまり使わない気がする

フレームワークってのは、機能を簡単に使えるようにした壮大なライブラリ(クラス)群で、
料理で言うところの味噌や醤油のような調味料の集まりみたいなもの。

この調味料を継承して拡張して機能を自作で追加すると、
パスタにかけるだけで美味しいパスタができるというトマトソースを作ることができる。

フレームワーク(調味料)さえあれば、トマトソースのできる調味料が揃っているので
作ることはできるけど、レシピは教えてあげないと作れない。

そのレシピはdll(ダイナミックリンクライブラリ)といってレシピの集まり。
これを配布してあげることで、同じフレームワークを持っているPC上であれば、
どれもおいしいトマトソースのパスタを作ることができるという感じ。
604デフォルトの名無しさん:2009/04/01(水) 20:56:44
一般的な意味での「フレームワーク」と、.NET Framework は違う層だから、
そこは気をつけてね。
605602:2009/04/01(水) 21:12:05
言葉から、フレームワークそのものを追加・変更するような想像をしていたんですが
独自に拡張したクラスライブラリを作成するということだったんですね
納得いきました。ありがとうございました。
606デフォルトの名無しさん:2009/04/01(水) 21:55:48
横槍だけど
フレームワークはライブラリより広義の「手法」的な意味だとおもうんだぜ?
機能群はライブラリで,(利用法とか運用法も含めた)方法論的な意味でフレームワークって良く使う
607デフォルトの名無しさん:2009/04/01(水) 22:31:43
>>601
横ですが、Semaphoreはそうやって使うんですね
参考になりました
608デフォルトの名無しさん:2009/04/02(木) 17:10:51
階層が深くて扱いづらいintの変数に別名を付けるにはどうすればいいんですか?
int a = bbbb.ccccc.ddddd;
とすると値のコピーになりますよね
これを参照にしたいんです
609デフォルトの名無しさん:2009/04/02(木) 17:26:33
usingだめ?
610デフォルトの名無しさん:2009/04/02(木) 17:29:35
それクラスの外に書くやつですよね
クラスで管理したいです
611デフォルトの名無しさん:2009/04/02(木) 17:31:13
調べようぜ少しくらい
ttp://msdn.microsoft.com/ja-jp/library/yh598w02(VS.80).aspx
612デフォルトの名無しさん:2009/04/02(木) 17:33:15
ワラタ
613デフォルトの名無しさん:2009/04/02(木) 17:33:15
そういうものが必要になることじたい何かおかしいのだが、
プロパティにしたらどう?

int A { get { return bbbb.ccccc.ddddd; } set { bbbb.ccccc.ddddd = value; }}
614デフォルトの名無しさん:2009/04/02(木) 17:37:26
unsafeだめ?
615デフォルトの名無しさん:2009/04/02(木) 17:39:03
>>611
そっちか。それだめです期限付きでその中ではコピーされますよね
参照がいいです。
616デフォルトの名無しさん:2009/04/02(木) 17:45:36
・・・・・・(;´∀`)
617デフォルトの名無しさん:2009/04/02(木) 17:47:43
だからunsafeつかって好きにかけや
618デフォルトの名無しさん:2009/04/02(木) 18:55:39
FontDescriptionという構造体を呼び出すときに

fd = new Microsoft.DirectX.Direct3D.FontDescription();

としているんですが
次のエラーが出てしまいます

次のメソッドまたはプロパティ間で呼び出しが不適切です:
'Microsoft.DirectX.Direct3D.FontDescription.FontDescription()' と
'Microsoft.DirectX.Direct3D.FontDescription.FontDescription()'

ビルドしてみるとエラーがあるにもかかわらず問題なく動いているようです
これはどうすればいいんでしょうか
619デフォルトの名無しさん:2009/04/02(木) 19:04:06
質問です。

class HogeCollection : IEnumerable<Hoge>

のように、IEnumerable<T>を実装したコレクションのインスタンスがあるのですが、
そこから動的にHogeの型を取得するにはどうすればよいのでしょう?
620デフォルトの名無しさん:2009/04/02(木) 19:08:24
リフレクション
621デフォルトの名無しさん:2009/04/02(木) 19:12:26
GetType().GetInterfaces().First(i => i.Name == "IEnumerable`1").GetGenericArguments()[0]

かな
もっといい方法もありそうだけど
622デフォルトの名無しさん:2009/04/02(木) 19:17:47
>>613
それも値がコピーされて格納されるじゃん
一瞬でも複製を作りたくないんだけど
ほんとに引数にref指定してその中だけで使えるように渡すしか値型を参照で保持する方法はないの?
623デフォルトの名無しさん:2009/04/02(木) 19:20:37
>>621
Nameを使うと誤判定の可能性があるので、
オープンジェネリック型を使った方がいいな

GetType()
.GetInterfaces()
.First(i => i.GetGenericTypeDefinition() == typeof(IEnumerable<>))
.GetGenericArguments()[0]
624デフォルトの名無しさん:2009/04/02(木) 19:24:10
structのこといってんの?
一瞬でもコピーされるのの何が問題なのかわからんから答えようがないよな
625デフォルトの名無しさん:2009/04/02(木) 19:24:38
>>620-621,623
なるほど!ありがとうございました。
626デフォルトの名無しさん:2009/04/02(木) 19:26:40
unsafeでポインタでFA
627デフォルトの名無しさん:2009/04/02(木) 19:27:44
unsafe対応してないの!
628デフォルトの名無しさん:2009/04/02(木) 19:28:37
すまんunsafeしかないってことか
構造を変えるわ、あきらめたthx
629デフォルトの名無しさん:2009/04/02(木) 19:31:21
>>622
初心者スレに行って質問の仕方から勉強しなおしだな
630デフォルトの名無しさん:2009/04/02(木) 19:40:56
>>622
それくらいの余計なコピーの作成くらい、実行時には最適化で消えると思うよ。
631デフォルトの名無しさん:2009/04/02(木) 19:43:19
もしかして、複数スレッドから読み書きされるからコピーされると困る って話なのか?
632デフォルトの名無しさん:2009/04/02(木) 19:51:16
たぶん異なるスレッドから見てるんでしょ

関係ないけど
参照でコピーしても、そのポインタを保持してるんだからメモリの節約にはならないんだっけ?
633デフォルトの名無しさん:2009/04/02(木) 19:53:22
ただ呼び出しがめんどいってだけじゃね?最初の質問からすると。
最後にまた代入すりゃいいじゃんって思うけどねw

んで質問ですけど、unsafe使って問題になることって何ですか?
unsafe内のコードに問題が無いという前提で。
634デフォルトの名無しさん:2009/04/02(木) 19:56:39
関数の引数でref使う方法もなくはないけど、
aliasをサポートする別の言語を使うしかないな。C++/CLIで何とかならなかったっけ?

C#でもこういう裏技はあるけど正直おすすめしない。
int hoge = 0; 
TypedReference tref = __makeref(hoge); 
__refvalue(tref, int) = 5; 
Console.WriteLine(hoge); 
635デフォルトの名無しさん:2009/04/02(木) 19:57:31
>>633
>unsafe内のコードに問題が無いという前提で。
その前提が"成り立つ事を保障できない"事こそが最大の問題だと思うのだけど
636デフォルトの名無しさん:2009/04/02(木) 20:01:34
インテリセンスではエラー波線でないんですが、
オブジェクト参照がオブジェクト インスタンスに設定されていません。
というエラーが出るのですが、なんでですか?
637デフォルトの名無しさん:2009/04/02(木) 20:02:41
オブジェクトがnullなのにメソッドを呼び出したかなんかしたんだよ
638デフォルトの名無しさん:2009/04/02(木) 20:04:35
宣言時に値は入れてるんですが、起動時の順番が問題で宣言がまだ見つからないってことですか?
639デフォルトの名無しさん:2009/04/02(木) 20:06:40
入れてると思ってるだけで入ってないんだよ
ぬるぽってやつだよ
640デフォルトの名無しさん:2009/04/02(木) 20:07:40
  ∧_∧
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__∧∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>639
641デフォルトの名無しさん:2009/04/02(木) 20:09:10
pub class a
pub int data = 500;

pub class b
pub int data;
pub b(a aa)
{
data = aa.data;
}

でdata = aa.data;でエラーでるんです
642デフォルトの名無しさん:2009/04/02(木) 20:10:40
aaがnullなんだよ
643デフォルトの名無しさん:2009/04/02(木) 20:11:31
>>635
そりゃそうなんだけど、それ以外にもなんかあるのかなーと思ったけど
それ以外ないわな。unsafeは使用禁止とか普通にあるだろし

今回の参照の件とかはそれほど問題にする意味もないのかなと考えてたけど
まぁunsafeなんだし、使わなけりゃ一番問題ないな
644デフォルトの名無しさん:2009/04/02(木) 20:14:19
>>642
ありえないです。class bをaaを渡してnewした時初めてthis.dataに入れようとしますよね
ここでエラーになるってことはaaは入ってるんです
645デフォルトの名無しさん:2009/04/02(木) 20:17:31
ブレークポイント設定してaa.data;のところにカーソルあててみなよ
aaがnullになってるから
646デフォルトの名無しさん:2009/04/02(木) 20:20:49
nullになってました
自信あったのにショックです
ありがとうです
647デフォルトの名無しさん:2009/04/02(木) 20:28:51
エラーが出てるけど、自信があるのでデバッグしません!
648デフォルトの名無しさん:2009/04/02(木) 20:29:49
>>634
ref 使う方法。変態のきわみだ。

delegate void Alias(ref int i);
static void Main() {
  int bbbb_ccccc_ddddd = 0;
  ((Alias) delegate(ref int i) {
    i = 98765;
  })(ref bbbb_ccccc_ddddd);
  Console.WriteLine(bbbb_ccccc_ddddd);
}
649デフォルトの名無しさん:2009/04/02(木) 20:30:21
事前にエラーがわかる静的言語は便利なことがよくわかるよな
特に初心者の人にとっては
650デフォルトの名無しさん:2009/04/02(木) 21:09:57
構造体の初期化はどうかけばいいのでしょうか
Vector3 a = {0.0f, 0.0f, 0.0f};
651デフォルトの名無しさん:2009/04/02(木) 21:12:41
コンストラクタが使えるだろ
652デフォルトの名無しさん:2009/04/02(木) 21:12:52
Vector3 a = new Vector3(0.0f, 0.0f, 0.0f);
653デフォルトの名無しさん:2009/04/02(木) 21:13:05
構造体内にコンストラクタを書いてそこで初期化
654デフォルトの名無しさん:2009/04/02(木) 21:18:52
thx!
655デフォルトの名無しさん:2009/04/02(木) 21:20:18
>>633
部分信頼とかセキュリティ上の理由でunsafeコードを実行させてくれない仕組みに引っ掛かるとか。
656デフォルトの名無しさん:2009/04/02(木) 21:24:22
struct Data {
 int a, b, c, d, e......;
}

class Cupsel {
  Data data;
}
657デフォルトの名無しさん:2009/04/02(木) 21:49:48
>>655
はーなるほど。そういう仕組みがあったのねぇ
セキュリティポリシーによるようだね。通常はローカルだと問題ないのかな
今までなんも考えなかったわ。ありがとう
658デフォルトの名無しさん:2009/04/02(木) 23:01:07
System.Drawing.Graphics g = Graphics.FromImage(backBuffer);
g.Clear(Color.Black);
g.DrawImage((Image)image, new Point());
Graphics.FromHwnd(panel1.Handle).DrawImage((Image)backBuffer, new Point());

WinFormsで、高速に、ちらつかせずに画像表示をさせたいんですが
どうやるのがいいんでしょうか?
描画するまで画面を更新されないようにするやり方がわかりません・・

それと、加算合成とかをするにはDrawImageでは無理そうですがどうすれば。
659デフォルトの名無しさん:2009/04/03(金) 00:02:18
ちらつき防止はコントロールのDoubleBufferedでいけるんじゃないの?
あと、Graphics.FromHwnd(panel1.Handle)よりもpanel1.CreateGraphics()のほうが普通だと思う。
660デフォルトの名無しさん:2009/04/03(金) 00:02:33
>>634
話は戻るが、そこでusingだ。
661デフォルトの名無しさん:2009/04/03(金) 00:05:46
>>618分かる人いませんか?
662デフォルトの名無しさん:2009/04/03(金) 00:26:07
何だろう。よく分からんけど、バージョン違いのアセンブリを参照してるとか?
参照設定はどうなってる?
663デフォルトの名無しさん:2009/04/03(金) 01:02:12
>>660
usingディレクティブの別名は名前空間と型名だけだったと思うが、
質問者は変数の別名が欲しいといってるんじゃないのかな?
664デフォルトの名無しさん:2009/04/03(金) 01:23:36
>>662
DirectX関係で参照してるのは

DirectX
Direct3D
Direct3DX
DirectInput
DirectSound

です
Direct3DXのバージョンは1.0.2911.0で他のものより新しいのを使ってたんですけど
バージョンをそろえてみても同じエラーが出ます
665デフォルトの名無しさん:2009/04/03(金) 02:44:15
>>664
CS0121?
http://msdn.microsoft.com/en-us/library/ky5f1hz8.aspx
どうやらオーバーロードなどをしていて,複数の選択肢が暗黙的な型変換で,動作が決定不能になる時に発せられるらしい.
状況によって変わってくるから,他の部分で名前と名前,型と型がバッティングしていないか確かめてみたら?

あと,なんだか Microsoft.DirectX.Direct3D.FontDescription で検索すると,成功している人が少ない雰囲気.
666デフォルトの名無しさん:2009/04/03(金) 07:06:03
アクセス制限機能つきのアプリを作りたいです。

ユーザ権限やパスワード管理機能つけたいんだけど、
一から作るしかないですか?

.NET Framework 2.0 ならいいライブラリがありそうだけど見つけきれません。。。

667デフォルトの名無しさん:2009/04/03(金) 07:51:41
使ったことないけど、System.Security名前空間から適切な制限を見つけてDemaidメソッド呼び出せばいいんじゃね?
668デフォルトの名無しさん:2009/04/03(金) 10:34:17
System.Windows.Form.WebBrowserをIE8に変更できませんか?
OSのIEは8に更新しました

Vista + VS2008 です
669デフォルトの名無しさん:2009/04/03(金) 10:41:42
>>668
更新した時点でもうなっとるがな。
670デフォルトの名無しさん:2009/04/03(金) 15:13:53
windowsアプリで自動アップデート機能をつけようと思うのですが
Program Files以下のファイルを更新するときは
管理者権限が必要ですよね。
Vistaの場合管理者でログインしても
普通にアプリを実行するとWindowsPrincipalはUserになっちゃいますよね。
右クリックで管理者として実行を行わないと
管理者権限で実行されませんよね。
そのため自動アップデートによるアップデートができないと思うのですが、
世に出回っているVista対応アプリはどうやって対処しているのでしょうか?
671デフォルトの名無しさん:2009/04/03(金) 15:18:24
>>670
UAC の昇格をしてるでしょ。
672668:2009/04/03(金) 15:21:40
>>669さん
確認くんで調べたらIE7のままなんです
673デフォルトの名無しさん:2009/04/03(金) 15:25:11
>>672
その結果を貼り付けてみ。互換モードになってるとかの落ちじゃないよね?
674デフォルトの名無しさん:2009/04/03(金) 15:41:32
IE8 WebBrowser Control で検索したらすぐに答えが出てきたぞ
ttp://blogs.msdn.com/ie/archive/2008/03/18/webbrowser-control-rendering-modes-in-ie8.aspx
675670:2009/04/03(金) 16:08:08
>>671
ユーザが意図的に管理者として実行をして、
昇格をしてもらわないとアップデートできないので、
世に出回ってるアプリはどう対応してるのかということを質問しています。
普通に実行したときはバージョンアップの通知だけで、
通知があったら「管理者として実行」してもらうと言うことになるんでしょうか。
でもそれだとUACを知らない、年配などのライト層は
ずっとバージョンアップできないってことになりますよね。
しかもそれって、自動アップデートではないですよね。
676デフォルトの名無しさん:2009/04/03(金) 16:11:59
>>675
よくわからんけど、セキュリティソフトなんかは予めUAC昇格させる設定を
ユーザーにさせてるんでないの?
都度か一括かの違いで
677デフォルトの名無しさん:2009/04/03(金) 16:17:35
>>675
つか、何言ってんの?

「管理者として実行」しなくても、UAC の昇格を行うことはできるよ。
一般的な方法としては、マニフェストを書いておいて、そのアプリを呼び出す。
新しいバージョンがあるかを確認するアプリと、実際に更新をするアプリに分ける、
って感じだね。

Firefox も、ATOK も HP のプリンタドライバも、そんな感じでやってると
思うけど・・・。
678デフォルトの名無しさん:2009/04/03(金) 16:24:46
Google ChromeがAppData内にインストールされるのは
UACの昇格なしでアップデート可能にする為だって話を聞いたことがある
679デフォルトの名無しさん:2009/04/03(金) 16:25:02
>>677
何言ってんのか分からないのに答えられるってすごいなぁ。
しかも最後、自信なさげなところがなんとも。
680デフォルトの名無しさん:2009/04/03(金) 16:25:20
>>678
そもそも ClickOnce だし。
681デフォルトの名無しさん:2009/04/03(金) 16:27:37
XPユーザーとしてはUACの昇格とかわけわかんないし怖いよ
今はそんなのも気にしなきゃならんのか
682デフォルトの名無しさん:2009/04/03(金) 16:29:51
VistaユーザーだってUACなんか訳わからんよw
Linuxみたいにアクセス権限だけでいいだろって突っ込まれまくりだろ
683デフォルトの名無しさん:2009/04/03(金) 16:32:42
>>679
「UAC 昇格起動」と「修辞的疑問文」でくぐってからまた来てね。
684デフォルトの名無しさん:2009/04/03(金) 16:33:35
全世界の奴がMSに文句つけまくっていじめまくった結果がこれだよ
そして無意味なセキュリティをつけたらフルボッコだよ
685デフォルトの名無しさん:2009/04/03(金) 16:34:51
>>684
× 全世界の奴
○ 狂ったLinuxユーザー
686デフォルトの名無しさん:2009/04/03(金) 16:35:58
なんでLinuxユーザーが文句つけるんだ
687デフォルトの名無しさん:2009/04/03(金) 16:38:37
>>680
ClickOnceって.NETアプリ以外でも使えたのか

ClickOnceと同じ場所を使ってるだけかと思ってたよ
688デフォルトの名無しさん:2009/04/03(金) 16:40:53
>>687
正確には、インストーラとして使ってる、ってとこかと。
そのおかげで、統合認証以外のプロクシを使ってると、インストールすらできないw
689デフォルトの名無しさん:2009/04/03(金) 23:29:47
>>675
Verb を runas にしたら昇格するよ。
アップデータの PE わけて起動させたほうがいいかもしれないけど。
なんとなーく勘違いしてそうなので UAC についてプログラマの視点から
指摘しとくと、昇格ダイアログ出すまではプログラムで可能。
OK ボタン押したら昇格ダイアログ→OK → アップデートってやるんだよ。

あとアップデートに関して言えば、パッチパッケージにすれば明示的な
昇格はいらない(ポリシーにより不可になるし署名が要るけど)。
Program Files 以下でも。実は古くからある機能だが。
実際には、パッチは管理や検証がめんどくさくなるのであまり使われな
いけどな。

>>681
Vista ユーザーからしたら XP の何もなく管理者で動くの不安になる正直
かといって Users で使おうとしたら不便極まりないし。両立できてかなり
いい機能だと思うがなぁ >UAC。リダイレクトとかの機能含めてな。
690デフォルトの名無しさん:2009/04/04(土) 00:26:26
>>665
はい、CS0121です

引数なしのコンストラクタを呼び出しているのに
二つ選択肢があるっていうのがちょっと理解できません・・・
ヘルプのコンパイラ エラー CS0121の使用例は理解できるんですが・・・

エラーは吐いているんですがビルドできるし正常に動作しています
それも理解できないし気持ち悪いです
691デフォルトの名無しさん:2009/04/04(土) 02:14:56
int a=0,b=0,c=0;
int line_count = arrText.Count;
ar_OKPOS = new List<int[]>[line_count];
for (int i = 0; i < ar_OKPOS.Length; i++){
ar_OKPOS[i] = new List<int[]>(new int[][] { new int[2] });
}
foreach (string sOutput in arrText)
{
// 一行ずつ読み込んで,各行をsplitメソッドで分ける
string temp = (string)arrText[a]; // string型にキャスト
string[] temp2 = temp.Split(',');// splitメソッドで文字列アレイにして数える
int col_count = temp2.Length; // 列数を数えているだけ

string[] temp_line = sOutput.Split(',');
for(int i=0;i<temp_line.Length;i++)
{
for(int k=0;k<2;k++){
i = i + k;
ar_OKPOS[a][b][c]=Convert.ToInt32(temp_line[i]);
c++;
}
c = 0;
b++;
}
b = 0;
a++;
}
692デフォルトの名無しさん:2009/04/04(土) 02:24:35
すいません 誤爆してしました
693デフォルトの名無しさん:2009/04/04(土) 08:52:22
デザインパターンとか全然勉強せずにプログラマやってるけど、勉強したほうがいいのかな?
694デフォルトの名無しさん:2009/04/04(土) 08:54:14
デザインパターンはなんかJava臭いよな
C#はオブジェクト指向至上主義じゃないから合わないんじゃない
695デフォルトの名無しさん:2009/04/04(土) 09:52:38
標準のクラスライブラリでも結構それっぽいのはよくでてくるよ
ただjavaと違って、MSはほとんどデザインパターン用語を使わない
696デフォルトの名無しさん:2009/04/04(土) 13:38:17
privateなメンバ変数もprivateなプロパティとして表示させたほうがいいですか?

またメソッドでメンバ変数を利用するときなるべく引数として渡した方がいいですか?
それともメソッド内でいきなり使用しても問題無いですか?

たとえばクラスに以下のようなメソッド等があったとして
private int _num;
public void Method()
 int num = CalcMethod(2);
private int CalcMethod(int num1)
 return num1+_num:
こういう書き方が良いのか
private int _num:
public void Method()
 int num = CalcMethod(2, _num);
private int CalcMethod(int num1. int num2)
 return num1+num2;
こんな書き方のほうがいいのか知りたいです。
例では単なる足し算ですが、複雑な計算をしているという仮定です。
697デフォルトの名無しさん:2009/04/04(土) 13:41:03
演算要素を全て引数で取らせるならstaticにする
698デフォルトの名無しさん:2009/04/04(土) 14:20:05
メソッドを呼び出す側からすれば,メソッド呼び出しはオブジェクトを操作することなので
内部状態を存分に使ってもらって構わない気がする.
699デフォルトの名無しさん:2009/04/04(土) 15:33:03
ありがとう
なるべく引数で渡したほうが、その中で完結するのでわかりやすい気がして
じゃあ、あんまり気にしなくていいってことかな?
700デフォルトの名無しさん:2009/04/04(土) 15:58:22
計算処理のように内部状態に関係なしに定義できるものは、
内部状態非依存(static)の方が単体テストしやすい

まあ、その例くらいの規模なら大して変わらないんだが
701デフォルトの名無しさん:2009/04/04(土) 16:06:09
>>696
むしろそのメソッドを定義したクラスはどんな責任と制約をもってんのよ?
メソッド単体じゃあなんともいえない

>699
時と場合による
プログラミングしやすい分かりやすさもあれば、
利用しやすいわかりやすさもある
702デフォルトの名無しさん:2009/04/04(土) 17:48:14
VC#単体(他から持ってきたライブラリを使わず)で開発したソフトやゲームを
販売する場合、ライセンス等の問題ってありますか?
703デフォルトの名無しさん:2009/04/04(土) 17:59:31
場合による。
704デフォルトの名無しさん:2009/04/04(土) 21:17:48
ミサイル防衛システム作りたいんですがヒントだけでもください
705デフォルトの名無しさん:2009/04/04(土) 21:25:07
MDIで作成した子フォームに含まれるコントロールを取得後、アクセスしたいんですが
foreachでいちいちループ回さないといけない・・・
なんか他にいい方法ないでしょうか?
子フォームはアクティブな状態のものです

if (!(this.ActiveMdiChild as Form == null))

{
foreach (Control Ctrl in (this.ActiveMdiChild as Form).Controls)
{
 if (Ctrl is TextBox /*例としてテキストボックス*/ )
 {
  //処理
 }
}
}
706デフォルトの名無しさん:2009/04/04(土) 21:41:58
全コントロールを対象に処理が必要なら foreach で回さざるを得ないだろ。
特定のコントロールのみを対象にするなら Panel か UserControl に貼り付けて
必要なコントロールへのアクセスを容易にすればいいよ。
707705:2009/04/04(土) 21:54:17
ん〜じゃあ無理か
Panelのリストを管理するとまた手間がかかりますしねえ・・・
どうもありがとうございました
708デフォルトの名無しさん:2009/04/04(土) 22:05:22
動的に作成する場合でもIList<>に入れればいいし、
あらかじめポトペタならコントロールが限られてるから
どちらにしても最低限のループでいけるんじゃないの?
709デフォルトの名無しさん:2009/04/04(土) 22:16:50
Linqでコントロールの種類ごとに連想配列に分配するクエリを作れば?
710デフォルトの名無しさん:2009/04/04(土) 22:29:30
>>702
ないよ
711デフォルトの名無しさん:2009/04/05(日) 00:12:49
Form activeChild = this.ActiveMdiChild as Form;
if (activeChild != null)
{
  activeChild.Controls.Where(c => c is TextBox).ToList<TextBox>().ForEach(t =>
  {
    // 処理
  });
}

かえって煩わしいな。
712デフォルトの名無しさん:2009/04/05(日) 00:29:55
>>711
ん?
実験してみようとしたのだが、インテリセンスにWhere()が表示されないのだがなんでだ?
713デフォルトの名無しさん:2009/04/05(日) 00:42:19
ControlCollectionがIEnumerable<Control>を実装してないからか?
714デフォルトの名無しさん:2009/04/05(日) 00:43:46
だな
気がつかなかった!すげー便利じゃん!と思ったのにorz
715:2009/04/05(日) 00:52:48
今までたくさんのサイトから通報者つのりあと少し
です
こいつは違反出品で昨日二度削除されました
http://auok.auone.jp/_ev?tr=83751566&et=2
空き巣に入られた?以上では‥
薔薇チョコ洋子さんは靴の転売や上履き二回削除されてるのに
今回は長期使用の文を消して書いてます
悪質なので評価欄の誹謗中傷の理由で通報お願いします

http://auok.auone.jp/item/item_189662269.html?u=4682520
わいせつ物

http://auok.auone.jp/item/item_189667641.html?u=4682520
わいせつ物
三箇所違反ですのでよろしくお願いします
716デフォルトの名無しさん:2009/04/05(日) 02:53:12
this.ActiveMdiChild.Controls.Cast<Control>().Where()とか?
717デフォルトの名無しさん:2009/04/05(日) 03:03:10
クラス内の自動プロパティを初期化したいのですがコンストラクタ内でするしかないのでしょうか?
例えば
public string Name{get;set;}
というものがあって、Nameは始めはnullですが、""に初期化しておきたいのです。
フィールドでしたら
private string Name = "";
と出来ます。
プロパティの量だけコンストラクタにも初期化する量が増えてしまうのでフィールドのように出来れば一度に初期化したいのですが方法はあるのでしょうか?
718デフォルトの名無しさん:2009/04/05(日) 03:03:27
>708 がベストだろ
719デフォルトの名無しさん:2009/04/05(日) 03:10:31
クラスを継承したときに基本クラスのメソッドにコードを追加するように書くにはわかりました。
720デフォルトの名無しさん:2009/04/05(日) 09:26:10
>>717
ありません
自動プロパティの使用をやめるか普通にコンストラクタで初期化してください
721デフォルトの名無しさん:2009/04/05(日) 09:52:29
>>717
リフレクションでstring型のプロパティを一括初期化できなくもないがバグの元だな
722デフォルトの名無しさん:2009/04/05(日) 09:58:22
そのためのオブジェクト初期化子なんだろうか
723デフォルトの名無しさん:2009/04/05(日) 09:59:50
ヘジさんが自動プロパティに必死で抵抗してたのは直接初期化できないからなのかな
724デフォルトの名無しさん:2009/04/05(日) 10:12:36
自動プロパティって、文法的にインターフェースでの宣言と一緒なのがちょっと気になるっちゃ気になる。

int Method();

とだけ書いたらメソッドの中身ができちゃうようなもんだからなぁ。
パッと見同じだけど全然意味の違うものってのは、
ミスの原因だし、読むときの混乱招くから。
725デフォルトの名無しさん:2009/04/05(日) 10:12:47
コンストラクタで初期化するくらいなら、
タイピング量的に自動プロパティである必要がぜんぜんないな
726デフォルトの名無しさん:2009/04/05(日) 10:14:42
もう、自動プロパティを自動で普通のプロパティに展開するユーティリティを使えばいいよ
727デフォルトの名無しさん:2009/04/05(日) 10:22:42
private string _test;
public string Test { get _test; set _test; }

こういう糖衣構文を可能にするだけでよかったんだよ
728デフォルトの名無しさん:2009/04/05(日) 10:26:55
糖衣構文といいたいだけのやつ増えすぎ
729デフォルトの名無しさん:2009/04/05(日) 10:29:42
構文糖を可能にするだけでよかったんだよ
730デフォルトの名無しさん:2009/04/05(日) 10:30:46
public property string Test = "";

でいいんじゃないの

public readonly property string Test = "";

とか
731デフォルトの名無しさん:2009/04/05(日) 10:36:05
public string Test { get GetTest(); set SetTest(value); }
も可能そうだな
732デフォルトの名無しさん:2009/04/05(日) 10:41:00
>>731
それは意味がわからない。普通にかけばいいだろ
public string Test { get { return GetTest(); } set { SetTest(value); } }
733デフォルトの名無しさん:2009/04/05(日) 10:41:50
インターフェイスにプロパティを宣言するときの書き方と合わせたかったんだろ
美学ってやつなんだろう
734デフォルトの名無しさん:2009/04/05(日) 10:48:09
たとえ美学でも、読み取り専用にするprivate set;はせっかくの省力構文を台無しにしているな
public string Test { get; }
これで何がまずいのだろう
735デフォルトの名無しさん:2009/04/05(日) 10:48:47
event の構文が

event DelegateType Variable;
event DelegateType Variable { add { ...] remove { ...} }

なのを考えると、

property VarType Variable;
property VarType Variable { set { ... } get { ...} }

がよかった気もするなぁ。
736デフォルトの名無しさん:2009/04/05(日) 10:50:10
>>732
楽になるじゃん
それに変数とメソッドを同時に書くこともある
public string Test { get GetTest(); set _test; }
737デフォルトの名無しさん:2009/04/05(日) 10:52:33
property Name: string read FName write FName;
もうこれでいいよ
738デフォルトの名無しさん:2009/04/05(日) 10:54:11
>>735
それいいよね
読み取り専用プロパティは
readonly property VarType Variable;
にすればいいし
739デフォルトの名無しさん:2009/04/05(日) 11:03:07
>>734
初期化も何もできないじゃん
740デフォルトの名無しさん:2009/04/05(日) 11:26:12
>>739
private set;と書いたことにする
741デフォルトの名無しさん:2009/04/05(日) 11:44:34
それなら>>735スタイルにしてgetも書かないようにしないとおかしい
アクセサを宣言する意味でgetやsetを書いてるのに
742デフォルトの名無しさん:2009/04/05(日) 13:04:59
>>740
( ゚д゚ )
743デフォルトの名無しさん:2009/04/05(日) 15:08:15
アクセス修飾子をpublicとprivateだけと思ってる奴が多いようだな
744デフォルトの名無しさん:2009/04/05(日) 16:25:18
そんな奴いないだろw
もともとはプロパティのアクセサにアクセスレベルは指定できなかったんだよ
public get; protected set;みたいなのはそもそも想定されてなかった
だから別に>>735の形になっててもおかしくはない
745デフォルトの名無しさん:2009/04/05(日) 18:13:05
addとremoveが必須なeventとgetとsetは片方あればいいプロパティじゃ初めから条件が違うな
746デフォルトの名無しさん:2009/04/05(日) 18:55:27
話の流れを全部理解しているわけじゃないが、
そういうシンメトリックかどうかって話じゃないだろうw

素直に(VB方式ともいう)propertyってキーワードを導入しておいた方が
可読性の観点からは好ましかったんじゃないかって話なんじゃないの?
747デフォルトの名無しさん:2009/04/05(日) 22:23:51
でもevent 型 名前;と型 名前 { get; set; }じゃ差がありすぎるからなあ
イベントを理解する上でプロパティとの類似性はかなり重要なのに
構文上全然違う種類のものになっちゃってるのはさすがに
748デフォルトの名無しさん:2009/04/05(日) 22:43:42
そういや、結構いろんな言語に精通してる同僚が最近 C# 触り始めたんだけど、
event 知らずに普通にデリゲート型のプロパティ使ってたなぁ。
749デフォルトの名無しさん:2009/04/05(日) 22:51:16
イベントって機能がデリゲートで実現されていることを知らずにイベントを
使ってるって話ならありそうだが、デリゲート押さえてるのにイベント知らない、
なんてこと普通はありえん気がするけどね。
750デフォルトの名無しさん:2009/04/05(日) 22:55:20
eventって別に必要ない機能だろ
751デフォルトの名無しさん:2009/04/05(日) 22:58:49
javaなんかでよく出てくるgetHoge, setHogeパターンを言語に組み込んだのがプロパティ
同様にaddHogeListener, removeHogeListenerパターンを言語に組み込んだのがイベント
752デフォルトの名無しさん:2009/04/05(日) 23:29:37
言語に組み込む組み込まないの話ではないだろ
753デフォルトの名無しさん:2009/04/05(日) 23:49:33
>>749
「デリゲートはイベント処理用のもの」って認識だとそうなんだけど、
「関数ポインタの便利版」って認識だと、
関数ポインタのプロパティでイベントハンドラ取ればいいやってなってもおかしくないかと。
754デフォルトの名無しさん:2009/04/05(日) 23:56:59
もしプロパティを使うならデリゲートのコレクションを返すべきだろ
button.ClickEventHandlers.Add(new EventHandler(button_Click));
これなら意味的には同じ
755754:2009/04/05(日) 23:59:32
外からの要素へのアクセスはできないようにしないといけないよもちろん
マルチキャストでいいだろと突っ込まれそうだから一応
756デフォルトの名無しさん:2009/04/06(月) 00:00:30
Formsのコントロールの初期化をデザイナーで作っているところなんだが、
ツールバーのボタンが横に並んだ1つづりのPNGファイルを
ImageListを使って切り出して使おうとしているのだがうまくいかない。

System.Windows.Forms.ImageList il = new System.Windows.Forms.ImageList();
il.TransparentColor = System.Drawing.Color.Transparent;
il.ImageSize = new System.Drawing.Size(24, 24);
il.Images.AddStrip(Resources.tool);

こんな風に書いてデザイナーに読ませると、AddStrip()が認識できずに落ちてしまうようだ。
仕方がないのでpartialされたForm本体側で追加で初期化してるんだが、当然ながらデザイナーではプレビューできない。
画像の切り出し、切り出したチップをそれぞれのコントロールで使用したいんだがどうしたらいいだろうか。
757デフォルトの名無しさん:2009/04/06(月) 00:10:38
>>748
eventをつけた場合とつけない場合は何が違うのですか?
public event EventHandler Unko;
public EventHandler Unko
758デフォルトの名無しさん:2009/04/06(月) 00:13:42
>>757
ググれかす
見た目としては、eventだと外から行える操作がデリゲートの追加と削除だけになる。
759デフォルトの名無しさん:2009/04/06(月) 00:17:51
>>757
Unkoの硬さが違ってくる
760デフォルトの名無しさん:2009/04/06(月) 00:23:11
>>758-759
ありがとう。
何となく分かったよ
Unkoの硬さが+=と-=だけになるってことですね
761デフォルトの名無しさん:2009/04/06(月) 00:28:52
>>756
デザイナで設定するのは無理なんじゃないの
とりあえずImageListプロパティだけ設定して,Tagプロパティにインデックスを入れといて
後でコードから舐めてImageIndexプロパティに設定し直すとか
762デフォルトの名無しさん:2009/04/06(月) 01:04:40
>>761
ありがとう。「無理」という返事を聞いてある意味安心した。

どうせデザイナーで作る部分はある程度静的な割付になるので、わざわざTagに入れてループをまわさなくても、
ImageList.Images プロパティをControl.Image に直接代入していくだけで十分だね。
763デフォルトの名無しさん:2009/04/06(月) 01:22:48
>>762
ImageList継承して"ImageStrip"のようなプロパティを追加するとか、
あるいは最初から目的のイメージを持たせちゃうとかすれば出来る気もする。

っていうか、なんでわざわざそんなC#向きでない作り方をするんだろう。
なんでも道具にあった作り方ってあると思うんだけど。
764デフォルトの名無しさん:2009/04/06(月) 01:24:20
あーImageListってシールされてるのか。。
765デフォルトの名無しさん:2009/04/06(月) 01:59:32
String型がシールされてる上にIStringのようなインターフェイスもないってどういうこと?
String型に限らずやたらシールされると拡張できなくて異常に不便
766デフォルトの名無しさん:2009/04/06(月) 02:02:16
C#の入門誌のオススメ教えて
767デフォルトの名無しさん:2009/04/06(月) 02:04:16
C#に入門書は必要ない
ぐぐれば腐るほどでてくるからな・・・
強いて言えば逆引き系のものがいいよ
768デフォルトの名無しさん:2009/04/06(月) 02:04:39
継承は最低の方法だってみんな分かって来てるじゃない
それはともかくStringはIEnumerable<char>として扱うと便利だよ
769デフォルトの名無しさん:2009/04/06(月) 03:31:43
>>763
コントロールで使う画像の処理をImageListに任せるのは、
Win32SDK時代から続く古式ゆかしいお作法なんだ。
770デフォルトの名無しさん:2009/04/06(月) 08:32:28
> それはともかくStringはIEnumerable<char>として扱うと便利だよ
これは気づかなかった。ありがとう
771デフォルトの名無しさん:2009/04/06(月) 09:03:50
デザイナーいるとかうらやましいなおい・・・・
772デフォルトの名無しさん:2009/04/06(月) 09:26:25
>>765
恥ずかしいレスだなおいw
773デフォルトの名無しさん:2009/04/06(月) 09:31:03
>>771
それはボケなのか……?
774デフォルトの名無しさん:2009/04/06(月) 10:42:32
Stringがsealedなのはimmutableにするため
変更できない方が扱いやすいから
775デフォルトの名無しさん:2009/04/06(月) 17:54:34
扱いやすいっていうか、継承を禁止しないとイミュータブルであることを保証できない。
776デフォルトの名無しさん:2009/04/06(月) 18:04:25
なんとなくだが、>>774
"stringはimmutableであった方が扱いやすい"
と言いたかったのではないかと思う。
777デフォルトの名無しさん:2009/04/06(月) 21:19:49
>>766
洋書なら色々あるけど、邦訳版が出てないのが多い・・・。
778デフォルトの名無しさん:2009/04/07(火) 02:18:55
C#って検索数がいまいちなんだよね。
なんで?
779デフォルトの名無しさん:2009/04/07(火) 02:34:22
>>778
記号とか入いってるとかは検索エンジン的にマイナスな気がする。
あと、なんだかんだいって後発だしね。
それと、一般名詞そのまま使ってるrubyとかと比べりゃそりゃ少なくなる。
780デフォルトの名無しさん:2009/04/07(火) 03:42:38
思いつくままに検索してみた。言うほど少なくは無いようだが

php の検索結果 約 9,700,000,000 件
javascript の検索結果 約 680,000,000 件
vb の検索結果 約 657,000,000 件
java の検索結果 約 377,000,000 件
scheme の検索結果 約 107,000,000 件
ruby の検索結果 約 102,000,000 件
c++ の検索結果 約 101,000,000 件
perl の検索結果 約 88,000,000 件
c# の検索結果 約 63,900,000 件
python の検索結果 約 62,300,000 件
delphi の検索結果 約 49,500,000 件
lisp の検索結果 約 8,290,000 件
fortran の検索結果 約 7,720,000 件
cobol の検索結果 約 6,530,000 件
c++/cli の検索結果 約 4,680,000 件
781デフォルトの名無しさん:2009/04/07(火) 03:54:22
>>780
ごめんそれ違う。

漏れが言ったのは、グーグルトレンドの方。
782デフォルトの名無しさん:2009/04/07(火) 04:47:38
>>780
発想は面白いよ発想は
783sage:2009/04/07(火) 13:13:32
vb.net の private shared は C# でいうとなんですか?
private partial ? private protected?
784デフォルトの名無しさん:2009/04/07(火) 13:17:51
private static
785デフォルトの名無しさん:2009/04/07(火) 13:19:16
thx!
786デフォルトの名無しさん:2009/04/07(火) 14:11:03
VB.netの存在意義がわからない
初心者向けならジェネリックやLinqの拡張をすべきではないと思うんだが・・・
787デフォルトの名無しさん:2009/04/07(火) 14:12:59
VB.NETはVBプログラマ用の隔離病棟もしくはオブジェクト指向リハビリ施設
788デフォルトの名無しさん:2009/04/07(火) 14:13:04
>>786
それは、貴方の考えた存在意義と違うってだけでしょう。
789デフォルトの名無しさん:2009/04/07(火) 18:15:55
C#>VBってのはC#でオブジェクト指向を勉強した奴がやけに言いたがるようだけど
他から見たらチェイサーとクレスタ
790デフォルトの名無しさん:2009/04/07(火) 18:24:42
そりゃ.NETがベースにあるからだろ
791デフォルトの名無しさん:2009/04/07(火) 18:28:30
.NETのWebBrowserコンポーネントで
RichTextBoxのSelectionColorプロパティみたいに、文字列をドラッグしたときの選択色を変える方法ありませんか?
792デフォルトの名無しさん:2009/04/08(水) 05:02:52
Microsoft Visual C++ Express Edition
このコンパイラで一度「デバッグ無しで開始」でコンパイル成功するとソースを書き換えてもプログラムが変わらないようです
今までは少しソースを書き換えようと思ったら新規作成で新しいソース作ってコピペを繰り返してたんですがいい加減ソースの管理がキツいです
誰か助けてください
793デフォルトの名無しさん:2009/04/08(水) 05:09:03
バイト代は出ますか?
794デフォルトの名無しさん:2009/04/08(水) 05:14:13
>>792
全ては君の勘違い
795デフォルトの名無しさん:2009/04/08(水) 06:02:20
>>792
『Microsoft Visual C# Express Edition』で開発していると仮定しての話だが、(スレタイ読めよ!)
確かにVC++と違って C#の開発のときはアプリの実行ボタンでビルドが更新されないことがあるようだ。
しかし、コンパイルないしビルドボタンを押せば問題ないはず。
デバッグ無しで開始 や デバッグ実行 のボタンとは別にあるぞ。
796デフォルトの名無しさん:2009/04/08(水) 09:47:57
>>792
リビルドしてみた?
797デフォルトの名無しさん:2009/04/08(水) 09:53:21
むしろ自動ビルドしてるならクリーンアップ?で
さもなくばexploreでファイル削除
798デフォルトの名無しさん:2009/04/08(水) 15:22:07
.net のプログラムを C#に書き換えています。
.net におけるshadow(オーバーライドの一種で引数も返り値も変更可能なもの)
はC#だとどういう風にトランスレートすればいいんですかね?
799デフォルトの名無しさん:2009/04/08(水) 15:26:15
.net のプログラムってなに?VB?
800デフォルトの名無しさん:2009/04/08(水) 15:27:01
もちろんC#
801デフォルトの名無しさん:2009/04/08(水) 15:27:15
隠蔽のnew
802デフォルトの名無しさん:2009/04/08(水) 15:30:02
vb.netっす
803デフォルトの名無しさん:2009/04/08(水) 15:32:06
VBではoverridesとshadowが別なのが良くわかんないね。
overridesがほぼC#のnewと同じ。
shadowとまったく同じものはなかったかと。
804デフォルトの名無しさん:2009/04/08(水) 15:35:20
それでは Public Shadow Property X は
public new override X
{get return ...みたいな感じで書けばいいってことですか?
805デフォルトの名無しさん:2009/04/08(水) 15:36:43
ああちがうか、そもそもoverrideとoverridesのちがいがわかってませんでした。
勉強してきます。
806デフォルトの名無しさん:2009/04/08(水) 15:43:35
WebBrowserのDocumentで、mshtmlを経由してiframeの中身にアクセスしようとするとUnauthorizedAccessExceptionになるのですが、
これを回避するにはどうすればいいのでしょうか。
807デフォルトの名無しさん:2009/04/08(水) 18:51:30
public class Bar
inherits Foo
  overrides sub f()
  end sub
  shadows sub g()
  end sub
  overloads sub h()
  end sub
end class
をリフレクションで調べるとこういう違いがあるようだべさ。

public class Bar : Ansi,Auto
    extends public class Foo : Ansi,Auto
        public virtual Void f()
        public Void g()
        public Void h(),HideBySig
        public constructor Void .ctor(),SpecialName

C#の場合全部のメソッドにHideBySigが付いてるんだよね。
808デフォルトの名無しさん:2009/04/08(水) 19:28:38
すみません。馬鹿な質問いいですか?

フォームにラベルがいくつかありまして、それぞれ
lbl001
lbl002
lbl003
という名前になっています。

で引数に001とか002を渡すと通し番号の一致するラベルのテキストを""に変えるメソッドを
作りたいのですが、どうしたら良いのでしょうか?

解りにくい文章ですみませんが、お願いします。

809808:2009/04/08(水) 19:30:47
private void hoge(string number)
{
lbl+number.text="";
}
という感じなのですが・・・
810デフォルトの名無しさん:2009/04/08(水) 19:36:25
public void ClearLabel(string labelName)
 Control control = this.Controls.Find(labelName, false)[0].Text = "";

thisはForm
811デフォルトの名無しさん:2009/04/08(水) 19:39:39
ああ、最初の変数宣言はイラネ

public void ClearLabel(string labelName)
 Control control = this.Controls.Find(labelName, false)[0];
 control.Text = "";

または

public void ClearLabel(string labelName)
 this.Controls.Find(labelName, false)[0].Text = "";
812デフォルトの名無しさん:2009/04/08(水) 19:42:38
public void Func(int number)
{
string name = "lbl" + number.ToString("000");
foreach (FieldInfo info in this.GetFields())
{
if (name == info.Name)
{
Label label = (Label)info.GetValue(this);
label.Text = "";
}
}
}
813デフォルトの名無しさん:2009/04/08(水) 19:43:55
ラベルを配列に入れりゃいいんじゃないの
814デフォルトの名無しさん:2009/04/08(水) 19:46:45
>>808
そういうことをするならラベルをコレクションで管理しとけ
リフレクションを使うのはあくまで応急処置

最初からコレクションで生成してもいいし、どうしてもデザイナを使いたいなら以下のようにする
var labels = new List<Label>();
labels.Add(lbl001);
labels.Add(lbl002);
labels.Add(lbl003);
815808:2009/04/08(水) 19:58:30
みなさまありがとうございました!
>>811
public void ClearLabel(string labelName)
 this.Controls.Find(labelName, false)[0].Text = "";

この場合labelNameは"002"とかでもlbl002を見つけてくれるのでしょうか?

>>812
なるほど。僕でも判る解りやすいコードですね

>>814
おっしゃる通りです。以降気をつけます
816デフォルトの名無しさん:2009/04/08(水) 20:21:07
>>815
見つけてくれないからlabelNameを自分で作成すれ
817808:2009/04/08(水) 21:27:47
>>816
ありがとうございました!

僕はデザイナでしかコントロールを置いたことがないので
名前の重複がありうるなんて知りませんでした。

なので名前のわかっているコントロールを探すなんてナンセンスな感じを
うけましたが、自分が無知だっただけでした!
818デフォルトの名無しさん:2009/04/08(水) 21:49:25
何も解かってないことが解かった
819デフォルトの名無しさん:2009/04/08(水) 21:54:33
>>817が何を言ってるのかまるでわからない・・・
820デフォルトの名無しさん:2009/04/08(水) 21:56:19
なんとなく理解できる俺もほ乳類を名乗って問題無いのか・・・
821デフォルトの名無しさん:2009/04/08(水) 23:41:34
>819
多分Nameプロパティとフィールド参照名をごっちゃにしてるんだろ。
>817
参照名はスコープ内で重複しないけど、コントロールごとに設定できるNameプロパティの値は重複可能。
デザイナーは勝手に「Name = 参照名」に設定してるから一意に見えるだけ。自前でNameを設定してなければ、
int num = 2;
Label label = this.Controls[ "lbl" + num.ToString("000")] as Label;
if( label != null ) { 処理 } else { エラー処理とか }
自前のコードでNameを設定してて同じNameの奴が重複してたら、最初に追加されたやつ(普通はデザイナーが作った方)が返ってくる。
どうしてもフィールド名のほうでアクセスする必要がある場合は、>812みたいにリフレクションを使う。
でもクラス内で完結することに使うことはまずない。
822デフォルトの名無しさん:2009/04/09(木) 00:09:57
Regexクラスを使った正規表現って
交差演算子「&&」は使えませんよね?
823デフォルトの名無しさん:2009/04/09(木) 00:12:33
古語でも可也
824デフォルトの名無しさん:2009/04/09(木) 00:18:44
>>822
MSDN読め。
825デフォルトの名無しさん:2009/04/09(木) 14:34:43
ClickOnce使ってアプリを更新させようとしていますが、次回の更新の際に
更新をチェックしに行く先を変更したいんですが、可能でしょうか?
可能であれば、MSDNでも構わないので情報を頂けませんか?
826デフォルトの名無しさん:2009/04/09(木) 14:57:20
ClickOnce関連は、
ttp://www.atmarkit.co.jp/fdotnet/clickonce/index/index.html
ttp://msdn.microsoft.com/ja-jp/library/dd350113.aspx
かね。
「配置プロバイダを設定および変更する」
をみるとmageUI.exeかmage.EXE使ってできるみたいだけど、
オンライン実行のみの場合は無理だね。
827デフォルトの名無しさん:2009/04/09(木) 16:25:23
>>826
情報サンクスです。
GUIを使って変えられそうなので少し安心しました。

しかし・・ClickOnceでやるのと自前でHTTP通信でWEBからDLさせるのと
どっちがいいんだろ・・・・

828デフォルトの名無しさん:2009/04/09(木) 17:37:03
自前に決まっとる
中途半端なフレームワークは使い物にならんと偉い人も言ってるしな
829デフォルトの名無しさん:2009/04/09(木) 19:09:18
>>828
一概に決め付けるのはよくない。

従来の配布形態とClickOnceは、ネイティブアプリと.NETアプリくらい異なるので、
自分の作ってるものがどうあるべきかというレベルからよく比較検討すべきだと思う。
830デフォルトの名無しさん:2009/04/09(木) 20:44:16
Form1 の textBox の内容を
別の class A のメソッドからアクセスするにはどうすればいいのでしょうか?

class A に Form1 を継承すればいいのかなと思ったんですが Form しか継承できませんでした
831デフォルトの名無しさん:2009/04/09(木) 20:47:18
内容を公開するプロパティを作れ
832デフォルトの名無しさん:2009/04/09(木) 21:57:07
プロパティの modifiers のことでしょうか?
それはとりあえず public にしています。
継承は Form1のnamespace.Form1で出来たのですが以下のようにしてもテキスト内容が出ませんでした

public class classA : test.Form1
{
private int CreateD01()
{
MessageBox.Show("textBox1.Text");
}
}

デバックで見てみましたが、classA の中では textBox1 の中身が空っぽでした。
Form1で同じメッセージBOXを出すときちんと表示されます
833デフォルトの名無しさん:2009/04/09(木) 22:21:08
継承は関係ない
Formを↓のようにしておけば参照介して読み取れるでしょ

public partial class Form1 : Form
{
public string MessageText { get { return textBox1.Text; } }
834デフォルトの名無しさん:2009/04/09(木) 22:21:43
>>832につきあっても時間の無駄だと思った
835デフォルトの名無しさん:2009/04/09(木) 22:22:32
>class A に Form1 を継承すればいいのかなと思ったんですが Form しか継承できませんでした

クラスとインスタンスの違いが理解できていないよーな
836デフォルトの名無しさん:2009/04/09(木) 22:53:21
C#って生産性はいいけど、変なとこで設計が糞だな。
delegateみたいにすっきりした構文があるわりに、
structや純粋な多次元配列のせいで初学者殺しになってるよ。
そんな詰まらないところでパフォーマンスを稼いでどうするよ。
837デフォルトの名無しさん:2009/04/09(木) 22:57:42
別に初学者向けに作ってねーもん。いやまじで。
それにプリミティブの型どうするよ。某言語みたいに固定に
するよかだいぶましだと思うぞ。
838デフォルトの名無しさん:2009/04/09(木) 23:02:56
C#はお前が作ったのか?
839デフォルトの名無しさん:2009/04/09(木) 23:03:03
C#は他の言語からの移行者向けの言語だよどっちかというと
840デフォルトの名無しさん:2009/04/09(木) 23:06:02
>>838
作った(作ってる)ように見えないとかそういう意味だ。すまんな。
841デフォルトの名無しさん:2009/04/09(木) 23:08:32
移行してきました
なかなか使いやすいです
842デフォルトの名無しさん:2009/04/09(木) 23:32:42
こんにちわかーにはんです
843デフォルトの名無しさん:2009/04/09(木) 23:49:53
値型は無いと困るな。リアルタイムゲームを作る時に採用する
開発プラットフォームとしてJavaとの差はデカイ。

多次元配列はむしろジャグ配列より性能落ちるんだが
そういやあれなんのためにあるんだ?
844デフォルトの名無しさん:2009/04/10(金) 00:08:29
[10000][1]みたいに宣言した時のメモリ消費量の削減と、直列化の保証かな。
性能の劣化はよく分からんが、ジャグ配列ってのがダイレクトアクセスするのに対して、
多次元配列はfoo[2,3]としたとき、内部で3*2とか演算してるとかはありそう。
845832:2009/04/10(金) 00:11:51
>>833
分割するだけで良かったんですね、 partial で無事に出来ました
ありがとうございます

>>834
不愉快な思いをさせてしまい申し訳ありません

>>835
オブジェクト指向はC#で初めて触れるもので、未だにその場その場で進めてる感じです
また復習します
846デフォルトの名無しさん:2009/04/10(金) 00:49:19
C++と同じようにやるとスマートに書けないね。
C#とGCの流儀に合わせるといい感じだが、なかなかC++のクセが抜けない。
847デフォルトの名無しさん:2009/04/10(金) 00:54:20
自分でソースをいじれるものにpertialつかうってどうなんだろう
ポトペタなんかで拡張が楽になるから
そんなこと気にせずばんばん使ったほうがいいのかね
848デフォルトの名無しさん:2009/04/10(金) 00:56:53
デストラクタがC++風に機能しないからってIDisposeを持ち出したり、
structをclassみたいに使えるようにNullableを持ち出したりと、後付が酷い言語だなとは思う。
849デフォルトの名無しさん:2009/04/10(金) 00:59:30
>>847
partialは#regionで仕分けがおっつかないなら、どんどん使って良いと思うよ。
巨大クラス主義の強い味方だ。
850デフォルトの名無しさん:2009/04/10(金) 01:18:25
>>844
ilに一次元配列専用の命令があるんだけど、
一次元配列を繋ぎあわせたものであるジャグ配列のほうが最適化が効くらしい
851デフォルトの名無しさん:2009/04/10(金) 01:25:34
C#って、なんかinterfaceが軽視されてる気がするのは気のせいだろうか。
分かりやすいところでいくと、List<T>にあってIList<T>にないメソッドがゴロゴロあったりとかする辺りとか
852デフォルトの名無しさん:2009/04/10(金) 01:28:25
こまけぇこたぁいいんだよ(ry
853デフォルトの名無しさん:2009/04/10(金) 01:48:30
>>851
今はIEnumerable<T>がメソッド全部持っていったので問題ない
854デフォルトの名無しさん:2009/04/10(金) 01:58:16
>>853
AddRangeが・・・欲しいです・・・。
Concatしろってことなのだろうか。


あと、AsyncResultにキャストしないとAsyncDelegateが参照できない件とか。
855デフォルトの名無しさん:2009/04/10(金) 02:06:07
C#はあれだな、ハードウェア特性に目を向けすぎ。
抽象化に失敗したオブジェクト指向はC++だけで十分なのに。
856デフォルトの名無しさん:2009/04/10(金) 02:11:12
一行目と二行目が全く繋がらない件
857デフォルトの名無しさん:2009/04/10(金) 02:13:44
ずっとborlandでdelphiを拡張していったほうがよかったのにな
.NETよりVCLのほうが遙かに優秀なライブラリだし
858デフォルトの名無しさん:2009/04/10(金) 02:26:05
http://msdn.microsoft.com/ja-jp/library/ms182142.aspx

なぜ外部公開用のコレクションを、interfaceじゃなくわざわざ具象型に
キャストさせるのが「合法」なんだっていう
859デフォルトの名無しさん:2009/04/10(金) 02:26:59
interfaceっていう仕組みもオブジェクト指向っていう枠組みも
そんなにいいものではないからね
860デフォルトの名無しさん:2009/04/10(金) 02:28:05
フィールドで、頭に「_」が付くものと、付かないものの違いがわかりません。
ご教授下さいまし。
861デフォルトの名無しさん:2009/04/10(金) 02:28:22
まあC++ほどめちゃくちゃにならないで、javaみたいに制限きつすぎない
そんな心地良い言語ってことで勘弁してやってくれ
862デフォルトの名無しさん:2009/04/10(金) 02:29:38
>>858
なぜキャストさせると思ったのかがわからない
863デフォルトの名無しさん:2009/04/10(金) 02:32:17
>>859
詳しく。

>>862
MS推奨のコーディング規約らしい。
864デフォルトの名無しさん:2009/04/10(金) 02:39:25
>>863
ダックタイピングの隆盛を見りゃ分かるじゃん
事前に静的にinterfaceを決定して変更しないなんてのは
将来的には確実に破綻する
865デフォルトの名無しさん:2009/04/10(金) 02:46:11
そりゃパラダイムの違い
interfaceを決定して変更しないのはポリシーの違い
将来的に破綻するかどうかは運用の違い
866デフォルトの名無しさん:2009/04/10(金) 02:51:16
>>863
普通はキャストさせるんじゃなくて
Collection<T>を継承して
継承したクラスを公開するよ

キャストを推奨してるんじゃなく
List<T>を公開しないことを推奨してるだけ
867デフォルトの名無しさん:2009/04/10(金) 02:58:12
ジェネリックプログラミングは、Java、C#界隈の最新のトピックのひとつなんだから、制限あって当然。
ましてやパフォーマンス重視の実装というんだから。
868デフォルトの名無しさん:2009/04/10(金) 03:02:34
interfaceは互換性が重視される言語の基本ライブラリに採用するには
リスクが大きすぎる技術だって話だよ
C#は別にinterface大好き、オブジェクト指向大好きというほど非現実的なことを考えてなかったので
interfaceは最小限しか使ってないってことだと思う
869デフォルトの名無しさん:2009/04/10(金) 03:18:36
こ、こうほうごかん・・・じょ、じょういご・・かん?
どれだ?
870デフォルトの名無しさん:2009/04/10(金) 03:27:36
inetrfaceがなければ無いで糞言語と言うし
interfaceがあればあったでinterfaceのおかげで基本ライブラリの継承関係が希薄になってるって言うんだろ?
871デフォルトの名無しさん:2009/04/10(金) 03:28:51
>>869
過去に書かれたプログラムは動かなきゃいかんだろ
Side by Sideでバイナリはなんとかなるにしても
ソースレベルの互換性は出来る限り保たなきゃならん
872デフォルトの名無しさん:2009/04/10(金) 03:47:55
>>871
それって別にinterfaceもduck typeも関係ないとおも
そんで、むかーしのプログラムが動くのとソースレベルの互換性は
そもそも対象のユーザが違うんじゃね?

でもぼくは機能の継承じゃなく性質の継承が好きだけどね!遅いが
873デフォルトの名無しさん:2009/04/10(金) 03:55:45
>>872
IEnumerable無印のGetEnumeratorは邪魔だから捨てちゃおうと捨てたとしても
duck typeならほぼ動くじゃん
C#だとものすごい量書き直しだろ
874デフォルトの名無しさん:2009/04/10(金) 07:47:48
>>873
シチュエーションが分からないけど、それはduck typeでも大混乱になるんじゃない。
表面上動いているように見えても、提供している機能の意図が丸ごと変わったら問題は起きるだろう。
極め付きに静的チェックをしないことで、実際に表面化するまで問題に気づきにくい。
875デフォルトの名無しさん:2009/04/10(金) 08:18:52
GetEnumerator って組み込みの duck type みたいなものなんだ
よなぁとふと思った。
876デフォルトの名無しさん:2009/04/10(金) 10:51:50
>>860
メンバ変数とローカル変数を区別するために使う
thisをつけるから_はいらないという人もいる
好みの問題
877デフォルトの名無しさん:2009/04/10(金) 11:11:35
>>873
IEnumerableからGetEnumeratorを消して、duck typeなら"ほぼ"動くっていうのが考えられない
"ほぼ"動くけど、ちゃんと動かすにはduck typeでもものすごい量の書き直しが必要なのは変わらない
例がナンセンス

878デフォルトの名無しさん:2009/04/10(金) 11:55:39
テキストにデータを保存して、そのデータを集計するのに便利なテクノロジってありますか?
classに格納したデータをxmlで保存してLinqで集計するとか、
CSVで記録して集計するとかしかないのかな。
879デフォルトの名無しさん:2009/04/10(金) 12:50:36
まずそれらのナニが不満なのか挙げろよ
880デフォルトの名無しさん:2009/04/10(金) 13:01:26
IE8でMSDN見るとき言語フィルタでC#とXAML以外チェック外してるんだけど
VBだけ外しても外しても毎回チェックされる。
俺だけかな。
881デフォルトの名無しさん:2009/04/10(金) 13:04:43
オフラインのMSDN使えば?
882デフォルトの名無しさん:2009/04/10(金) 13:12:11
>>879
他に便利な方法がないかなと思って
883デフォルトの名無しさん:2009/04/10(金) 13:24:30
>>882
集計したいのか保存したいのかわからない
884デフォルトの名無しさん:2009/04/10(金) 13:24:55
>>876
自分でもそういう理解しかしていなかったんですけど
同じ(ように見える)プライベートフィールドで、アンダースコア付きと無しを
混在させているコードを見て、使い分けの基準がよくわからなかったもので
一般的にもそういう基準で使い分けがなされているのかと勝手に思ってました。
ありがとうございました。
885デフォルトの名無しさん:2009/04/10(金) 14:01:27
フィールドにfooがあって、コンストラクタで初期化する時、
引数をfooにして
this.foo=foo;
と書くか、それとも引数を_fooにして
foo=_foo
にするかみたいな逡巡は良くするけれど、プライベートフィールドの方に_をつける
習慣ってのは始めて知った。自動プロパティ登場以前の、プロパティと対応する
プライベートフィールドの区別って役割もあるのかな。
886デフォルトの名無しさん:2009/04/10(金) 14:06:42
フィールドって普通プライベートじゃね?
ってかそれ引数じゃなくね?
887デフォルトの名無しさん:2009/04/10(金) 14:06:58
外部から見えるところである仮引数名にアンダースコアとかつけちゃなんねぇ
とMicrosoftの.NETガイドライン
888デフォルトの名無しさん:2009/04/10(金) 14:10:53
>>885
>プロパティと対応するプライベートフィールドの区別って
たぶんそれですね
889デフォルトの名無しさん:2009/04/10(金) 14:15:22
ガイドラインに従ってる限り、そもそも区別する必要ないんじゃ?
890デフォルトの名無しさん:2009/04/10(金) 14:44:30
プロパティ経由しないでフィールドに直接アクセスすることもなくはないから…とかなのかなぁ
891デフォルトの名無しさん:2009/04/10(金) 15:09:07
892デフォルトの名無しさん:2009/04/10(金) 15:30:45
たしかに、パブリックなプロパティとそれがラップするプライベート
なフィールドとは、先頭が大文字か小文字で区別されるから、
つまりプライベートのプロパティでプライベートのフィールドを
ラップする場合にだけ名前の衝突を避けるためにアンダースコア
が必要になるのかな。

でも、プライベートなプロパティって普通使う?
893デフォルトの名無しさん:2009/04/10(金) 15:33:47
普段は使わないがまれに使う
[Flags]な列挙体フィールドとIsHogeなbool型プロパティみたいなのとかで
894デフォルトの名無しさん:2009/04/10(金) 16:36:46
>>892
>プライベートのプロパティでプライベートのフィールドをラップする場合

その時は、何と何の名前が衝突するんだ
895デフォルトの名無しさん:2009/04/10(金) 17:08:51
読み取り専用プロパティだったらフィールドに直接触ることもあるから
…だと直接触らない為にアンダースコア付ける意味はないか
896デフォルトの名無しさん:2009/04/10(金) 17:44:07
C#の言語仕様には,付録としてフィールドはアンダースコア無しで先頭小文字を推奨
という記述があった気がする
でもMSがC#で書いたほとんどのコードはアンダーバー+先頭小文字スタイルだったりする
897デフォルトの名無しさん:2009/04/10(金) 17:59:16
目の前の変数がメンバ変数か確認する数秒間が鬱陶しいからアンダーバーはつけてるなぁ
好みの問題だけど、つけたからって困ることはないんだし

MSはMFC時代のm_を使ってる人もいるよねw
898デフォルトの名無しさん:2009/04/10(金) 18:14:29
付けといた方がインテリセンスが使いやすいんだよな
VS2003のころはthis.でインテリセンス出してたから要らなかったけど
899デフォルトの名無しさん:2009/04/10(金) 19:32:15
_を先頭に付けるのは内部関数時代からの流儀だよな。
_openとか__openとか、隠してるよってのを明示的に表現してる。
かといってフィールド変数に _ は無いと思う。
900デフォルトの名無しさん:2009/04/10(金) 19:35:08
そういえば前のプロジェクトで
プリフィクスじゃ無くサフィクスとしてアンダースコアつけてた人がいたが
アレって本人的には判別しやすいんだろうか
901デフォルトの名無しさん:2009/04/10(金) 19:36:27
C++時代はm_が嫌ならサフィックスにつけるしかなかった
902デフォルトの名無しさん:2009/04/10(金) 19:39:44
ActionScript (Flash) がサフィックスだったような気がした。
最後の_を打った瞬間にインテリセンス(的なもの)が動いてたな。
903デフォルトの名無しさん:2009/04/10(金) 20:40:13
上のほうにあったpartialについて質問なのですが、
Visual StudioにてFormなどを追加すると、

- Form1.cs
  Form1.Designer.cs
  Form1.resx

などのようにグループ化?して表示されますが、
Form1のpartialクラスを新規作成しても、グループアイテムにはならないように思うのですが、
グループ化して表示するような設定とか命名規則とかってあったりしますか?
904デフォルトの名無しさん:2009/04/10(金) 20:44:43
そこら辺はVisual Studioのプロジェクトファイルの仕様だからなぁ。
プロジェクトファイルを見るとそういう構造を作る表現が確認できる。
Visual Studioでカスタム階層を作る操作があれば俺も知りたいな。
905デフォルトの名無しさん:2009/04/10(金) 20:58:49
あれはアイテム属性に DependentUpon だっけかな。
まぁ直接 .csproj みるとか MSBuild あたりのドキュメント
あたって
906903:2009/04/10(金) 21:16:54
.csproj 内にある、

<Compile Include="UserInterfaces\Form1.HogeHoge.cs">
<SubType>Form</SubType>

の部分を、

<Compile Include="UserInterfaces\Form1.HogeHoge.cs">
<DependentUpon>Form1.cs</DependentUpon>

のように書き換えた所、見事にグループのアイテムのように表示されました。

どうもありがとうございました。
907デフォルトの名無しさん:2009/04/10(金) 21:29:40
VS2008でソリューションのプロパティのビルドをリリースにしてもbin\Debugフォルダにexeが作成されるんですがこれは正常ですか?
どうすればリリース状態でexeが作成されたことが確かめられるんでしょうか
908デフォルトの名無しさん:2009/04/10(金) 21:36:22
Releaseビルドの出力先がbin\Releaseになってないとかじゃなくて?
909デフォルトの名無しさん:2009/04/10(金) 21:39:51
>>908
Releaseになっています
だけどいま確かめてみたら、Releaseにしてプロパティページを閉じて、再び表示させるとまたDebugに戻ってる・・・
なんでだ・・
910デフォルトの名無しさん:2009/04/10(金) 21:41:46
アクティブ構成の変更は緑の再生マークの右側だよ?
911デフォルトの名無しさん:2009/04/10(金) 21:50:58
すいません緑の再生マークとは「デバッグ開始」の右向き三角マークですか?
その横にはブラウザで表示またはすべて中止のボタンしかないです・・・
912デフォルトの名無しさん:2009/04/10(金) 21:54:41
Express Edition?
913デフォルトの名無しさん:2009/04/10(金) 22:29:52
いえProfessionalです
おかしいななんでだろう
914デフォルトの名無しさん:2009/04/10(金) 22:42:02
IDEを閉じて.slnファイルを直接テキストエディタで見てみな。
きっと何か分かるはず
915デフォルトの名無しさん:2009/04/11(土) 05:38:10
FormにTextBoxを貼り付けただけで切り取りやコピーや貼り付けなどの右クリックのコンテキストメニューが出てきますが
RichTextBoxの場合は右クリックしてもデフォで用意されているコンテキストメニューが出てきません
これは自前でContextMenuStripを記述するしかないのでしょうか?
それともどこか設定があるのでしょうか?
環境は2008EEのSP1です
916デフォルトの名無しさん:2009/04/11(土) 05:58:39
ないね
917デフォルトの名無しさん:2009/04/11(土) 15:10:50
WindowsNT系OSでないと実行できないメソッドをWIndow9xで実行したときなど、
サポート外の環境であることを示す例外って、NotSupportedExceptionでいいんでしょうか。
918デフォルトの名無しさん:2009/04/11(土) 15:12:37
PlatformNotSupportedException じゃね?
919917:2009/04/11(土) 15:42:16
>>918
ああ、まさにそれですね。ありがとうございます。
920デフォルトの名無しさん:2009/04/11(土) 15:51:59
>>916
ないのですか
自力でやりくりしてみます
ありがとうございました
921デフォルトの名無しさん:2009/04/11(土) 18:34:18
thisってできるだけ付けたほうがいいですか?
どっちでもいいところではどういう基準で付ければいいんでしょうか
922デフォルトの名無しさん:2009/04/11(土) 18:51:13
付けられるところでは常に
923デフォルトの名無しさん:2009/04/11(土) 18:58:28
つけるならすべてつける
つけないならすべてつけない

中途半端にされたら読む人が混乱する
924デフォルトの名無しさん:2009/04/11(土) 19:03:55
thisの有無で何か違いはありますか?
実行がはやくなるかもしれないとか
コンパイルがはやくなるかもしれないとか
925デフォルトの名無しさん:2009/04/11(土) 19:08:23
あるわけない
926デフォルトの名無しさん:2009/04/11(土) 19:09:46
だがビルドが数千分の1秒ぐらい早くなりそうな気がする
927デフォルトの名無しさん:2009/04/11(土) 20:57:41
this は必ず付け、static の場合も クラス名も省略しない事にしてる。
スコープの明示化により、処理の影響範囲が把握し易くなる点がメリット。
C# では、C++ のようにメソッド ( 関数 ) に const 修飾子を付けて immutable
である事を明示できないから、副作用が発生しそうな箇所の目印として重宝する。
this, this, ..., this みたいな処理があれば、そこは遠目にも危険地帯である事が分かる。
記述の冗長性がデメリットだが、個人的にはメリットの方が大きいと思う。
928デフォルトの名無しさん:2009/04/11(土) 21:36:01
>>927
言ってる意味がようわからんし、それはたぶん確実に俺だけでもなければ
俺の知識や理解力の不足のためじゃないと思う。
929デフォルトの名無しさん:2009/04/11(土) 21:40:27
つまりプリフィックスが最強
930デフォルトの名無しさん:2009/04/11(土) 21:49:31
>>927
this. はその後のインテリセンス利かせるために常に付けてる。

でも、static メンバーの場合、同じ記法で親クラスのメンバー呼べないのがちょっと残念だから使ってないわ。
931デフォルトの名無しさん:2009/04/11(土) 21:57:06
VS2005以降はいきなりインテリセンスが利くからいらん
932デフォルトの名無しさん:2009/04/11(土) 22:39:11
何かいまさら聞けない質問感があるんだけど、ポトペタって何の略語?
933デフォルトの名無しさん:2009/04/11(土) 22:40:14
ぽっとりぺたっと
934デフォルトの名無しさん:2009/04/11(土) 22:46:40
略語じゃなくて擬態語。
935デフォルトの名無しさん:2009/04/11(土) 22:48:36
えっ、つまり、

ぽとっ、ぺたっ

ってこと?コピペみたいな略語かと思っていた・・・
936デフォルトの名無しさん:2009/04/11(土) 22:51:27
そうそう「ぽとっぺたっぬるぽっ」ってこと
937デフォルトの名無しさん:2009/04/11(土) 23:16:14
>>936
ぽとっぺたっガッっ
938デフォルトの名無しさん:2009/04/12(日) 00:01:36
継承って派生コントロール作るときしか使ったことないんですが
どんな使い道があるんですか?
939デフォルトの名無しさん:2009/04/12(日) 00:05:22
そういう使い道
940デフォルトの名無しさん:2009/04/12(日) 00:24:48
.NET用に正規表現をチェックするソフトを作ってみた
いろいろ簡単に作成できるな面白い
941デフォルトの名無しさん:2009/04/12(日) 00:30:03
それ5年くらい前にどっかで拾った事があるな
942デフォルトの名無しさん:2009/04/12(日) 00:31:09
数行書けば終わりじゃねそれ
943デフォルトの名無しさん:2009/04/12(日) 00:31:16
そんな(´・ω・`)
944デフォルトの名無しさん:2009/04/12(日) 00:34:28
数行どころか・・・
十数行だけどねw
945デフォルトの名無しさん:2009/04/12(日) 00:46:52
それ俺も作ったことあるw
946デフォルトの名無しさん:2009/04/12(日) 00:53:18
正規表現をチェックってどんなの?
正しい文法になってるか確かめるってこと?
947デフォルトの名無しさん:2009/04/12(日) 00:53:39
過去に作った奴をリビルドしてみた(`・ω・´)シャキーン 3.5以上

ttp://hp.vector.co.jp/authors/VA038417/RegExChecker.zip
948デフォルトの名無しさん:2009/04/12(日) 00:56:11
new Regex(...)で例外をキャッチすれば……
949デフォルトの名無しさん:2009/04/12(日) 01:02:25
テキストと正規表現入力して出力結果だすだけじゃないの?
いや、そんなわけないよな
950デフォルトの名無しさん:2009/04/12(日) 01:03:47
そういう単純なプログラムから始まるのさ。
おまえらだってそうだったろ?
951デフォルトの名無しさん:2009/04/12(日) 01:05:33
お前等いい加減寝たらどうだ。
おれはもう練るぜ
952デフォルトの名無しさん:2009/04/12(日) 01:10:02
俺が初めて作ったプログラムは、三角形の面積を計算するものだった。
953デフォルトの名無しさん:2009/04/12(日) 01:38:23
正規表現チェックならMSのサンプルにあったな
954デフォルトの名無しさん:2009/04/12(日) 02:25:56
別にライブラリ化するようなほどじゃないと思うが、
俺も自作アプリのUtilitiesの中に正規表現をboolで返すstaticメソッドを用意してるぞ。
いちいち例外返されたらかなわんからな。
955デフォルトの名無しさん:2009/04/12(日) 04:43:08
exeからソースが見れないようにする方法は無いでしょうか?
956デフォルトの名無しさん:2009/04/12(日) 04:47:13
test
957デフォルトの名無しさん:2009/04/12(日) 04:47:20
無いです
958デフォルトの名無しさん:2009/04/12(日) 04:48:08
>>955
「100%見れないように」というのは無理。
悪あがきするなら難読化ツール使う。
Dotfuscator とか。
959デフォルトの名無しさん:2009/04/12(日) 04:52:57
商用の難読化ツール使えば
まともに読む気を萎えさせるコードにしてくれるのは確か
960デフォルトの名無しさん:2009/04/12(日) 04:56:56
ありがとうございます
助かりました
961デフォルトの名無しさん:2009/04/12(日) 12:17:55
class testA{
public string str;
public testB bInstance;
public testA(string s)
{
str = s;
}
}
class testB{
public string str;
public testA aInstance;
public testB(string s)
{
str = s;
}
}
class Program {
static void Main(string[] args)
{
testA a = new testA("A");
testB b = new testB("B");
a.bInstance = b;
b.aInstance = a;
Console.WriteLine(a.bInstance.str);
Console.WriteLine(b.aInstance.str);
}
}

循環参照ってC#ではいいんですか?
とりあえずコンパイルは通って期待通りの動きをしているっぽいですが。
962デフォルトの名無しさん:2009/04/12(日) 12:23:00
いまどき循環参照できない言語なんてあるか?
963デフォルトの名無しさん:2009/04/12(日) 12:27:31
いやどっかでC#だとコンパイルエラーになるとか見た気がしたんで。
循環参照は設計として間違ってるという思想から、とかなんとかいう理由で。
964デフォルトの名無しさん:2009/04/12(日) 12:32:20
そりゃアセンブリの循環参照だな
965デフォルトの名無しさん:2009/04/12(日) 13:49:18
設計としては間違っているとまでは言えないが、良くないことは確かだ。
966デフォルトの名無しさん:2009/04/12(日) 14:01:33
循環参照なんかイベントハンドラ使っただけでできるよ
>>962みたいな相互依存とはまた別の話だけど
967966:2009/04/12(日) 14:04:16
×962
>>961
968デフォルトの名無しさん:2009/04/12(日) 14:06:49
>>963
実行時循環参照を検出できるコンパイラがあったら一度お目にかかりたいわ
969デフォルトの名無しさん:2009/04/12(日) 15:50:33
>>963
ジェネリクス関係とか型関係とかではなくて?
970デフォルトの名無しさん:2009/04/12(日) 16:04:49
コントロールについてなんですが
ContextMenuStripはShowImageMarginプロパティをfalseに設定することで
左側のスペースを消すことができますよね
そのItemの一つからドロップダウンで表示されるToolStripMenuItemも
同じようにして左側のスペースを消したいのですが
ToolStripMenuItemにはそのプロパティがないのでできずにいます。
何か方法はないでしょうか?お願いします。
971デフォルトの名無しさん:2009/04/12(日) 16:08:17
すみません。自己解決いたしました。スレ汚し失礼しました。
972970:2009/04/12(日) 16:10:04
971=970です。
973デフォルトの名無しさん:2009/04/12(日) 16:13:09
980踏む奴は要注意
974デフォルトの名無しさん:2009/04/12(日) 17:46:47
>>961
そもそも、それって循環参照か?
975デフォルトの名無しさん:2009/04/12(日) 18:11:02
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
Hoge hoge = new Hoge(webBrowser1);
}
}

public class Hoge {
WebBrowser browser;
public Hoge(WebBrowser browser){
this.browser = browser;
browser.Navigate("http://hogehoge.com");
MessageBox.Show(browser.DocumentText);
}
}

このときNavigateはできるのに
browser.DocumentTextが取得できません。
どうすればDocumentTextを取得できるんでしょうか
976デフォルトの名無しさん:2009/04/12(日) 18:26:46
DocumentCompletedまで待て
977デフォルトの名無しさん:2009/04/12(日) 18:31:11
>>975
browser.Navigate("http://hogehoge/");
browser.DocumentCompleted += delegate(object sender, WebBrowserDocumentCompletedEventArgs e) { MessageBox.Show(browser.DocumentText); };
978デフォルトの名無しさん:2009/04/12(日) 18:51:16
>>976-977
できました。ありがとうございます
オブジェクトの参照?とかそういう類の問題だと思っていました。
979デフォルトの名無しさん:2009/04/12(日) 19:31:38
ちゃんと、MSDN を読みましょうとかそういう類の問題だろ
980デフォルトの名無しさん:2009/04/12(日) 23:28:37
UserAgentからブラウザとかを判別するクラス作ってるんだが超マンドクセ
どっかにライブラリで落ちてないかな
981デフォルトの名無しさん:2009/04/12(日) 23:51:00
googleソースコード検索
982デフォルトの名無しさん:2009/04/13(月) 00:31:03
983デフォルトの名無しさん:2009/04/13(月) 01:19:22
ローカルのHTMLをwebBrowserで表示するまではできたのですが
その中のJavaScriptを実行するのがうまくいきません
ttp://msdn.microsoft.com/ja-jp/library/be9zzz62.aspx
のサンプルで試しているのですが
String str = doc.InvokeScript("test").ToString() ;
のところで「オブジェクト参照がオブジェクト インスタンスに設定されていません」のエラーが出ます

サンプルで書かれてない部分にJavaScriptの関数を関連付けか何かをしている部分があると思うのですが
どういう処理を行えばいいのでしょうか?
984デフォルトの名無しさん:2009/04/13(月) 01:35:43
エラー出なかったよ
985デフォルトの名無しさん:2009/04/13(月) 01:51:16
また読み込み終了前にアクセス→docがnull
ってオチ
986デフォルトの名無しさん:2009/04/13(月) 02:01:43
nullでないかチェックしてるからそれはなかろう
private void InvokeScript()
{
if (webBrowser1.Document != null)
{
HtmlDocument doc = webBrowser1.Document;
String str = doc.InvokeScript("test").ToString() ;
Object jscriptObj = doc.InvokeScript("testJScriptObject");
Object domOb = doc.InvokeScript("testElement");
}
}
987デフォルトの名無しさん:2009/04/13(月) 03:48:25
http://msdn.microsoft.com/ja-jp/library/a3zbdb1t(VS.80).aspx

>userState RunWorkerAsync に渡される状態オブジェクト。

これの意味がよくわかんない
refでも無いのに渡されるって何が?どこに?
988デフォルトの名無しさん:2009/04/13(月) 03:56:46
まーた誤訳か、と思ったら英語版でも間違えてんじゃん…。

ProgressChangedイベントのProgressChangedEventArgs..UserStateの間違い。
989デフォルトの名無しさん:2009/04/13(月) 04:23:20
どうも〜
990デフォルトの名無しさん:2009/04/13(月) 05:50:20
ClickOnce試してみたが、これいいな。
とりあえず、自分の小物ツールをzip版とClickOnce版で両方公開することにした。
991デフォルトの名無しさん:2009/04/13(月) 05:59:45
992983:2009/04/13(月) 10:00:34
空のプロジェクトにサンプルのみ貼り付けて最初からやり直した所うまくいきました
お騒がせして申し訳ありませんでした
993デフォルトの名無しさん:2009/04/13(月) 14:03:27
ファイルパスがあり、そのパスのファイルが存在するかを調べたいのですが、
大文字・小文字の違いがあってもFile.Exists()ではtrueが返されてしまいます。
大文字小文字を区別してチェックする方法を教えてください。
994デフォルトの名無しさん:2009/04/13(月) 14:06:39
>>993
試しにデスクトップにa.txtというテキストファイルと、A.txtというテキストファイルを作成してみそ
995デフォルトの名無しさん:2009/04/13(月) 14:06:46
Windows上であれば正しいんじゃねえのか?

ファイルシステムで大文字と小文字の区別無いだろ
996デフォルトの名無しさん:2009/04/13(月) 14:06:56
そのファイルシステムが大文字小文字の区別をしないのであれば
そのやり方だけじゃ区別できないだろうね。
trueが返ってきたらあらためて文字列比較しては?
997デフォルトの名無しさん:2009/04/13(月) 14:06:59
パスに大文字小文字の区別はつけられんのだが
998デフォルトの名無しさん:2009/04/13(月) 14:07:42
次たててくる
999デフォルトの名無しさん:2009/04/13(月) 14:08:10
>>998
1000デフォルトの名無しさん:2009/04/13(月) 14:08:59
ふらっとC#,C♯,C#(初心者用) Part40
http://pc12.2ch.net/test/read.cgi/tech/1239599317/
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。