5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

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

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

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

前スレ
ふらっとC#,C♯,C#(初心者用) Part53
http://pc12.2ch.net/test/read.cgi/tech/1263093575/

関連スレ
C#, C♯, C#相談室 Part55(実質56)
http://pc12.2ch.net/test/read.cgi/tech/1260111240/

WPF(XAML, XBAP, .Net3.5)GUIプログラミング Part5
http://pc12.2ch.net/test/read.cgi/tech/1261879110/

2 :デフォルトの名無しさん:2010/01/23(土) 17:44:53
参考サイト

http://www.google.co.jp/
http://msdn.microsoft.com/ja-jp/library/default.aspx
http://homepage3.nifty.com/midori_no_bike/CS/
http://www.atmarkit.co.jp/fdotnet/dotnettips/index/index.html
http://dobon.net/vb/dotnet/
http://jeanne.wankuma.com/tips/
http://www.labasp.net/CsharpNote/

3 :デフォルトの名無しさん:2010/01/23(土) 18:03:11
スレ立て乙

4 :デフォルトの名無しさん:2010/01/23(土) 18:52:19
もう新スレか。C#って人気が高いんだね

5 :デフォルトの名無しさん:2010/01/23(土) 19:18:23
よくも悪くも裾野広がったなとは思う。


6 :デフォルトの名無しさん:2010/01/23(土) 19:38:46
裾野が広がれば天才も出てきて俺の立場が危うくなるから
なるべく広がらないで欲しい

7 :デフォルトの名無しさん:2010/01/23(土) 21:27:37
でも、仕事はあんまりないな
スレ立て乙

8 :デフォルトの名無しさん:2010/01/23(土) 21:30:06
c#で作ってるらしい
http://uproda.2ch-library.com/207482XS8/lib207482.png

9 :デフォルトの名無しさん:2010/01/23(土) 21:30:33
まぁ環境が実質Windowsのみだから広がりには限界があるだろうけど

10 :デフォルトの名無しさん:2010/01/23(土) 21:31:01
>>8
なにこれ?

11 :デフォルトの名無しさん:2010/01/23(土) 21:33:04
>>10
PC用のフリック入力キーボードらしい
もうフリック動作はできててキー情報飛ばすだけとか

12 :デフォルトの名無しさん:2010/01/23(土) 21:33:06
>>5
前スレの消費スピードは糞レスに因るところ

13 :デフォルトの名無しさん:2010/01/23(土) 21:53:04
わざわざ紹介してくれなくてもC#製のフリーソフトって今は結構沢山あるよ

14 :デフォルトの名無しさん:2010/01/23(土) 22:13:31
C#は逆コンパイルできちゃうのがなぁ

15 :デフォルトの名無しさん:2010/01/23(土) 22:16:20
>>14
案件数No1のJava様に喧嘩売ってるのかお前

16 :デフォルトの名無しさん:2010/01/23(土) 22:17:45
業務はともかく,Java製フリーソフトは.NETとは比べ物にならないくらい嫌われるよな

17 :デフォルトの名無しさん:2010/01/23(土) 22:20:06
仕事は別にいいじゃん
納品するんだし

特定企業へ納品じゃないタイプのソフトは開発しやすいけど
解読もされやすいからなあ

18 :デフォルトの名無しさん:2010/01/23(土) 22:21:39
JavaVMがWindowsに標準で入ってりゃもう少しマシだろうがな…

Vista以降は.NET2.0が標準で入ってるせいか風当たりが弱くなって良かった

19 :デフォルトの名無しさん:2010/01/23(土) 22:22:36
解読されたくなかったらC++しかないってことですか結局

20 :デフォルトの名無しさん:2010/01/23(土) 22:23:47
アセンブラで書こうが何十にもパッキングしようが、する奴はする
電子データにしないのが一番だ

21 :デフォルトの名無しさん:2010/01/23(土) 22:24:36
Flashの広まり見ると標準で入ってるの入ってないのはあんまり関係ないんじゃない

22 :デフォルトの名無しさん:2010/01/23(土) 22:24:46
>>19
程度問題だが、それだって可能。C++用の難読化ツールもあるぜよ。

23 :デフォルトの名無しさん:2010/01/23(土) 22:25:16
WindowsにはFlash Playerが標準で入ってるけどな。

24 :デフォルトの名無しさん:2010/01/23(土) 22:26:37
>>21
別のフリーソフト探そうって気にはなるけど
別のフラッシュ探そうって気にはならないでしょ
代替がないし

25 :デフォルトの名無しさん:2010/01/23(土) 22:28:08
なんか納得

26 :デフォルトの名無しさん:2010/01/23(土) 22:28:45
>>12
糞レス乙

27 :デフォルトの名無しさん:2010/01/23(土) 22:30:02
Silverlightの時代がくるけどね

28 :デフォルトの名無しさん:2010/01/23(土) 22:31:17
ないない

29 :デフォルトの名無しさん:2010/01/23(土) 22:32:09
あり得ない。

30 :デフォルトの名無しさん:2010/01/23(土) 22:34:42
>>22
知らんかった…そうなのか
関係ないがプロじゃない俺にはココは本当に勉強になる
たまにおかしな人もいるけど、まあそんな人も含めてホントありがとう
日曜くらいはゆっくり体休めてつかぁさい

31 :デフォルトの名無しさん:2010/01/23(土) 22:36:20
まーでも、程度問題だけどな。
アセンブリは読めなくても、C#のコードは読める、ってやつは多いし。

32 :デフォルトの名無しさん:2010/01/23(土) 22:39:34
>>30
ゆっくり休むことにするよ。ブリブリッ。

33 :デフォルトの名無しさん:2010/01/23(土) 22:40:23
アセンブラ読めないやつはプログラマとして認められないだろ

34 :デフォルトの名無しさん:2010/01/23(土) 22:40:26
C#は変数名まで元通りでほんとに書いたソースそっくりに復元できてしまう。


35 :デフォルトの名無しさん:2010/01/23(土) 22:42:52
ローカル変数名は消える(PDBファイルに含まれている)
フィールド名が残るのはJavaも同じ

36 :デフォルトの名無しさん:2010/01/23(土) 22:43:19
つまりaとかbとか変な名前を使って
gotoを多用すればいい

37 :デフォルトの名無しさん:2010/01/23(土) 22:43:25
このスレ的にはIL読めれば十分

38 :デフォルトの名無しさん:2010/01/23(土) 22:44:40
ILいらない笑

39 :デフォルトの名無しさん:2010/01/23(土) 22:45:03
MFCが読める奴はキチガイ

40 :デフォルトの名無しさん:2010/01/23(土) 22:45:12
>>34
昔作った自分のプログラムのソースなくて実行ファイルから復元したら
本当にそっくりだった

41 :デフォルトの名無しさん:2010/01/23(土) 23:09:17
とりあえず難読化できるやつ使えば解読しようとする人は少なくなるだろ

42 :デフォルトの名無しさん:2010/01/23(土) 23:10:11
お前のなんか見ても時間の無駄じゃ

43 :デフォルトの名無しさん:2010/01/23(土) 23:12:10
いつか見た流れw

44 :デフォルトの名無しさん:2010/01/23(土) 23:13:12
解読する価値のあるソースってどのくらいあんのかな。

45 :デフォルトの名無しさん:2010/01/23(土) 23:13:55
飯食う難読化ツールと呼ばれてます

46 :デフォルトの名無しさん:2010/01/23(土) 23:14:29
解読するより自分で作ったほうが20秒早い

47 :デフォルトの名無しさん:2010/01/23(土) 23:16:06
余程画期的なコードなのだろう

48 :デフォルトの名無しさん:2010/01/23(土) 23:16:15
>>44
価値はどこで発生するかわからんしなあ

JaneStyleのようにオプソだったのがいきなり法人で面倒みるとかあるし


49 :デフォルトの名無しさん:2010/01/23(土) 23:18:54
JaneStyleはオープンソースじゃない
オープンソースなのはJaneStyleの前身であるOpenJaneの話
そこからの派生は基本的に全て非公開

JaneStyleは元々●の収入が大きくなってきたから法人に移行したのだろうと言われている
その際NidaとViewの作者を抱き込もうとして失敗した

50 :デフォルトの名無しさん:2010/01/23(土) 23:21:02
まあそんなあっと驚くようなアルゴリズムなんてそうそう発見出来ないよね

51 :デフォルトの名無しさん:2010/01/23(土) 23:25:48
あっと驚くようなアルゴリズムが出来たらさっさと公開してあっと驚くような使い方してもらって
こっちを楽しませて欲しいわな

52 :デフォルトの名無しさん:2010/01/23(土) 23:27:30
法人に移行した方が得する収入って一体…

53 :デフォルトの名無しさん:2010/01/23(土) 23:41:05
C#だと
int* a,b,c;
ってやるとbもcもint*型になるんだな。

C言語だと
int *a, *b, *c;
とか全部に*必要でクソ面倒だったがC#は楽だな。

54 :デフォルトの名無しさん:2010/01/23(土) 23:48:06
まあ釣りなんだろうが、C#は
int a, *b, c[5];
ってのはできんだろうし、そもそもunsafeブロックの中だけの話を持ち出してもしょうがなかろ

55 :デフォルトの名無しさん:2010/01/23(土) 23:49:31
むしろ「どうせポインタなんかめったに使わないんだからどうでもいいよね」
って文法が複雑になるのを嫌った結果なんじゃないかと

56 :デフォルトの名無しさん:2010/01/23(土) 23:51:11
>>53
むしろCの宣言がおかしい
面倒とかそういうのじゃなくて

int型とint*型を同時に宣言とか・・・


57 :デフォルトの名無しさん:2010/01/24(日) 00:04:11
int[] とかの系譜だろ。Javaに倣ったんだと思うよ。

58 :デフォルトの名無しさん:2010/01/24(日) 00:08:56
でもc言語だと

int x[5];でできた配列が
C#だと
int[] x=new int[5];
とか、new int[5]とか余計なものついてて面倒だな
一番最初にint[]っていってるんだからつぎにまたint[5]っていわなくても
int[]x =new[5]でいいじゃんw

59 :デフォルトの名無しさん:2010/01/24(日) 00:12:08
つ var x = new int [5];


60 :デフォルトの名無しさん:2010/01/24(日) 00:13:32
>>58
int[] x

これはいわゆるポインタだからなあ



61 :デフォルトの名無しさん:2010/01/24(日) 00:16:41
厳密にいえばハンドルだけどね。どっちでもいいけど。

62 :デフォルトの名無しさん:2010/01/24(日) 00:20:55
まあねレイヤーはさんでるからそうなるけど
なんでnewしないといけないかというとCでいうところのポインターのような扱いということで

63 :デフォルトの名無しさん:2010/01/24(日) 00:25:07
int* x = mallocと
int* x = (int*)malloc
の違いみたいなもんか。

確かに後者のようにかくのは文法的に間違いじゃないがしつこいものは嫌われるな。
C++だと(int*)ってかかないとエラーになるようになってて気持ち悪いけど。

64 :デフォルトの名無しさん:2010/01/24(日) 00:27:47
>>63
cのころもアセンブラレベルで考えると配列もたぶんポインター管理になってると思うよ
最近はおじゃましてないC/C++スレで定期的にこれで盛り上がるから(未定義と含めてw



65 :デフォルトの名無しさん:2010/01/24(日) 00:27:57
C#の配列は参照型。
stackallocのような変なのは置いといて。


66 :デフォルトの名無しさん:2010/01/24(日) 00:34:22
面倒な構文だな
class Personがあったとして

Person p,q,r=new Person();
だとp,qはnewならないのか。
いちいちq=new Person(),q=new〜〜
と書かないといけないなんて不便だね。

67 :デフォルトの名無しさん:2010/01/24(日) 00:37:04
そのプログラマー(というかギーク、アセンブラで最短クロックで書かないときがすまないような)
寄りな不便な・・・を優先した結果がC特有のわかりにくさだと思うよ。

68 :デフォルトの名無しさん:2010/01/24(日) 00:38:33
第一クラス使えば
init関数通して、初期化して、処理終わったらメモリ開放して・・・と
あれこれめんどくさいことから開放されてるのにトレードオフだよ

69 :デフォルトの名無しさん:2010/01/24(日) 00:39:05
多分適当に作ったらいつの間にか標準化されてたんだろ

70 :デフォルトの名無しさん:2010/01/24(日) 00:39:38
もっと楽したいです・・・

71 :デフォルトの名無しさん:2010/01/24(日) 00:42:48
66みたいな構文で勝手に初期化される方がたまらん
p,qだけ空参照にするとき分けて書く方がめんどい

72 :デフォルトの名無しさん:2010/01/24(日) 00:43:00
>>69
そうともいうかも
アセンブラバリバリにやってたやつらが
こうすればいいんじゃね?で積み重ねた結果だと思うw
*とか->とか見てるともうね



73 :デフォルトの名無しさん:2010/01/24(日) 00:53:26
p->q->r->

74 :デフォルトの名無しさん:2010/01/24(日) 00:58:10
え?

75 :デフォルトの名無しさん:2010/01/24(日) 00:59:11
:-)

76 :デフォルトの名無しさん:2010/01/24(日) 01:04:09
>>69
ですおね。

77 :デフォルトの名無しさん:2010/01/24(日) 02:03:39
x,yがint型のとき

object.Equals(x,y)

x==y
は同じものですか?

78 :デフォルトの名無しさん:2010/01/24(日) 02:11:15
最終的な結果や意味的には大体同じ。ただし見た目も違うし
生成されるコードも違う。
object.Equals(x,y) はできるだけやめとけ。無駄が多い。

79 :デフォルトの名無しさん:2010/01/24(日) 02:35:14
>>77
うん。

80 :デフォルトの名無しさん:2010/01/24(日) 02:56:11
参照について教えてください。
String str = new String();
str = "hello";
XXX xxx = new XXX;
xxx.EatThis(ref str);

class XXX{
 public XXX(){}
 public void EatThis(ref String s){ m_str = s;}
 private String m_str;
}

の場合、
「"hello"って文字列はXXXの中のm_strにコピーされる」の?
それとも
「メモリ上の実体は呼び出し側のstr(スタック上?)にあって、
そいつに対しての内部的なポインタ的なものがxxx.m_strに保持される。
且つ、実体の方は、実は参照カウントを持っていて参照カウントが+1されている。
だから仮にstrにnullをセットしても、xxx.m_strからの参照分のカウントが残ってるのでガベージされない。」なの?

COMオブジェクトとかも考えると、後者だと信じたい。
でも実際はどうなのですか?

81 :デフォルトの名無しさん:2010/01/24(日) 03:06:46
後者だけどマークアンドスイープなので参照カウントはしてない

82 :デフォルトの名無しさん:2010/01/24(日) 03:32:37
ポリモーフィズムってなんのためにあるんだろうな。
同じ名前なのにまったく別のことしたら名前から何をするメソッドなのか推測できなくて紛らわしいじゃん。
混乱の元だな。

ポリモーフィズムはスパゲティコードを書くための文法なのか

83 :デフォルトの名無しさん:2010/01/24(日) 03:34:11
>>82
どうなんでしょうね

84 :デフォルトの名無しさん:2010/01/24(日) 03:39:11
>>81
ありがとうございます!

85 :デフォルトの名無しさん:2010/01/24(日) 03:56:14
そう思うんなら、無理に使わなくてもいい。

86 :デフォルトの名無しさん:2010/01/24(日) 04:00:53
ねれないお( ^ω^)

87 :デフォルトの名無しさん:2010/01/24(日) 04:02:23
>>82
ですよね。

88 :デフォルトの名無しさん:2010/01/24(日) 05:11:31
int.ToString()
double.ToString() ←これもポリモーフィズムだぞ。便利だろ?

89 :デフォルトの名無しさん:2010/01/24(日) 05:24:08
つられんなよw

90 :デフォルトの名無しさん:2010/01/24(日) 05:25:43
ポリモーフィズムはそのメソッドの意味をある程度
実装側が、自分の事情に合わせて自由かつ柔軟に解釈できる程度の曖昧さが残されている。
それが便利な場合もあれば混乱の元になる場合もあると思われる。

91 :デフォルトの名無しさん:2010/01/24(日) 05:31:24
>>82
少なくとも「まったく別のこと」をするための機能でないことは確かだ

92 :デフォルトの名無しさん:2010/01/24(日) 05:35:22
>>88
便利じゃない。
valueToStringとかのメソッドのほうがわかりやすい。

93 :デフォルトの名無しさん:2010/01/24(日) 05:39:16
たとえば
Formクラスの変数だとToStringは
system.windows.forms.formとかいう文字列が返される

ならDateTime型の変数もToStringすると
System.DateTimeなどいう文字列が返されるのか思いきや
なんか2010/1/24みたいなのが帰ってくる。
これはまったく別の機能であり、大変まぎらわしい
違う機能ならValueStringみたいな名前をつけるべきだ。

同じ名前で別な処理をするしくみは
スパゲティの要因になることは明らかである。

94 :デフォルトの名無しさん:2010/01/24(日) 05:55:59
派生クラスを作るたびにそのvalueToStringメソッドにコード追加していくのか?
愚かだね。保守性も何もない。まあきみにはそういうスパゲッティがお似合いだよ。

95 :デフォルトの名無しさん:2010/01/24(日) 05:59:12
質問よろしいでしょうか。

現在、C#を始めてからそんなに時間が経っていないので本当に初歩的なことですが、
デリゲートとイベントとはどのように使い分ければよいのでしょうか?
文法的な違いは分かるのですが、わざわざイベントなどを用意しなければいけなかった必然性がいまいち……
調べてみたところ「イベントは特定のケースに特化したデリゲートと考えればいい」などとありましたが、
どのような場合が特定なケースなのかがもうひとつうまくイメージできません。
ややこしいようでしたら、参考になるURLあたりでも提示していただければ幸いです。

96 :デフォルトの名無しさん:2010/01/24(日) 05:59:43
お似合いだね。ニッコリ

97 :デフォルトの名無しさん:2010/01/24(日) 06:01:27
レス95は5分後に自己解決予定です。

98 :デフォルトの名無しさん:2010/01/24(日) 06:41:03
構造体の面罵変数ってなんで初期化できないの?

struct person{
private int age=30;
}

クラスだとできるのに構造体だとこれができない理由は何?

99 :デフォルトの名無しさん:2010/01/24(日) 06:46:51
あと、不明な点が・・・

struct person{
private int age;
public person(int x){
age=x;
}
}

こんなので、外部から
person p = new person();
クラスだったら引数0個のコンストラクタはありませんとかなるけど
structだとperson(int)しかないのにperson()ができちゃう理由を教えて。

100 :デフォルトの名無しさん:2010/01/24(日) 06:58:59
サービス、サービスゥ!

101 :デフォルトの名無しさん:2010/01/24(日) 07:17:33
配列とパフォーマンスがらみの話だったと思う。
structは値型なので、newしなくても初期値をもつ。
なのでデフォルトのコンストラクタははじめからあるという考え方をしている。

102 :デフォルトの名無しさん:2010/01/24(日) 07:19:08
>>98、99
クラスは参照型、構造体は値型
これだわからなかったら、わからないところをまた質問しる

103 :デフォルトの名無しさん:2010/01/24(日) 07:27:03
なせば成る、強引にデフォルトコンストラクタを作ろう^-^\
struct ValueTypeA {
 public ValueTypeA(int x, int y) { X = 99; Y = 88; }
 public int X; public int Y;
}
ildasm で逆汗して、再アセンブル
// public ValueTypeA(int x, int y) { の部分を引数なしのコンストラクタに修正
  .method public hidebysig specialname rtspecialname 
          instance void  .ctor(int32 x, int32 y) cil managed
// 修正後
  .method public hidebysig specialname rtspecialname 
          instance void  .ctor() cil managed


104 :デフォルトの名無しさん:2010/01/24(日) 09:02:16
e?

105 :デフォルトの名無しさん:2010/01/24(日) 13:47:13
CLRとCILの違いをおしえて
コモンラングエッジランタイム?
共通言語なんとか意味不明なんだよ

106 :デフォルトの名無しさん:2010/01/24(日) 14:07:59
CILは中間言語の名称。C#みたいなもん。
CILを動かすためのランタイムの仕様を定めた仕様がCLIと呼ばれるもので
CLIをMSが.NET Frameworkのコアとして実装したのがCLR

107 :デフォルトの名無しさん:2010/01/24(日) 14:30:32
>>95
とりあえず、デリゲートはパブリックフィールド/プロパティにしないでくらはい
するときはイベント使ってくらはい
メソッドの引数{Sort(Comparison<T>)みたいな}にする場合はデリゲート使ってくらはい

108 :デフォルトの名無しさん:2010/01/24(日) 14:38:38
>>106
ワタシ男だけど
それさらっと言える人ってなんかちょっとかっこいいと思う。

109 :デフォルトの名無しさん:2010/01/24(日) 14:53:20
CLIとCILは紛らわしいよな

110 :デフォルトの名無しさん:2010/01/24(日) 14:56:48
CILの仕様を定めるのがCLSで
型システムの仕様を定めるのがCTSで
それらに加えてメタデータや実行環境の仕様もひっくるめた仕様がCLIで
それをMSが実装したのがCLR

111 :デフォルトの名無しさん:2010/01/24(日) 14:57:40
おい止めろ

112 :デフォルトの名無しさん:2010/01/24(日) 15:04:04
VBメインでコーディングしててたまにC#をコピペしたり改変したりしてるときはなんともなかったが
ほんの気まぐれでC#をメインで使っていて、昔VBで書いた部分をコピペしてC#に改変するとき
感じるなんとも言えない違和感は異常

113 :デフォルトの名無しさん:2010/01/24(日) 15:08:44
VBは構文が全然違うからまだいい
C++/CLIやJavaは最悪

114 :デフォルトの名無しさん:2010/01/24(日) 15:17:55
JavaとC#行ったり来たりは辛そうだなあ


115 :デフォルトの名無しさん:2010/01/24(日) 15:41:26
構文というか単語が違うのと冗長なのが欠点だな>VB

dim a as integer→int a;

end sub→}とか

byval sender as objectとか
インテリセンスを利用しても、コード書く時間がどうしても長くなる。
かといって初心者からみてもdim a as integerのほうが int aよりわかりやすいなんてことはまったく無く、無意味に冗長になってる言語

116 :デフォルトの名無しさん:2010/01/24(日) 15:49:32
>>115
IDEなければどっちもどっちですよ
C#だってMS製のコンポーネントはどれも名前長いですし

117 :デフォルトの名無しさん:2010/01/24(日) 15:50:46
>>116
「輪をかけて」って言葉分かるか?

118 :デフォルトの名無しさん:2010/01/24(日) 15:53:21
>>117
ああそこ重要ってことね
C#でVBライクな画面開発できるようになったので価値ないのは事実
サンプル探してぐぐった時にVB出てきたときのがっかりといったら

なんだあの見難い構文は

119 :デフォルトの名無しさん:2010/01/24(日) 16:01:15
現状あえてVB.NET選ぶ理由ってそんなにないもんね。
ポトペタだってC#ですいすい作れるし。

120 :デフォルトの名無しさん:2010/01/24(日) 16:39:20
「ファイル(F)」の(Fみたいなアクセラレータキーの設定ってどうするんでしょう?
ショートカットキーとはまた別ですよね?)

121 :デフォルトの名無しさん:2010/01/24(日) 16:42:44
ファイル(&F)

122 :デフォルトの名無しさん:2010/01/24(日) 17:30:04
stringとStringがあるのはなんで?

123 :デフォルトの名無しさん:2010/01/24(日) 17:32:02
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=33576&forum=7

124 :デフォルトの名無しさん:2010/01/24(日) 17:34:30
難しくてわからない

125 :デフォルトの名無しさん:2010/01/24(日) 17:46:29
stringはSystem.String(String)の別名

floatはSystem.Singleの別名

126 :デフォルトの名無しさん:2010/01/24(日) 17:51:58
好楽と呼ばれるかピンクと呼ばれるかの違いみたいなものか

127 :デフォルトの名無しさん:2010/01/24(日) 18:07:09
言語としての体裁という面もある
intがないとC#自身でSystem.Int32を定義できない(System.Int32は実際にC#で書かれてる)

128 :デフォルトの名無しさん:2010/01/24(日) 18:09:56
てことはintは別名ではないの?

129 :デフォルトの名無しさん:2010/01/24(日) 18:19:17
同じ名前の奴がクラスに2人いるから
いじられキャラの方が変なあだ名で呼ばれてるような感じか

130 :デフォルトの名無しさん:2010/01/24(日) 18:24:15
>>127
using Systemはデフォルトでいいじゃないか思ってたけど、そういう面もあるんだね。

131 :127:2010/01/24(日) 18:28:37
すまん勘違い
System.Int32でも通った
mscorlib.dllを参照しないようにしてSystem.Int32などの特殊な型を定義するときは
コンパイラが特別扱いして循環参照のエラーを出さないみたい

132 :デフォルトの名無しさん:2010/01/24(日) 19:19:44
>>119
VB6なら、チープな環境だと(起動時の)圧倒的な速度差があるけどね
もう少し起動が速くならない物か?

133 :デフォルトの名無しさん:2010/01/24(日) 19:26:59
>>111
えっと

マイクロソフトを止めれば良いんですよね?

無理!

>>115
激しく同意。あの構文は超糞

134 :デフォルトの名無しさん:2010/01/24(日) 19:30:31
インテリセンスだけはC#よりVBのほうが便利なんだよなぁ
逆にC++のインテリセンスは終わってる

Visual Studio前提だとC#になれちゃうとC++とかうざくて仕方ない。

135 :デフォルトの名無しさん:2010/01/24(日) 19:34:50
VBの方がインテリセンスがいい、っていつの話?

136 :デフォルトの名無しさん:2010/01/24(日) 19:39:51
C++はテンプレート使ったときのパラメータヒントが凄すぎる
せめて色分けしてくれ

137 :デフォルトの名無しさん:2010/01/24(日) 19:45:14
>>135
Visual Studio 2010 ベータ2の話

138 :デフォルトの名無しさん:2010/01/24(日) 20:06:57
へー。スレ違いだな。

139 :デフォルトの名無しさん:2010/01/24(日) 21:18:57
>>98
構造体の配列とった時に、領域の 0 クリアだけで済むように。
構造体のデフォルトコンストラクターで 0 クリア以外を認めると、
配列確保したときに要素数の分だけコンストラクター呼ばなきゃいけなくなる。

>>99
構造体の場合、デフォルトコンストラクターは 0 クリアって決まってる。
定義しなくてもいいというか、むしろ定義できなくなってるはず。

140 :デフォルトの名無しさん:2010/01/24(日) 21:25:31
C#では構造体のデフォルトコンストラクタは定義できないけどCLI的には定義可能
他の言語でデフォルトコンストラクタが定義してあれば
C#でインスタンスを作ったときにもそのコンストラクタが呼ばれる

141 :デフォルトの名無しさん:2010/01/24(日) 21:46:22
>>140
仕様書からの該当項目の抜粋

ECMA-335 Common Language Infrastructure (CLI)
 8,9.7 Value type definition
  5. Unlike object types, instances of value types do not require a constructor to be called
  when an instance is created. Instead, the verification rules require that verifiable code
  initialize instances to zero (null for object fields).

142 :デフォルトの名無しさん:2010/01/24(日) 21:46:57
前にやったなこの話題
前に見たなその抜粋

143 :デフォルトの名無しさん:2010/01/24(日) 21:51:15
試してみればわかるけど,デフォルトコンストラクタがあれば実際呼ばれるよ

144 :デフォルトの名無しさん:2010/01/24(日) 21:53:57
呼ばれないって

145 :デフォルトの名無しさん:2010/01/24(日) 21:57:06
964 名前:デフォルトの名無しさん[sage] 投稿日:2009/07/25(土) 22:44:49

「値型はユーザー定義のデフォルトコンストラクタが呼ばれない可能性がある」が正しい。
CLIの仕様としては値型のデフォルトコンストラクタも存在するが、それが呼ばれるのは
システム定義のデフォルトコンストラクタ(0とnullに初期化する奴)が呼ばれない場合に限られる。
で、どうせ呼ばれないし、定義するだけ不毛なので定義できないようになってる。

146 :デフォルトの名無しさん:2010/01/24(日) 22:29:17
>121
返事がおそくなり申し訳ありません
ありがとうございます!

147 :デフォルトの名無しさん:2010/01/24(日) 22:34:10
>>143
試すの面倒だからアセンブリうpってよ

148 :デフォルトの名無しさん:2010/01/24(日) 22:34:18
どういたしまして

149 :デフォルトの名無しさん:2010/01/24(日) 22:35:20
Arrayには配列要素のデフォルトコンストラクタを直接に呼び出すInitializeというメソッドがある。
ValueTypeA [] b = new ValueTypeA[100];
b.Initialize();


150 :デフォルトの名無しさん:2010/01/24(日) 22:38:23
>>147
い や だ !

151 :デフォルトの名無しさん:2010/01/24(日) 22:42:31
>>143
>>103の方法で作れるからやってみるといい。
newしてもデフォルトコンストラクタは呼ばれない。
Array.Initializeでは呼ばれる。

152 :デフォルトの名無しさん:2010/01/24(日) 22:46:59
結局145が正しいのか?

153 :デフォルトの名無しさん:2010/01/24(日) 22:57:36
つか>>141>>140の内容全然違わねえか?

値型のインスタンス作成時はコンストラクタの呼び出しを必要としません。
代わりに検証コードはフィールドがゼロで(オブジェクトフィールドはnullで)初期化されることを検証します。

だろ?

154 :デフォルトの名無しさん:2010/01/24(日) 22:59:54
>他の言語でデフォルトコンストラクタが定義してあれば
>C#でインスタンスを作ったときにもそのコンストラクタが呼ばれる

この部分がどっから来たのか説明が待たれる所ですね

155 :デフォルトの名無しさん:2010/01/24(日) 23:06:02
どうでもいいよ

156 :デフォルトの名無しさん:2010/01/24(日) 23:06:42
どうでもいいね
フカシこいたことは笑われるべきだが

157 :デフォルトの名無しさん:2010/01/24(日) 23:08:09
フカシ?不可視?

158 :デフォルトの名無しさん:2010/01/24(日) 23:10:40
140は英語読めないんだろ
そして相手も英語読めないと思ったんだ
もうそれでいいだろ

159 :デフォルトの名無しさん:2010/01/24(日) 23:17:50
C#って関数の引数に
void func(const ref Object objDontTouchMe)
みたいにconst refとかできないの?
どうやって、「ただ見るだけだよ」って分からせられるの?

160 :デフォルトの名無しさん:2010/01/24(日) 23:20:44
>>159
const参照は存在しない

161 :デフォルトの名無しさん:2010/01/24(日) 23:20:48
それならrefを付けなければいいと思うのだが

162 :デフォルトの名無しさん:2010/01/24(日) 23:22:00
たぶんrefキーワードを理解できていないのでは。

163 :デフォルトの名無しさん:2010/01/24(日) 23:24:44
(´・ω・`)

164 :デフォルトの名無しさん:2010/01/24(日) 23:25:42
(´・∀・`)

165 :デフォルトの名無しさん:2010/01/24(日) 23:27:46
そういえばしばらくref使ってないな

しばらくっていうかAPI使った時以外使ってないかも

166 :デフォルトの名無しさん:2010/01/24(日) 23:30:12
( ^ω^)おっおっおっ

167 :デフォルトの名無しさん:2010/01/24(日) 23:32:07
refよりoutを使う機会が多い

168 :デフォルトの名無しさん:2010/01/24(日) 23:33:04
(;゚;ё;゚;)

169 :デフォルトの名無しさん:2010/01/24(日) 23:33:43
おいやめろ

170 :デフォルトの名無しさん:2010/01/24(日) 23:34:20
Windowsフォームアプリケーションを作成しています。
発行してClickOnceの自動生成サイトからダウンロードしてもらいますが、
この発行時にWeb上に自動生成されるサイト(紺色のグラデーションの帯上にアプリケーション名が記載されているHTML)のデザインを、自分で変更することはできますでしょうか。

また、このHTMLの雛型がソリューション内のどこかにあると思うのですが、この雛型を変更したり、別の雛型を選択することは可能でしょうか。

よろしくお願いいたします。


171 :デフォルトの名無しさん:2010/01/24(日) 23:35:53
できますでしょう。

172 :デフォルトの名無しさん:2010/01/25(月) 01:02:00
const refってどの言語で使われてるの?
いろいろ考えてみたんだが、どうしても用途が理解できない。

173 :デフォルトの名無しさん:2010/01/25(月) 01:12:33
c++で普通に使われてるよ

174 :デフォルトの名無しさん:2010/01/25(月) 01:14:17
c++とかじゃないの?
c++では値型と参照型という区別がないからね。
大きなクラスでも値型のように使える。
すると値型を参照渡ししたい場面はc#とかより普通にある。


175 :デフォルトの名無しさん:2010/01/25(月) 01:16:03
普通にあるな

176 :デフォルトの名無しさん:2010/01/25(月) 01:31:34
outはTryParseで使う

177 :デフォルトの名無しさん:2010/01/25(月) 01:37:58
F#では out引数を多値関数に置き換えてくれる。

> let (b, v) = System.Int32.TryParse("123");;
val v : int = 123
val b : bool = true


178 :デフォルトの名無しさん:2010/01/25(月) 01:42:42
>>177
戻り値とoutで返すより、この方が明確でいいな

179 :デフォルトの名無しさん:2010/01/25(月) 01:44:21
面白い

180 :デフォルトの名無しさん:2010/01/25(月) 01:46:44
つまんね―

181 :デフォルトの名無しさん:2010/01/25(月) 02:02:24
わざわざ変数用意してoutで渡すよりスマートな解決方法だな。面白い

182 :デフォルトの名無しさん:2010/01/25(月) 02:16:07
スマートすぎてなんだかなあ

183 :デフォルトの名無しさん:2010/01/25(月) 02:18:24
(´・ω・`)よーんだ?

184 :159:2010/01/25(月) 02:33:37
回答ありがとうございます。

>>160
refをつけないとオブジェクトのバイナリコピーが発生するのかな??って思ってたんですが
ちがいますのん?

>>162
そうだと自分でも思います。

185 :159:2010/01/25(月) 02:38:24
まちがえた
>>160
o>>161
でした。。

186 :デフォルトの名無しさん:2010/01/25(月) 03:19:56
>>184
そんな事しなくても、クラスはコピーされない。
構造体はコピーされる。

プロファイルを取る前からパフォーマンス気にして、構造体がコピーされないようにref付けて…とかならやめとけ。
小さいならコピー作らせた方が早いし、万単位で呼び出さないと計測誤差程度にしか変わらん。

187 :デフォルトの名無しさん:2010/01/25(月) 03:22:43
クラスは参照型
構造体は値型

188 :デフォルトの名無しさん:2010/01/25(月) 03:23:17
>>186
なるほど。。ありがとうございます!

189 :デフォルトの名無しさん:2010/01/25(月) 08:30:43
どういたしまして

190 :デフォルトの名無しさん:2010/01/25(月) 11:38:03
ある文字列の後ろに、n個分のスペース文字を追加する最も簡単な方法は何でしょうか?

191 :デフォルトの名無しさん:2010/01/25(月) 11:42:26
for(int i=0; i<n; i++) s += " ";


192 :デフォルトの名無しさん:2010/01/25(月) 11:43:31
そんなに使い込んでないが正解予想
A += new string(' ', n);

193 :デフォルトの名無しさん:2010/01/25(月) 11:54:05
>>192
その案、採用しました。

>>192
俺と同じレベルだなw

194 :デフォルトの名無しさん:2010/01/25(月) 11:59:46
別に一番簡単ではない上に遅いかも知れんが
String aaa = "test"
int n =10;
aaa = aaa.PadRight(aaa.Lenght + n);

とかとりあえず書いてみる

195 :デフォルトの名無しさん:2010/01/25(月) 12:02:23
>>193
普通はそういった処理は桁合わせをするために行うものなので、
194のやり方のほうが有用だと思うよ。

196 :デフォルトの名無しさん:2010/01/25(月) 12:03:59
しかし桁あわせというと非UTF-16のバイト数で合わせたいパターンも多い

197 :デフォルトの名無しさん:2010/01/25(月) 12:11:21
じゃあ、>>194も採用するよ。

198 :デフォルトの名無しさん:2010/01/25(月) 13:11:34
stringに *演算子を追加とか

199 :デフォルトの名無しさん:2010/01/25(月) 13:16:10
自分のプログラム上のコントロール単位のIME制御ではなく
アプリが特定の動作をした場合、キーボードの[半角/全角]キーなどでIMEをONにしたように
するにはどうすればいいんでしょうか?
またアプリ起動時からIMEの常態をモニターしたいのですがこれもよくわかりません。

モニターさえできればkeybd_eventで[半角/全角]キーが押されてように
振舞ってもいいですし

やってみたこと
Runtime.InteropServicesで
ImmGetContext <- 最初はthis(Form)
ImmGetOpenStatus
ImmReleaseContext
うまくステータスとれず

これってもしかして全プログラムの親(タスクバー?)にすればうまくいくんですかね?
その場合どれからハンドルとればいいのだろう・・・

200 :デフォルトの名無しさん:2010/01/25(月) 14:22:35
>>199
ユーザーの環境によっては半角/全角キーでIMEのオンオフじゃなかったり
そもそも半角/全角キーがなかったりすることもある。
そういう環境に依存するような実装は考えない方が身のためだよ。

201 :デフォルトの名無しさん:2010/01/25(月) 14:34:48
そんな実装が必要なアプリってなんなんだろ・・・・
入力する時に必要なだけなきがするんだが

202 :デフォルトの名無しさん:2010/01/25(月) 14:42:31
日本語化がアホなオンラインゲーでIMEのON/OFFをコントロールしたいと予想
と思ったが全角/半角エミュレートでいけるんなら違うか

203 :デフォルトの名無しさん:2010/01/25(月) 14:51:01
スクリーンキーボードのひらがな限定の物です

文字入力開始時にひらがなモードになってないと例えば

あ -> 3

とかでちゃうんでこれを回避できればなあと

204 :デフォルトの名無しさん:2010/01/25(月) 15:39:04
それはキーのコントロールより、IMEの制御では

205 :デフォルトの名無しさん:2010/01/25(月) 15:55:34
さぁはやく50音のボタンがあるフォームを作る作業に戻るんだ!


206 :デフォルトの名無しさん:2010/01/25(月) 16:33:26
もうできてるというか>>8で晒されてた

207 :デフォルトの名無しさん:2010/01/25(月) 17:18:32
五十音といえば、左から右に「あかさたな…」と並べるUIを作った奴には死んで欲しい

208 :デフォルトの名無しさん:2010/01/25(月) 17:36:56
>>11
入力動作くらい誰にでも作れるんだぜ
問題はその後なんだぜ

209 :デフォルトの名無しさん:2010/01/25(月) 17:49:32
>>208
その後って?

210 :デフォルトの名無しさん:2010/01/25(月) 17:54:00
>>209
IMEに渡さないと漢字入力できない

211 :デフォルトの名無しさん:2010/01/25(月) 17:56:40
>>210
IMEさえ起動すれば勝手に拾ってくれるけど
IMEの起動と入力モード管理がしたいだけなんだよね

手動でIME起動してひらがな入力にしておけば普通に動くよ

212 :デフォルトの名無しさん:2010/01/26(火) 00:55:49
>>211
動かなかった・・・

213 :デフォルトの名無しさん:2010/01/26(火) 01:31:49
Linuxなんかに比べればWindowsのIMEは規格が遥かにしっかりしてはいるけど、
やはり不確定要素があって通常のアプリレベルでは処理しにくいと思う。
(ソフトウェアキーボードでIMEの操作するなんてぞっとするだろ)

ソフトウェアキーボードはひらがな/アルファベットの入力に留めて、
入力した文字列からの全文検索で全て処理できるように作るべきじゃないかな。

まあ最終的に作りたいものが何なのかによっても変わってくるけど。

214 :デフォルトの名無しさん:2010/01/26(火) 01:36:43
>>212
何でイベント送信してるの?
keybd_eventなら余裕で拾ってくれるけど

215 :デフォルトの名無しさん:2010/01/26(火) 01:57:14
次のような二次元配列をList<T>を使って実現することは可能でしょうか?

# string name, int age
Taro, 19
Hanako, 21
Susumu, 34
Kyouko, 6
Hatoyama, 999

こんな感じで名前と年齢をペアでリストに追加していきたいと思っています。

216 :デフォルトの名無しさん:2010/01/26(火) 02:02:12
4.0で遊んでるならTuple
3.5だったらKeyValuePair突っ込むなりしろ

217 :デフォルトの名無しさん:2010/01/26(火) 02:07:05
Personクラス作ればいいよ

218 :デフォルトの名無しさん:2010/01/26(火) 02:08:25
常軌を逸してくるとこういうやり方をするらしい
http://d.hatena.ne.jp/ufcpp/20071207/1197030259

匿名型リストっておいおい^^;

219 :デフォルトの名無しさん:2010/01/26(火) 03:42:17
>>216
> 3.5だったらKeyValuePair突っ込むなりしろ

KeyValuePair

これは初めて聞いたんですがどういう用途に使えるんですか?

220 :デフォルトの名無しさん:2010/01/26(火) 03:48:37
氏ねカス

221 :デフォルトの名無しさん:2010/01/26(火) 04:17:54
死ねクソが

222 :デフォルトの名無しさん:2010/01/26(火) 05:57:26
>>218
そのサイトは検索エンジン経由だけどお世話になってるがアニオタだよね
何かのサンプルソースの中に割りと普通な個人名があったので
調べたら声優だったw

と予断は置いといて、上記を逸するというかforeach考えると不思議じゃない機能だよね
ただ機能増やしすぎかなあ

また拡張拡張でおかしなことにならなければいいけど

223 :デフォルトの名無しさん:2010/01/26(火) 07:14:20
鍵と値のペアに使える。

224 :デフォルトの名無しさん:2010/01/26(火) 07:20:17
ごめん。間違えた。使えなかった。

225 :デフォルトの名無しさん:2010/01/26(火) 07:23:44
>>222
関数の型推論をするようになったら危ないとは思うが、
匿名型はクラスメンバーやメソッドの引数と戻り値には使えないという一線でガードされている。
気になるならLinq専用と割り切ってれば十分だと思う。


226 :デフォルトの名無しさん:2010/01/26(火) 07:30:00
やっぱ十分じゃないわw

227 :デフォルトの名無しさん:2010/01/26(火) 08:52:53
C# .NET を勉強し始めたばかりです
Form アプリでボタンが押されたらメッセージボックスを出す、という処理を書きましたが
メッセージボックスのところでコンパイルエラーが出ます

MessageBox.Show("Test","Test",MessageBoxButtons.OK,MessageBoxIcon.Error);
>error C2143: 構文エラー : ';' が '.' の前にありません。

これはどういう意味なんでしょうか?

228 :デフォルトの名無しさん:2010/01/26(火) 09:03:44
>>227
コピペしたけどそんなエラー出ねえよ
どっか他が間違ってるんだろ


229 :デフォルトの名無しさん:2010/01/26(火) 09:06:59
';' が '.' の前にありません。

て意味

単純にその前後に何か書いてるんじゃない?
その行だけコピペしたら100%うごくはずだし



230 :227:2010/01/26(火) 09:11:11
済みません わかりました
原因はしょうもなさすぎてとても言えないミスでした。。。

231 :デフォルトの名無しさん:2010/01/26(火) 11:00:00
>>230
もう来ない方がいいですよ

232 :デフォルトの名無しさん:2010/01/26(火) 11:33:55
>>231
そんなこと言うなよ、俺が変わりに暴露してやるから

CXXXXってcl.exeのエラーだよなw

233 :デフォルトの名無しさん:2010/01/26(火) 15:32:56
>>231
初心者スレに初心者が来なくてどうする

234 :デフォルトの名無しさん:2010/01/26(火) 21:13:53
C#の参照渡しはoutとrefの2種類あります。

outは初期化した参照でなくても渡すことが出来るという点でrefより融通が利くわけですが、
それでもなぜrefが存在しているのでしょうか?

outはダメでrefでなければならないというケースはどんなときですか?

235 :デフォルトの名無しさん:2010/01/26(火) 21:16:19
なぜって、データが欲しいのにnullが来ても困るじゃん

236 :デフォルトの名無しさん:2010/01/26(火) 21:19:52
outは引数の中身にアクセスできないよ
未初期化のローカル変数にアクセスできないのと同じ

237 :デフォルトの名無しさん:2010/01/26(火) 21:42:02
無印は入力のみ、out は出力のみ、ref は入力でも出力でもある場合に使うのよ

238 :デフォルトの名無しさん:2010/01/26(火) 21:45:55
まあ基本refやoutなんか使わないほうがいい

239 :デフォルトの名無しさん:2010/01/26(火) 22:26:37
>>236
int a = 10;

と初期化済みの変数aをメソッドにout付きで渡したらどうなりますか?

240 :デフォルトの名無しさん:2010/01/26(火) 22:29:19
呼び出し元で初期化されてるかどうかは呼び出し先のメソッドには分からない
だから値を読もうとすると問答無用でコンパイルエラー

241 :デフォルトの名無しさん:2010/01/26(火) 22:29:47
>>239
なんでそんな、試せばすぐに分かることを人に聞くんだ。
自分でやってみて考えなさい。


242 :デフォルトの名無しさん:2010/01/26(火) 22:31:53
あとMSDNちゃんと読もうな。


243 :デフォルトの名無しさん:2010/01/26(火) 22:39:18
つーか、言語仕様とか「何か意味があるんだな」って受け流すべき。

「なにこれ作ったやつバカじゃないの?」ってのはもう最悪に素質ないから趣味でも辞めろ。
仕様やライブラリを信用できなかったらなにもできない支那。

244 :デフォルトの名無しさん:2010/01/26(火) 22:42:14
仕様読まない人に言っても

245 :デフォルトの名無しさん:2010/01/26(火) 22:47:51
>>244
ああお前のことね

246 :デフォルトの名無しさん:2010/01/26(火) 22:50:17
>>243
「バカじゃないの?俺ならこーする、こっちの方がこうこうこういう理由で合理的じゃん!」
ってやって皆に認められる言語やライブラリやフレームワーク作る人も居るとは思うけどね。

とはいうけど言ってることは基本的に同意で。


247 :デフォルトの名無しさん:2010/01/26(火) 23:04:25
>>238
参照渡しもポインタも使わずにどうプログラムを組めと

248 :デフォルトの名無しさん:2010/01/26(火) 23:07:19
参照の値渡しをすればよい
理屈の上ではrefやoutも完全に代替できる

249 :デフォルトの名無しさん:2010/01/26(火) 23:09:45
誰も絶対使うなとは言ってないのに極論厨だなあ
初心者は極論持ち出さない方がいいよ
頭固くなるから

250 :デフォルトの名無しさん:2010/01/26(火) 23:11:26
>>248
それポインタじゃね?

251 :デフォルトの名無しさん:2010/01/26(火) 23:13:38
>>250
違うよ笑

252 :デフォルトの名無しさん:2010/01/26(火) 23:21:37
参照の値渡しのことを参照渡しって言うわけなんだけれども。

253 :デフォルトの名無しさん:2010/01/26(火) 23:21:46
>>251
で、具体的にどんなコードだよ?

254 :デフォルトの名無しさん:2010/01/26(火) 23:22:59
int型では無くstring型の配列があるとします。
配列には次の様に”数字.dat”という規則のファイル名が格納されており、

003.dat
01.dat
006.dat
0005.dat

これをソートして

01.dat
003.dat
0005.dat
006.dat

のように昇順で並び替えたいと思っています。

リテラルのソートをしてくれるクラス・メソッドはありますか?

もしそのようなクラス・メソッドが無い場合はどうすればよろしいでしょうか?

255 :デフォルトの名無しさん:2010/01/26(火) 23:25:34
Array.SortにComparison<T>を引数に取る奴があるから比較自分で書け

256 :デフォルトの名無しさん:2010/01/26(火) 23:25:37
というか、普通に書いてたらrefもoutも使わないとかけないところなんて殆どないぞ。
メソッドとプロパティとdelegateとイベントハンドラでほとんどなんでもできる。

257 :デフォルトの名無しさん:2010/01/26(火) 23:26:55
Sort((a,b) => int.Parse(a.Replace(".dat","") - int.Parse(b).Replace(".dat",""));

258 :デフォルトの名無しさん:2010/01/26(火) 23:28:18
ありゃ、ずれた。
Sort((a,b) => int.Parse(a.Replace(".dat","") - int.Parse(b.Replace(".dat","")));

259 :デフォルトの名無しさん:2010/01/26(火) 23:29:22
refだのoutだの使いたくなった時はそれはクラス作る時ってことで。

260 :デフォルトの名無しさん:2010/01/26(火) 23:32:48
問題は
>まあ基本refやoutなんか使わないほうがいい
この発言の根拠がなにかってことじゃないのか?

261 :デフォルトの名無しさん:2010/01/26(火) 23:34:30
すぐ治ったな

262 :デフォルトの名無しさん:2010/01/26(火) 23:35:03
[DllImport("誤爆")]

263 :デフォルトの名無しさん:2010/01/26(火) 23:37:37
>>255
>>258
ありがとうございます。
その方法を調べてみます。

264 :デフォルトの名無しさん:2010/01/26(火) 23:38:12
refやoutを使わないために構造体をクラスに
置き換えるんならそのまま使った方がマシだろ。

265 :デフォルトの名無しさん:2010/01/26(火) 23:40:17
http://msdn.microsoft.com/ja-jp/library/ms229053.aspx
クラスライブラリでrefやoutを公開するのは非推奨
C#ならいいんだけどVBやC++/CLIから使う場合には区別がつかないから可読性の問題もある

266 :デフォルトの名無しさん:2010/01/26(火) 23:41:10
始めからつかわねえように設計しろってことか

267 :デフォルトの名無しさん:2010/01/27(水) 00:04:24
Javaじゃないのに余計な機能つけるMSが悪いな

268 :デフォルトの名無しさん:2010/01/27(水) 00:08:11
構造体は値渡しに限る!

269 :デフォルトの名無しさん:2010/01/27(水) 00:08:37
C++/CLIとかの兼ね合いのせいじゃないの

270 :デフォルトの名無しさん:2010/01/27(水) 00:14:27
なんてこった!
TryParse も out 使わずに実装しやがれ!

271 :デフォルトの名無しさん:2010/01/27(水) 00:15:45
TryParseパターンを使う場合も,それだけ提供するんじゃなくて例外投げるバージョンも提供しろっていう
ガイドラインがある

272 :デフォルトの名無しさん:2010/01/27(水) 00:16:22
いわゆる副作用だし

273 :デフォルトの名無しさん:2010/01/27(水) 00:18:09
outを使うなって言ってるMSが使ってちゃいかんでしょうw
例外は使いたくないな
だって、ジョエルが使うなって言ってるもん(;。;)

274 :デフォルトの名無しさん:2010/01/27(水) 00:19:05
誰だ?ビリーか?

275 :デフォルトの名無しさん:2010/01/27(水) 00:20:16
Joel Spolsky

お前オッサン臭がするぞ
オッサンだろ

276 :デフォルトの名無しさん:2010/01/27(水) 00:22:44
でも、out使わないで、Parseに成功したか
うまく書く方法はあるんか?

277 :デフォルトの名無しさん:2010/01/27(水) 00:26:06
boolと値を持った構造体を返すとか

278 :デフォルトの名無しさん:2010/01/27(水) 00:36:21
TryParseの中でParse呼んでたら笑うな

279 :デフォルトの名無しさん:2010/01/27(水) 00:40:45
TryParseなんてあんのが間違ってるな。
true/falseの返り値チェックし忘れそうだし。
こんなメソッド提供する必要ない。

280 :デフォルトの名無しさん:2010/01/27(水) 00:40:47
>>273
間違ったコードは間違って見えるようにするって奴か

しかしながら俺は”他人が俺の拵えた関数のエラー値を正しくチェックしている”なんて信用していないんだ。
だから例外処理を強制する


281 :デフォルトの名無しさん:2010/01/27(水) 01:13:32
例外処理は値渡しに限る!

282 :デフォルトの名無しさん:2010/01/27(水) 01:35:16
「out 使うな」は「絶対ダメ!」じゃなくて「避けれるならない方がいいよ」って話。

多値戻り値サポートしてれば out 要らないんだけどね。
あと、C# の場合は過去のしがらみ(COM 相互運用とか)で out が必要。


283 :デフォルトの名無しさん:2010/01/27(水) 01:51:10
Goは多戻り値サポートしてるらしいね。
なんでC#はサポートしなかったんだろう?

284 :デフォルトの名無しさん:2010/01/27(水) 02:00:52
そもそもなんでいつまでも関数と戻り値と引数なんだろう。

285 :デフォルトの名無しさん:2010/01/27(水) 02:09:29
>>284
関係性を定義するのは集合と写像が基本であり、
写像の典型例が関数だから。

286 :デフォルトの名無しさん:2010/01/27(水) 02:16:37
エラーを戻り値で通知されると、いちいちメソッドの説明読んで
「エラーの際は○○を返却します」を読まないといけないから嫌じゃ。
マクロが使えるHRESULTとかだったらまだいいけどな、
ハンドルでNULLと0xFFFFFFFFが共存してるのはマジ死ねとしか言えない。

287 :デフォルトの名無しさん:2010/01/27(水) 02:21:36
そーか
死ね

288 :デフォルトの名無しさん:2010/01/27(水) 02:55:21
そーかは嫌いですよね。

289 :デフォルトの名無しさん:2010/01/27(水) 03:01:35
>>286
そんな旧式の動作をするようなクラスが.NETの基本クラスライブラリにどれだけあるか、例にあげてご覧よ。

290 :デフォルトの名無しさん:2010/01/27(水) 03:08:27
C時代に逆行すんのが嫌だって言ってんじゃないの?

291 :デフォルトの名無しさん:2010/01/27(水) 03:59:57
>>263>>258
比較ごとに毎回replace*2、parse*2するのはコスト的に馬鹿らしくないか?

因みに、PenM 1.7GHzでreplaceとparseだけを2^21回実行したら1.5〜2秒くらいだった
(2^21回=要素数1024の最悪ケース=要素数65536の平均ケース)

292 :デフォルトの名無しさん:2010/01/27(水) 04:04:52
何回ソートするのかによる
頻繁にやるようならキャッシュするけど
数回なら拘るのは馬鹿らしいのでしない

293 :デフォルトの名無しさん:2010/01/27(水) 04:40:39
>>291
最適化は質問者の仕事だろ
実際の流れが分からないと答えでないし
そもそもそこまでしてやる必要ない

294 :デフォルトの名無しさん:2010/01/27(水) 05:59:38
独学でjavascriptをやってみて面白くなってきたんですが(jsだったのは実行環境を整えるのが楽だったから)
文法が似てるきがするのでC#もやってみたいんですが
いわゆるmainにすべての処理を書くようなプログラミングで(サブルーチン程度なら関数も使っていますが)
オブジェクト指向?構造体?コンストラクタ?みたいな状態なんですが(知らずに使っているかもしれませんが)
上記のようなことを知りたい場合におすすめな定番ページはありますか?

演算子、配列、構文などは分かってると自分では思います

295 :デフォルトの名無しさん:2010/01/27(水) 06:01:17
本当かなあ・・・

296 :デフォルトの名無しさん:2010/01/27(水) 07:37:17
Visual C#導入したのだけど、ビルド?の使い方がよくわかりません
例えばhttp://www.microsoft.com/japan/msdn/vstudio/2008/product/express/install_vcs.aspxにある時計を表示するプログラムを書いて
これを実行するプログラムを作成するにはどうすればいいんでしょうか
ソリューションのビルドってやってもビルド正常終了ってなるだけで何もおきません
exeファイルは作れないのですか?

297 :デフォルトの名無しさん:2010/01/27(水) 07:42:37
ソリューションの右クリックでエクスプローラー出したり
自分でエクスプローラーでプロジェクトの場所開くなりして
DebugやReleaseフォルダ探せばEXEファイルが入ってるだろう

298 :デフォルトの名無しさん:2010/01/27(水) 08:01:02
>>266
オブジェクト指向頭になるとintだろうがなんだろうが基本的にはクラスで
抱える考えになるのでrefとかoutで悩むことはないはずなんだが

>>267
>>262のAPI使うときにないとこまる
用途はそれくらいだろ

299 :デフォルトの名無しさん:2010/01/27(水) 08:03:43
>>296
ビルドは作ってるだけだよ
その隣のデバックのところで動かせるし
exeそのものを取り出したいならプロジェクトのパスをたどって
binフォルダ->Releaseフォルダ->xx.exeと探すしかない

300 :デフォルトの名無しさん:2010/01/27(水) 08:09:58
javascriptのprototypeベースクラスのほうが難しいと思うけど、
きっと手をつけてないんだろうな。

でもま、そんなあなたに JScript.NET ! こっそり入ってます。

301 :296:2010/01/27(水) 08:13:45
見付けられました、ありがとうございます

302 :デフォルトの名無しさん:2010/01/27(水) 09:01:34
2008 Expressで、[デバッグ開始]で実行したときに
自動的にデバッグビルドに切り替えるか、警告を出してくれるようなオプションはありませんか?


303 :デフォルトの名無しさん:2010/01/27(水) 09:02:07
F# は多値戻り値をサポートしてるよん

304 :デフォルトの名無しさん:2010/01/27(水) 09:17:30
多値戻り値ってなーに?
object[]返してるようなもの?

305 :デフォルトの名無しさん:2010/01/27(水) 09:23:07
従来のCなどであったコールバック(イベントドリブンとかで使ってるやつ)というのは
デリゲートとかいうやつなんでしょうか?

306 :デフォルトの名無しさん:2010/01/27(水) 10:08:22
>>304
C系の文法で書くなら、
Ret1, Ret2 Method(Arg1 x1, Arg2 x2)

ラムダ的に書くなら、
(x, y) => (x + y, x * y)

みたいなの。

C# 的にいうと、
void Method(Arg1 x1, Arg2 x2, out Ret1 r1, out Ret2 r2)

var r1, r2 = Method(x1, x2);
って書き方で呼べてもいいじゃないっていう。

307 :デフォルトの名無しさん:2010/01/27(水) 10:09:07
>>305
おおむねその通り。
関数ポインターよりはデリゲートの方が高機能だけど。
インスタンスメソッドも渡せたり、マルチキャストできたり。

308 :デフォルトの名無しさん:2010/01/27(水) 10:18:51
InfoQ: Mono が C# 言語の拡張機能を試験的に導入
http://www.infoq.com/jp/news/2010/01/Mono-CSharp-Ex

複数戻り値も入っとるな、こっちはout引数がついた関数を特別な呼び方ができるやつ
じゃなくてタプルをアンパック代入できる方式だが

309 :デフォルトの名無しさん:2010/01/27(水) 10:20:14
参照渡しは参照渡し
値渡しは値渡し

ポインタの値渡しはあるが、参照の値渡しなんて概念がある言語ってあったか?

310 :デフォルトの名無しさん:2010/01/27(水) 10:31:59
だから参照の値渡しってのは結局のところ参照渡ししてるだけだっつーの。


311 :デフォルトの名無しさん:2010/01/27(水) 10:32:31
「参照の」は「参照型の」という方が自然だが、普通にC#で使うな

312 :デフォルトの名無しさん:2010/01/27(水) 10:33:16
>>310
じゃあ(ref object x)はなんと表現するんだ

313 :デフォルトの名無しさん:2010/01/27(水) 10:37:03
参照の値渡し
1) 参照の(指している何か自体の)値渡し
2) 参照の(指している場所情報の)値渡し

だから何?

314 :デフォルトの名無しさん:2010/01/27(水) 10:38:42
VBね
http://img.f.hatena.ne.jp/images/fotolife/t/taka_2/20090528/20090528234725.jpg

315 :デフォルトの名無しさん:2010/01/27(水) 10:50:09
>>309
JavaとかC#の参照型って結局ポインターみたいなもんだからねぇ。
ポインターの値渡しに相当。

316 :デフォルトの名無しさん:2010/01/27(水) 10:55:45
call by object だな。
「参照の値渡し」というのはVBの用語と考えた方がいいと思うが。

317 :デフォルトの名無しさん:2010/01/27(水) 11:04:59
概念的な話なのか内部構造的な話なのか

318 :デフォルトの名無しさん:2010/01/27(水) 11:11:11
概念からくる内部構造じゃないの?

c#だとクローンが参照の値渡しみたいなもんじゃね?

319 :デフォルトの名無しさん:2010/01/27(水) 11:56:14
参照の値渡し
参照の参照渡し
値型の値渡し
値型の参照渡し

320 :デフォルトの名無しさん:2010/01/27(水) 11:59:58
boolとstringみたいに帰ってくるのがほとんどだろうから
if (method(xxx)) { xxxxxx; } って書けないのはありがたみがないな

321 :デフォルトの名無しさん:2010/01/27(水) 12:08:41
どうせ成否判定と処理結果を返したいってのが殆どのケースなんだろし
成否判定だけ特別に扱える構文でも作ればよくね?
→ 例外が出来ました

ってのが元々なんだけど、C#では例外で処理フローつくるのはやめてねってことになってるんだよね。
だから検査例外が存在しない。(catchしなくてもコンパイル通る=処理しないといけないエラーは例外にすんな)


322 :デフォルトの名無しさん:2010/01/27(水) 12:40:40
>>307
ありがとうございます。

323 :デフォルトの名無しさん:2010/01/27(水) 13:44:17
>>322
うむ

324 :デフォルトの名無しさん:2010/01/27(水) 14:10:07
c#でコントロールの再描画の際のちらつきを抑える方法はないでしょうか?

Formにダブルバッファ設定があったので試しましたがやはりちらつきます。
ゲーム関連のようにvsyncを待ってとかできれば一番いいのですが

325 :デフォルトの名無しさん:2010/01/27(水) 14:12:14
まあFomだけ有効にしたって子コントロールはダブルバッファリングしてくれないからね

326 :デフォルトの名無しさん:2010/01/27(水) 14:16:18
>>325
まあそんな感じですよね
ウインドウのシステム上完璧にってのは無理なんですかね・・・

あとvistaとか7は問題ないのかもしれないですけど古い2DドローシステムのXPはどうしても

327 :デフォルトの名無しさん:2010/01/27(水) 14:50:59
>>324
フォームのダブルバッファはあくまでもフォームに対する設定だからなぁ
そのコントロールを派生し、コンストラクタにおいて
this.SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
this.SetStyle(ControlStyles.AllPaintingInWmPaint, True)
をやってみるといい。

328 :デフォルトの名無しさん:2010/01/27(水) 14:51:43
あ、True ではなく true ね

329 :デフォルトの名無しさん:2010/01/27(水) 15:00:22
>>327>>328
おお、まったくちらつかないw

Direct2DでやれることはほぼできるしAAかけたりできるのにちらつきがあることで
あきらめてたのがあったんですがこれでできそうです

330 :デフォルトの名無しさん:2010/01/27(水) 15:23:11
>>329
感謝を忘れるんじゃねえw

331 :デフォルトの名無しさん:2010/01/27(水) 15:28:30
>>330
そうでした
感激のあまりちょっと先走ってしまった

>>327>>328
ありがとうございます。

332 :デフォルトの名無しさん:2010/01/27(水) 15:46:56
>>254
遅レスだけどStrCmpLogicalWというのがある。

333 :デフォルトの名無しさん:2010/01/27(水) 16:04:56
>>254
ラムダ書けるバージョンなら
tring[] dat = {"003.dat", "01.dat", "006.dat", "0005.dat"};
Array.Sort(dat, (a, b) => int.Parse(a.Replace(".dat", "")) - int.Parse(b.Replace(".dat", "")));
foreach(string s in dat)
{
Console.WriteLine(s);
}

334 :デフォルトの名無しさん:2010/01/27(水) 16:07:16
sが抜けてた。
string[] dat = {"003.dat", "01.dat", "006.dat", "0005.dat"};


335 :デフォルトの名無しさん:2010/01/27(水) 16:20:17
>>333-334
お前はレスの前後ぐらい追わんかい
>>258

336 :デフォルトの名無しさん:2010/01/27(水) 16:20:18
Color.Blackとか色を指定している所を、テキストァイルにセーブして、次ぎの時に再現したいんだけど、
"Black"とかstringで保存しておいて、次ぎに読み込んだ時に、Color.Blackが簡単に実現できる方法はなんでしょうか?
もちろん色は任意の色ですが

337 :デフォルトの名無しさん:2010/01/27(水) 16:21:41
XmlSerializerで列挙体シリアライズできなかったっけ
普通に

338 :デフォルトの名無しさん:2010/01/27(水) 16:22:33
それはRGBの3値で保存してはだめなの?
名前のある色ばかりじゃないと思うんだが

339 :デフォルトの名無しさん:2010/01/27(水) 16:26:20
ColorTranslator.ToHtml <-> ColorTranslator.FromHtml とか?

340 :デフォルトの名無しさん:2010/01/27(水) 16:27:02
>>336
Color.FromNameで出来ると思われ。

341 :デフォルトの名無しさん:2010/01/27(水) 16:30:36
>>340
それ採用させていただきます

342 :デフォルトの名無しさん:2010/01/27(水) 19:27:54
>>252
それをこの前、別スレで言ったら思いっきりバカにされたよ。

343 :デフォルトの名無しさん:2010/01/27(水) 19:39:51
C#では参照という言葉を参照パラメータに与えられた引数とハンドルの
両方の意味で使うからややこしい

344 :デフォルトの名無しさん:2010/01/27(水) 20:17:26
>>343
英語でもそうなの?
お前が新用語つくっちゃえ!

345 :デフォルトの名無しさん:2010/01/27(水) 20:41:05
参照型は reference type 。
参照渡しは is passed by reference だからな。
英語レベルでも特に区別されてないのは確か。

出典はそれぞれこれ。
http://msdn.microsoft.com/en-us/library/14akc2c7.aspx
http://msdn.microsoft.com/en-us/library/t63sy5hs.aspx

346 :デフォルトの名無しさん:2010/01/27(水) 21:01:42
reflectorの使い方よくわかんね
VBで作られたソフトからC#のソース抜き出すだけなのにうまくできない

347 :デフォルトの名無しさん:2010/01/27(水) 21:02:44
とんだマヌケさんだ

348 :デフォルトの名無しさん:2010/01/27(水) 21:08:31
笑いたきゃ笑えよちくしょう^^;

349 :デフォルトの名無しさん:2010/01/27(水) 21:38:44
>>315
> JavaとかC#の参照型って結局ポインターみたいなもんだからねぇ。
> ポインターの値渡しに相当。

んな〜こったない。
ポインタの値渡しならポインタのポインタを渡すということも可能だが
C#の参照渡しはそんなことはできない。
まさに「参照渡し」そのものだ。

350 :デフォルトの名無しさん:2010/01/27(水) 22:04:50
マネージヒープ上に存在するオブジェクトの実体にアクセスするためのハンドルの値渡し
終了

351 :デフォルトの名無しさん:2010/01/27(水) 22:38:28
(゚Д゚)ハァ?

352 :デフォルトの名無しさん:2010/01/27(水) 22:55:39
VMの管理上は参照の値渡しってのはハンドルのコピーでしょ

353 :デフォルトの名無しさん:2010/01/27(水) 23:13:39
1.
クリックワンスという機能でインターネットからダウンロードできたのは良かったのですが、
バージョンが新しくなるたびに新しい世代の別ディレクトリを追加していくので、不要な古いフォルダやファイルが累積していくみたいです。
このファイル増殖を回避する方法を教えてください。

354 :デフォルトの名無しさん:2010/01/27(水) 23:45:59
しません。

355 :デフォルトの名無しさん:2010/01/28(木) 00:22:55
します。

356 :デフォルトの名無しさん:2010/01/28(木) 00:44:52
しますん。

357 :デフォルトの名無しさん:2010/01/28(木) 01:44:54
そもさん。

358 :デフォルトの名無しさん:2010/01/28(木) 01:54:42
ただではそもさん

359 :デフォルトの名無しさん:2010/01/28(木) 03:34:31
テキストファイルの途中の行を削除したいと思っています。

その場合はまずテキスト全体をReadLineで行ごとに読み込み、
不要な行の部分をRemoveしたのち、あらためてWriteLineで
同名ファイルに「新規保存」をする手順を取る必要がありますか?

360 :デフォルトの名無しさん:2010/01/28(木) 06:13:35
あります

361 :デフォルトの名無しさん:2010/01/28(木) 07:37:48
ものすごく初歩的なことなんですが、疑問に思ったので質問させてください

C言語でint *p;と宣言したあとpに何も代入せずに
scanf("%d", p);などとしてpを使っていいのでしょうか?
それともint a;と宣言してp = &a;としてからではないといけないのでしょうか?

362 :デフォルトの名無しさん:2010/01/28(木) 07:42:46
>>361
C言語のスレッドへどうぞ
ここはC#だ

363 :361:2010/01/28(木) 07:44:29
>>362
ごめんなさい
完全に見間違えてました

364 :デフォルトの名無しさん:2010/01/28(木) 08:23:15
>>363
まあ・・・許してやるよ

365 :デフォルトの名無しさん:2010/01/28(木) 10:10:11
TreeViewにデータを渡す前にTreeNodeだけでツリーを作る場合
TreeViewに相当するNodeを作らずに管理する方法はありますでしょうか?

渡したいのは

data1
 data1_1
  ・・・・
 data1_9
data2
 data2_1
 data2_2
 data2_3
data3
 data3_1
 data3_2

というデータなんですが・・・

data
 data1
  data1_1
   ・・・・
  data1_9
 data2
  data2_1
  data2_2
  data2_3
 data3
  data3_1
  data3_2
こんな感じにするしかないのでしょうか?

366 :デフォルトの名無しさん:2010/01/28(木) 10:27:57
ルートはList<TreeNode>でいいんじゃないの

367 :デフォルトの名無しさん:2010/01/28(木) 10:51:30
treeview.nodesと同じ型を使えば…とかは考えてみなかったわけ?

368 :デフォルトの名無しさん:2010/01/28(木) 10:58:50
TreeNodeCollectionは外からインスタンス作れないぞ
どうせNodesは取得専用だから同じ型を使ったところで無意味だし

369 :デフォルトの名無しさん:2010/01/28(木) 11:06:18
アプリケーション終了時等にCheckedListBoxの内容(項目、並び順、チェック状態
CheckedListBox.ObjectCollection, CheckedListBox.CheckedItemCollection?)
を保存し、次回の実行で内容を復元したいと考えています。

バインドすることが出来れば楽だったのですが、CheckedListBoxはデータバインドに対応していないらしく、
どのように実装するのが妥当だろうかと悩んでいます。
アプリケーション設定等に簡単に書き出す方法などあるでしょうか?


370 :デフォルトの名無しさん:2010/01/28(木) 11:09:59
項目・チェック状態
のクラスをList<>にでも突っ込んでシリアライズ

復帰させる時にデシリアライズかけてListの上から項目突っ込んでチェックを設定

と安易にレスしてみる

371 :デフォルトの名無しさん:2010/01/28(木) 11:16:55
安易なレスはいりませんから

372 :デフォルトの名無しさん:2010/01/28(木) 11:22:27
XMLとかだったらたいした手間じゃないだろ
シリアライズはトラブルの元なのでお勧めしない

373 :デフォルトの名無しさん:2010/01/28(木) 11:27:27
今、他人のソースを読んでいるんですが、
Thread.Sleep(とかStreamReaderのclose(とかも
個別のtryとcatchで囲ってあるんです。

今まで、そんなこと考えたことも無かったんですが、
そうするべきなんですかね?

絶対に例外を投げないメソッドは存在しないのでしょうか?



374 :デフォルトの名無しさん:2010/01/28(木) 11:35:19
基本はドキュメントに書いてあって対処可能であればどこかの段階でキャッチ
ただし,明らかにメソッドの使い方が間違っているために発生する類の例外は
キャッチ禁止

375 :デフォルトの名無しさん:2010/01/28(木) 11:44:54
>>374
それは分かるんですが、ドットネットフレームワークのメソッドが
例外を出す出さないはどのドキュメントに書いてあるのでしょうか?

StreamReaderのreadで何か起これば、例外は出るでしょうが、
closeでは出るかどうか‥‥。何が起こっても出ない気が‥‥

376 :369:2010/01/28(木) 11:49:52
>>370, 372
XML出力時にチェック項目を他に一旦吐き出して−、ですか。
シリアライズやら、或いはItemsを一旦string辺りに吐き出して復帰、とベタにやるしかないですかね。

>>371
思いつきレスでもアイディア投げて貰えるだけでありがたいですし、
それを明記してくれてたら一層のこと、何も問題は無いです。


項目数自体は20程度なものなので、処理速度等で問題になることは無いのですが、
スマートな方法が無いものかと無駄に考え込んでしまいます。


377 :デフォルトの名無しさん:2010/01/28(木) 11:54:45
>>375
MSDNに書いてあるだろ。
結論から言えばClose()だけをtryで囲んでる奴はアホ。
using使え。

378 :デフォルトの名無しさん:2010/01/28(木) 12:02:49
>>366
検討してみます

>>367
それってつまりTreeNodeのことでは?

379 :デフォルトの名無しさん:2010/01/28(木) 12:08:51
>>378
TreeView.Nodesプロパティの型はTreeNodeではなくTreeNodeCollection。
ただ、ルートにList<T>などのコレクションを使うよりも
TreeNodeを使ったほうがコードは綺麗に書ける。(処理が共通になるから)

380 :デフォルトの名無しさん:2010/01/28(木) 12:11:44
>>379
なるほどそうですか

381 :デフォルトの名無しさん:2010/01/28(木) 12:46:09
>>380
こらこらw
お前はだれだw

>>379
なるほど
じゃあTreeNodeを構築する側でAddRangeでそのまま渡せる
ようにするくらいしかないんですね・・・

382 :369:2010/01/28(木) 12:52:50
>>370, 372
結局LINQ使ってXMLに書き出し、読み込むことにしました。
どうもありがとうございました。


383 :デフォルトの名無しさん:2010/01/28(木) 12:52:56
Windowsフォームアプリケーションを作っていて、EXEアイコンをデスクトップに置きましたが、アイコンをクリックするたびにその数だけフォームが立ち上がります。

1つのみにするにはどうすれば良いですか?

384 :デフォルトの名無しさん:2010/01/28(木) 12:55:18
>>383
多重起動禁止
http://dobon.net/vb/dotnet/process/checkprevinstance.html

385 :デフォルトの名無しさん:2010/01/28(木) 13:32:17
MyClassをクラスとし、

for (int i = 0; i < 100; i++)
{
  MyClass mc = new MyClass();
  ・・・・
  (処理)
  ・・・・
}

と、for文の中でひたすらクラスを生成しつづけるプログラムはお行儀の悪いプログラムでしょうか?
for文の最後の方でクラスインスタンスmcを削除する必要はありませんか?


386 :デフォルトの名無しさん:2010/01/28(木) 13:35:32
作らないといけないのなら全然悪くないです
勝手にGCされるので削除の必要もない

ところで、処理って何をするつもりなん

387 :デフォルトの名無しさん:2010/01/28(木) 14:13:54
そうですか、削除する必要無しですか。ありがとうございます。

388 :デフォルトの名無しさん:2010/01/28(木) 16:17:27
今までコントロールのイベントハンドラの登録はデザイナー任せだったので
気がつかなかったのですが、動的に自分で登録する際にTABキーx2回で
イベントハンドラの登録から関数部分の作成までやってくれるなかに

throw new NotImplementedException();

という一文が入るりますがこれはなんなのでしょうか?

389 :デフォルトの名無しさん:2010/01/28(木) 16:26:06
おまえはそんな疑問が出てきたら毎回ここで聞くつもりか?

390 :デフォルトの名無しさん:2010/01/28(木) 16:26:42
そのまま読めよ
実装されていないことを示す例外とクラス名が示してるだろうが
インテリセンス表示してみろ
書いてあるだろうが

391 :デフォルトの名無しさん:2010/01/28(木) 16:28:09
実装したら消すんだよ

392 :デフォルトの名無しさん:2010/01/28(木) 16:31:06
IDEが生成したコードのせいでコンパイルが通らなくなるのはまずいので
とりあえず誤魔化すために例外投げてるんだよ
デリゲートが戻り値を持ってる場合は中身が空だとコンパイルエラーになってしまう

393 :デフォルトの名無しさん:2010/01/28(木) 16:41:26
いかに初心者でもこれは死ぬべき

394 :デフォルトの名無しさん:2010/01/28(木) 17:18:20
わからないコードがあったらクリックしてF1を押しなさい

395 :デフォルトの名無しさん:2010/01/28(木) 17:21:44
一人回答すれば十分じゃないのか?

396 :デフォルトの名無しさん:2010/01/28(木) 18:06:42
自前のプログラムでファイルを読み書きする際、そのファイルが他のエディタで開かれていたり
他のプログラムで処理されている最中かどうかを調べるには

リードオンリーフラグ(FileAttributes.ReadOnly)

が立っているかどうかを調べれば判別がつくとおもってよろしいでしょうか?


もしこのフラグが立っているようでしたらそのフラグが消えるまでwhileループで待ち続け、
消えたことを確認した後でファイルにアクセスするようプログラムを書けば安全にファイル
アクセスできるようになりますか?

397 :デフォルトの名無しさん:2010/01/28(木) 18:13:40
いいえ

398 :デフォルトの名無しさん:2010/01/28(木) 18:18:00
:(;゙゚'ω゚'):

399 :デフォルトの名無しさん:2010/01/28(木) 18:26:31
>>396
それはWindowsのファイルの読み取り属性であって
ファイルの排他制御とは関係ない。

400 :デフォルトの名無しさん:2010/01/28(木) 18:27:04
>>396
それはファイルのプロパティで変更できる読み取り専用属性のことだよ

401 :デフォルトの名無しさん:2010/01/28(木) 18:28:22
>>396
http://dobon.net/vb/dotnet/file/fileshare.html

402 :デフォルトの名無しさん:2010/01/28(木) 19:01:08
> http://dobon.net/vb/dotnet/file/fileshare.html

そういうことでしたか、ありがとうございます。

403 :デフォルトの名無しさん:2010/01/28(木) 22:34:06
string配列を返すメソッドを作っています。

private string[] test()
{



string[] s = {"aa", "bb", "cc"}
return s;
}

最後の二行をもっと完結に一行にまとめることは出来ないでしょうか?
わざわざインスタンスsを宣言せずに済むようにしたいです。

404 :デフォルトの名無しさん:2010/01/28(木) 22:36:50
一番短いのは
return new[] { "aa", "bb", "cc" };
省略せずに書けば
return new string[] { "aa", "bb", "cc" };

405 :デフォルトの名無しさん:2010/01/28(木) 22:51:49
そもそも>>403ってコンパイル通るの?

406 :デフォルトの名無しさん:2010/01/28(木) 22:53:43
>>404
コンパイル通りました。
ありがとうございました。

407 :デフォルトの名無しさん:2010/01/28(木) 22:54:25
>>405
すみません、下から2行目、セミコロンが抜けてましたね

408 :デフォルトの名無しさん:2010/01/28(木) 23:25:02
つかそれだけのメソッドとかいらんだろ

409 :デフォルトの名無しさん:2010/01/28(木) 23:29:13
test()の内容に突っ込んでどうすんだお前は

410 :デフォルトの名無しさん:2010/01/28(木) 23:45:59
処理結果で違う配列を返すならありだろ。たぶん。

411 :デフォルトの名無しさん:2010/01/28(木) 23:46:31
今日発売のゲームでDEBUG消し忘れとか
コワイネー

412 :デフォルトの名無しさん:2010/01/29(金) 07:05:31
new[]だけでいいのか
いいこと知った

413 :デフォルトの名無しさん:2010/01/29(金) 10:34:12
string[] s = {"aa", "bb", "cc"} って右辺の型を省略するのは
初期のC#どころかCの時代からある構文だけど
今となっては浮いてるよな

414 :デフォルトの名無しさん:2010/01/29(金) 10:40:15
>>413

今でもintとかstringの場合使うけどな

まああまりにも初期化する項目増えるとなると外部ファイルに出すとかするけど

そういえばCのころのようにソースファイル1本がまるまる初期化の内容で
コンパイル時にプログラム内に埋め込むとかどうやるんだろう

415 :デフォルトの名無しさん:2010/01/29(金) 10:53:41
最近始めたのだけど、ネット対戦できるゲーム作りたい場合はこの言語で大丈夫?

416 :デフォルトの名無しさん:2010/01/29(金) 10:55:05
普通にコンパイル通るようにクラス定義の中に書けばいいだろ
クラスが分かれるのが嫌ならpartial
class Hoge { string[] s = とか入れずに値だけ書きたいなら
外部のスクリプトをビルド前のイベントで走らせるとか
msbuildのタスク作るとかしてコードを生成する

417 :デフォルトの名無しさん:2010/01/29(金) 10:56:11
ネット対戦ゲームの内容次第
将棋のような打った手を通信する程度なら十分だけど、3Dゲームのようなものすごく短い時間での
通信を要求される場合は.netじゃあむりかも

418 :デフォルトの名無しさん:2010/01/29(金) 10:57:55
いや通信なんかそれ自体ものすごく時間のかかる処理だから
入り口と出口が.NETだったところでほとんど関係ない

419 :デフォルトの名無しさん:2010/01/29(金) 10:58:45
ありがとう、考えてるのは単純なものなので頑張ってみまする

420 :デフォルトの名無しさん:2010/01/29(金) 10:58:55
>>417
>3Dゲームのようなものすごく短い時間での通信を要求される場合は.netじゃあむりかも

XNAディスってるんですか?

421 :デフォルトの名無しさん:2010/01/29(金) 11:30:40
jane styleのスレリストみたいなコントロールが探してます
listboxではないと思うんですけど、ありますか?ツールボックスに、
教えてください

よろしくお願いします

422 :デフォルトの名無しさん:2010/01/29(金) 11:34:34
>>421
ListViewだよ
http://www.atmarkit.co.jp/fdotnet/dotnettips/258listviewadd/listviewadd.html

View を Details にしてカラムヘッダーに項目入れたあと
ListItem入れていけば表示されるよ

423 :421:2010/01/29(金) 12:02:41
>>422
なるほど、ありがとうございます

424 :デフォルトの名無しさん:2010/01/29(金) 15:01:15
エラーおこして終了したときデバッグたちあげると
ヒープが壊れてますって言われるんですけど
なにしたらヒープ壊れるの?
どこでエラーが起きてるかもわからないし困ってます
だれか助けて

425 :デフォルトの名無しさん:2010/01/29(金) 15:08:04
アンマネージコードを呼んでるならその中の不正なメモリアクセスが原因
そうでないならMS社員にしかわからん

426 :デフォルトの名無しさん:2010/01/29(金) 15:10:23
API使って無くてもカスタムコントロール使うとプロジェクトがおかしくなるってあるな

427 :デフォルトの名無しさん:2010/01/29(金) 15:19:49
>>426
マジ?一回もないんだけど たまになるんならこえぇな・・・

428 :デフォルトの名無しさん:2010/01/29(金) 15:24:44
動的に標準コントロールを継承したクラスを管理してGUIを変更しまくれる
アプリ書いたけどその手のはよくプロジェクトが壊れる

ひどいケースはプロジェクトを開く途中でIDEが不正終了起こして再起動とか

429 :デフォルトの名無しさん:2010/01/29(金) 15:46:54
>>428
なるほど完全なカスタムじゃなく継承元の動きを強引にいじろうとする場合どっかで不整合起きて落ちたりするような感じなのか・・・
気にとめとこう・・・・サンクス

430 :デフォルトの名無しさん:2010/01/29(金) 18:09:01
コントロールコンテンツが表示領域越えた際にでるスクロールバーとは別に
スクロール機能を実装しようと思うのですがAutoScroll = falseにすると
越えた部分は作られてないようでスクロールを受け付けません

別のスクロール機能というのはAPI経由でスクロールがあったよとメッセージを投げる形です。

対策としてはAutoScroll = trueにした上でAPIのShowScrollBarで大きさを変えるとかしか
方法はないのでしょうか?

431 :デフォルトの名無しさん:2010/01/29(金) 19:49:25
>>428
それ本当にカスタムコントロールを含むプロジェクト(じゃなくてソリューションだと思うが)
一般について言えることか?

間違いなく君の勘違いだと思うね。
少なくとも俺のところではそんな問題が起きたことは一度もないけど。

デザインモード時を意識しないアホなコード書いてるか、
そうじゃなきゃ環境そのものの問題でしょ。

432 :デフォルトの名無しさん:2010/01/29(金) 20:05:18
>>431
デザインモードもなにも一切デザインモードのお世話にならないコードでもそれだよ

たとえばLabelを継承したLabelExというクラスを作って自分がよく書くパターンコードを
仕込んでるだけだよ(たとえばマウスイベントで自分自身をつまんで移動できるとか

それをデザイナー使わずに動的に確保して親になるコントロールに追加してるだけだけど

433 :デフォルトの名無しさん:2010/01/29(金) 20:08:10
リソース周りを不用意に消すと壊れるよたいてい壊れる前に警告が出るけど

434 :デフォルトの名無しさん:2010/01/29(金) 20:28:10
>>413
> string[] s = {"aa", "bb", "cc"}

今となっては浮いてるだ?
じゃああんたはどうやって宣言してるのか教えてくれ

435 :デフォルトの名無しさん:2010/01/29(金) 20:40:32
>>413じゃないが
それ以外に考えられる初期化って、
string[] s = new string[] { "test" };
これしないと思う。

436 :デフォルトの名無しさん:2010/01/29(金) 21:23:05
デバッガで表示されるスレッドの番号?を取得する方法を教えてください
例えば[4036]メインスレッドの4306です
ManagedThreadIdは全然違う数字でした

437 :デフォルトの名無しさん:2010/01/29(金) 21:24:30
ハンドルじゃないの?

438 :デフォルトの名無しさん:2010/01/29(金) 22:02:32
ハンドル?なにそれ?

AppDomain.GetCurrentThreadId()で取得できました
使うなっていわれるけれど・・・

439 :デフォルトの名無しさん:2010/01/29(金) 22:05:31
アンマネージのほうか。

440 :デフォルトの名無しさん:2010/01/29(金) 23:43:53
プログラムの各部位に条件次第で実行するか実行しないかが決まるコードが埋め込まれています。
自分で各部位に散らばったコードをコメントアウトしたりコメントアウトを外したりするのは面倒なうえ
間違いのもとにもなります。

一括で各部位に散らばったコードを実行するかしないかを選べるようにしたいのですが
そういうときはみなさんならどうされますか?

441 :デフォルトの名無しさん:2010/01/29(金) 23:44:52
デリゲートにして適宜入れ替え

442 :デフォルトの名無しさん:2010/01/29(金) 23:45:21
#if〜#endif

443 :デフォルトの名無しさん:2010/01/29(金) 23:45:36
#if

444 :デフォルトの名無しさん:2010/01/29(金) 23:50:28
if DEBUG以外でそういう組み方するのはいろいろやばそうなので根本的に改善する

445 :デフォルトの名無しさん:2010/01/29(金) 23:56:05
コメントアウトしなきゃいい。

446 :デフォルトの名無しさん:2010/01/29(金) 23:58:17
>>426
デザイナでの実行中に実行時と違ってハンドルがなかったりとか
違いがあるせいで例外起こしたりするとVS2008とかすぐ落ちることもある
まあ原因の99.9%は自分のコードにあるんで、デバッガからVS立ち上げて
カスタムコントロール貼り付けてステップ実行して原因調べるけどね

447 :デフォルトの名無しさん:2010/01/30(土) 00:11:58
> #if〜#endif

早速使ってみますノシ

>>444
> if DEBUG以外でそういう組み方するのはいろいろやばそうなので根本的に改善する

if文を作って条件付き動作するべきでしょうか?

448 :デフォルトの名無しさん:2010/01/30(土) 00:17:07
ていうかVSで再コンパイルしないと「モード変更」ができないプログラムってどうなの?って感じ

449 :デフォルトの名無しさん:2010/01/30(土) 00:19:57
そもそも、なんのためにそんなことをしたいのかわからん。

ビルドし直してテスト、じゃ、カバレッジも上がらんし。

450 :デフォルトの名無しさん:2010/01/30(土) 00:30:28
>>440
その条件って何だ?単にテスト用とかじゃないなら
コメントアウトや#ifで制御するのはよくない。

451 :デフォルトの名無しさん:2010/01/30(土) 00:31:27
じゃあどうするの

452 :デフォルトの名無しさん:2010/01/30(土) 00:35:39
>>451
外部の設定ファイルとかプログラム自体の挙動を
変える必要のない方法でやるべき。

453 :デフォルトの名無しさん:2010/01/30(土) 00:39:08
似たようなコードを使うだけならその部分だけまとめてプロジェクトに書き出せばいい
単純な入出力変更なら起動時にスイッチでもつければいい
同じような機能だけど細部が違うというなら基本クラスと派生クラスを作ればいい

454 :デフォルトの名無しさん:2010/01/30(土) 00:41:20
自作のクラスに30個くらいのメソッドがあるんだけどこれって大杉?

455 :デフォルトの名無しさん:2010/01/30(土) 00:42:15
そーでもない。

456 :デフォルトの名無しさん:2010/01/30(土) 00:45:04
>>455
そう?
そう言ってもらえるとなんだか元気が出てきた(゚∀゚)YO!

457 :デフォルトの名無しさん:2010/01/30(土) 00:48:48
>>456
メソッドの数が少ないかわりに、1つのメソッドが
数百行あるようなクラスこそ最悪

458 :デフォルトの名無しさん:2010/01/30(土) 00:51:51
>>457
メソッドの数とメソッド内の行数ってトレードオフの関係にないでしょ。
知ったようなこと言っちゃダメw

459 :デフォルトの名無しさん:2010/01/30(土) 00:54:20
MVC(WPFだとMVVMとかいうのか)を意識して綺麗にクラスわけできてれば
それなりに綺麗なソースになると思うけどな

460 :デフォルトの名無しさん:2010/01/30(土) 01:01:02
>>459
30個ほどのメソッドは全て同じクラス内の他のメソッドを呼び出してたりするから
むげに他のクラスに追い出したりすることができないんだよね。

継承を使うという方法もあるけどそれだと親クラスのフィールド値とか直接アクセス
できなくなるから面倒なことになる。

というわけでメソッドは全て同じクラスに一緒くたにしてしまいましょうという現状に
落ち着いてしまった・・・

いいんだよね、これで(´・ω・`)

461 :デフォルトの名無しさん:2010/01/30(土) 01:01:26
>>458
大抵はトレードオフの関係にあるが?特に初心者のプログラマーなら

462 :デフォルトの名無しさん:2010/01/30(土) 01:05:22
機能次第だな。

たとえば、ログ出力するだけの単純なクラスだとしたら、30個のメソッドは多すぎる気がする。

463 :デフォルトの名無しさん:2010/01/30(土) 01:06:25
5〜7かせいぜい10でお願いします

464 :デフォルトの名無しさん:2010/01/30(土) 01:08:19
そもそも言ってるメソッドがpublicかprivateかによって違う
質問者は区別してなさそうだが

465 :デフォルトの名無しさん:2010/01/30(土) 01:10:14
公開メソッドが30だと発狂するなw
どれだけ一つのクラスに動詞がつまっちゃってるの?とか思うw

466 :デフォルトの名無しさん:2010/01/30(土) 01:10:34
>>464
publicだったら10個くらいかな

467 :デフォルトの名無しさん:2010/01/30(土) 01:12:37
実はひとつのメソッド×オーバーロード29個、とかだったら泣けるな。

468 :デフォルトの名無しさん:2010/01/30(土) 02:06:23
ホイールの常駐監視をやりたいのですが、
非アクティブ時にForm以外の部分にマウスイベントが送られたとき、
どうやってイベントハンドリングすればいいのでしょうか?
よろしくお願い致します。

469 :デフォルトの名無しさん:2010/01/30(土) 02:11:33
ローレベルマウスフック

470 :デフォルトの名無しさん:2010/01/30(土) 11:41:23
ボタンを押した際に起動するスレッドから起動元のFormに貼り付けたtextBoxに
ログを表示させる場合はどうすればいいのでしょうか?

インスタンスを渡して書き込もうとしましたがエラーになってしまいました。

471 :デフォルトの名無しさん:2010/01/30(土) 11:44:51
通常のグローバルフックは対象プロセス内のコンテキストで実行される必要があるから
C++とかでライブラリを作らないと行けないけど
マウスホイールならC#(CLR)で実行出来る不思議

472 :デフォルトの名無しさん:2010/01/30(土) 11:45:00
C# スレッド コントロール でググれ

473 :デフォルトの名無しさん:2010/01/30(土) 11:46:57
>>472
ありがとうございます。

474 :デフォルトの名無しさん:2010/01/30(土) 11:53:43
コントロールはそれを生成したスレッドからしか安全に操作できないような仕様になっているからね
別スレッドからコントロール生成元のスレッドを経由して処理を行うにはInvoke()delegate()を使うよろし

475 :デフォルトの名無しさん:2010/01/30(土) 12:09:10
>>474
そういうことなんですね

おかげでログをtextboxに表示できました。

476 :デフォルトの名無しさん:2010/01/30(土) 12:48:14
MSDNより

コレクションが変更されない限り、List では、複数の読み込み操作が同時に発生しても問題ありません。
コレクションの列挙処理は、本質的にはスレッド セーフな処理ではありません。
まれに 1 つ以上の書き込みアクセスによって列挙処理で競合が発生する場合、確実にスレッド セーフにするには、

列挙処理が完了するまでコレクションをロックします。 <============== A

コレクションに対し複数のスレッドがアクセスして読み取りや書き込みを行うことができるようにするには、

独自に同期化を実装する必要があります。 <==================== B


AとBは同じ意味ですか?(つまりロックしろっていうこと?)
それともBはロックとはちがう方法で同期化しないといけないということですか?

477 :デフォルトの名無しさん:2010/01/30(土) 13:23:08
>>476
同じ意味

478 :デフォルトの名無しさん:2010/01/30(土) 13:43:36
ありがとう

479 :デフォルトの名無しさん:2010/01/30(土) 15:37:42
どういたしまして

480 :デフォルトの名無しさん:2010/01/30(土) 15:41:38
比較演算子にマッチする正規表現で教えてください。

"<"にはマッチするが"<<"にはマッチしない、その逆の
">"にはマッチするが">>"にはマッチしないという部分
がうまくいっていないようなんです。
どう記述すればいいですか?

if (Regex.IsMatch(str, "(!=|==|<[^<]|>[^>]|<=|>=)"))
{
//条件式です
}
else
{
//条件式ではありません
}


481 :デフォルトの名無しさん:2010/01/30(土) 15:44:39
正規表現スレいきます

482 :デフォルトの名無しさん:2010/01/30(土) 15:46:24
<[^<]

これを()で囲む

483 :デフォルトの名無しさん:2010/01/30(土) 15:49:14
あら

484 :デフォルトの名無しさん:2010/01/30(土) 16:32:12
>>470
BeginInvokeでスレッド起動すれば大丈夫

485 :デフォルトの名無しさん:2010/01/30(土) 16:33:39
>>476-478
同じと言えばまあ大きいくくりでは同じと言えなくもないが
はっきり言って注意の観点が違うよ。

Bは分かりやすいが、AはBのような単純な解決はできない。

486 :デフォルトの名無しさん:2010/01/30(土) 16:38:54
あ、ちょっと読み落としてた。
使う側でロックという意味では同じだった。

Bはコレクション自体を同期化するとかの単純なやり方も可能。
しかしAはそうはいかない。
また、コレクションの使い方によってはBのような単純な同期化ではすまない場合もある。


487 :デフォルトの名無しさん:2010/01/30(土) 16:39:21
Bは一般論でAはその代表例だろ

488 :デフォルトの名無しさん:2010/01/30(土) 16:40:34
はい?


489 :デフォルトの名無しさん:2010/01/30(土) 16:45:22
いや487で合ってると思う

490 :デフォルトの名無しさん:2010/01/30(土) 16:49:29
代表例に列挙を出すのは微妙におかしいと思うぞ。


491 :デフォルトの名無しさん:2010/01/30(土) 16:51:43
おかしくないよ
IEnumeratorの見りゃ列挙が実はコレクションクラスに書き込んでる(Reset/MoveNext)って分かるだろ

492 :デフォルトの名無しさん:2010/01/30(土) 16:53:40
そういうことではなくてだな

493 :デフォルトの名無しさん:2010/01/30(土) 18:02:35
一つのクラスがもつ最大のパブリックメソッド数の推奨値を決めよう。

7つ。



494 :デフォルトの名無しさん:2010/01/30(土) 18:17:48
それって1クラス100行まで、ってのと同じ空気を感じるからやめようぜ。

495 :デフォルトの名無しさん:2010/01/30(土) 18:19:41
1クラス100行じゃ何も出来ないと思うが

496 :デフォルトの名無しさん:2010/01/30(土) 18:32:53
1クラス1000行でもいいよ。なんかそういう区分け意味ないからやめようぜって話。

497 :デフォルトの名無しさん:2010/01/30(土) 18:43:06
そんな事やってないで優れた奴が逐一チェックしろよ

498 :デフォルトの名無しさん:2010/01/30(土) 18:51:51
7って言う奴は本を鵜呑みにするタイプ

499 :デフォルトの名無しさん:2010/01/30(土) 19:03:08
>>491
はい?

500 :デフォルトの名無しさん:2010/01/30(土) 19:04:32
そんなわけないのはちょっと考えれば分かりそうなもんだがな

501 :デフォルトの名無しさん:2010/01/30(土) 20:13:05
<?xml version="1.0" encoding="UTF-8"?>

<ResultSet xmlns="urn:yahoo:jp:jlp:KeyphraseService" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:yahoo:jp:jlp:KeyphraseService http://jlp.yahooapis.jp/KeyphraseService/V1/extract.xsd">
<Result>
<Keyphrase>馴染み</Keyphrase>
<Score>100</Score>
</Result>
<Result>
<Keyphrase>会津若松</Keyphrase>
<Score>85</Score>
</Result>
<Result>
<Keyphrase>真なり</Keyphrase>
<Score>35</Score>
</Result>
</ResultSet>
からKeyphraseのみを抜き出すにはどうしたらよいですか?

XDocument xdoc = XDocument.Parse(html);
var query = from ResultSet in xdoc.Root.Elements()
select new{
Keyword = ResultSet.Element("Result").Attribute("Keyphrase").Value
};
string contents = "";
foreach (var q in query) {
contents += q.Keyword + "\r\n";
}



502 :デフォルトの名無しさん:2010/01/30(土) 20:40:07
とりあえず2点
・Keyphrase属性などどこにもない
・範囲変数ResultSetの中身がResultSet要素じゃない

503 :デフォルトの名無しさん:2010/01/30(土) 21:02:08
var query = xdoc.Root.Elements();
にしてデバッガで何が列挙されるか見てみたらいいよ

504 :デフォルトの名無しさん:2010/01/30(土) 21:09:15
XMLの属性とは次の例のAttributeのこと

<Element Attribute="attributeValue">elementValue</Element>

501が言ってるのは要素(Element)

505 :デフォルトの名無しさん:2010/01/30(土) 21:39:38
xdoc.selectNodes(".//Keyphrase").text()

506 :デフォルトの名無しさん:2010/01/30(土) 22:51:54
>>469
できた
グローバルフックって言ってくれたらすぐだったのにw

まぁありがとう

507 :デフォルトの名無しさん:2010/01/31(日) 03:43:55
昨日気付いたら1クラスに30個のメソッドが生成されていたとレスしたものだけど
せいぜい一つのクラスしか無いようなプログラムを書くことって可能だし
結構なケースでそれで十分だったりするよね。

でもこれってフィールドはC言語でいうところのグローバル変数みたいなものだし
メソッドもC言語でいう関数とほとんど変わらなくなってしまう。
クラスを使ったオブジェクト指向とは言っても実質的にC言語と何も変わってない。

こういうときってどうしたらオブジェクト指向言語にしたらいいんだろうか?
初心者向きのC#の解説書にはなかなか触れられていないから把握しにくい(´・ω・`)

508 :デフォルトの名無しさん:2010/01/31(日) 04:38:03
別に無理しなくていいでしょ
仕事とかでないのなら

509 :デフォルトの名無しさん:2010/01/31(日) 04:39:22
そのまま成長するとスパゲッティコードのお手本みたいなのが出来上がるなw

うまい人のコード読むのが一番勉強になる。
CodePlexとかに山ほどあるんで興味があるやつを読んでみたら?

510 :デフォルトの名無しさん:2010/01/31(日) 04:53:28
カスみたいなコードも山ほどあるけどCodePrex
有名どころがいいだろうな。

511 :デフォルトの名無しさん:2010/01/31(日) 04:57:57
例えば何が有名すかね

512 :デフォルトの名無しさん:2010/01/31(日) 06:22:25
未熟ものにはどこでクラスを分離したらいいのかという見極めがつかないんだよね。
ここらへんで切り離そうかと思ってもやっぱり元のクラスのフィールドとかメソッドにアクセス
出来た方が便利だから元のクラスに入れておくままにしておくか、となる。

その結果がスパゲティコードよ(´・ω・`)

513 :デフォルトの名無しさん:2010/01/31(日) 07:14:47
その辺のクラス分けって、「これが正解」ってのはなくて、
プログラムの規模やら誰が使うのか、とかで変わってくる。

だから、自分でどんどん失敗して、自分なりの手法を見つけ出せばいいんだと思うよ。

514 :デフォルトの名無しさん:2010/01/31(日) 07:25:30
初心者用にいい参考書教えて下さい
一応javaを大学で習ってたので条件分岐とか繰り返しとか配列とかはわかるけど
(と言っても最終課題で特殊なクラスインポートしてオセロ作った程度、特殊なクラスというのは大学固有のものみたい)
いくつかサイトまわったらjavaで中途半端に知識付いてるからか何がわかって何がわからないのかわからん
川俣晶さんの『究極のC#プログラミング』って本買ったら意味わからなくて泣きそうになった
いくつかのサイトまわった感じだと、クラスの継承とか値型参照型とか.NETとか良くわからなかったのでここも理解できる本がいいです

515 :デフォルトの名無しさん:2010/01/31(日) 08:05:31
Javaのことはいったん忘れて、初心者向けの本でいいじゃん。

516 :デフォルトの名無しさん:2010/01/31(日) 08:39:08
デリゲートと関数ポインタって互換性があるんでしょうか?

Win32APIなどを呼び出すとき、デリゲートを渡すというのが良く分かりません

517 :デフォルトの名無しさん:2010/01/31(日) 08:47:21
呼び出すときって、コールバックとかでしょ?

C/C++ では、関数ポインタがコールバックに使えるけど、.NET ではデリゲートを使う、
って覚えとけばいいんじゃね?

518 :デフォルトの名無しさん:2010/01/31(日) 08:56:47
互換性があるんじゃなくて、自動的に変換されている


519 :デフォルトの名無しさん:2010/01/31(日) 09:44:19
>>515
独習C#2版買ってみます

520 :デフォルトの名無しさん:2010/01/31(日) 10:02:00
制御構造とか配列とかわかるなら、それなりにプログラム書けるでしょ?
あとは、必要に応じて足りないところを補っていけばいいんじゃない?

521 :デフォルトの名無しさん:2010/01/31(日) 10:13:28
独習は本当に文法以外触れてないのと、2.0までしかカバーしてないのが難点
持ってるから言える

522 :デフォルトの名無しさん:2010/01/31(日) 10:42:50
何がダメかじゃなくて何がいいか教えて

523 :デフォルトの名無しさん:2010/01/31(日) 11:06:02
設計の本読むといいんじゃないかな。
オブジェクト指向系の本読むとどの程度に機能分割すればいいか書いてあるよ。
本によっては酷いのもあるから良著って一般的に呼ばれてるのを最初に読んだ方が良いと思う。

・オブジェクト指向入門 原則/コンセプト
http://www.amazon.co.jp/dp/4798111112/
・オブジェクト指向入門 方法論/実践
http://www.amazon.co.jp/dp/4798111120/

ベタに書いちゃったプログラムを程良い粒度に変えていくための実践的な方法はこっち。
こっちは別に原典じゃなくても良いかもしれない。
・リファクタリング
http://www.amazon.co.jp/dp/4894712288/

余裕があったらCode Completeなんかも読んどくと良いと思う。


524 :デフォルトの名無しさん:2010/01/31(日) 11:07:41
リファクタリングは良いよ。
こういう理由でこういう形にすべき、ってのがじゃんじゃか書いてあるし。


525 :デフォルトの名無しさん:2010/01/31(日) 11:19:42
>川俣晶さんの『究極のC#プログラミング』って本買ったら意味わからなくて泣きそうになった
なんで初心者向けの本を探してんのに究極とか書いてある本を買うんだよ。


526 :デフォルトの名無しさん:2010/01/31(日) 11:23:33
「値型参照型とか.NET」はともかくとして、継承がわかってないということは、
Javaの基本もろくにわかってないだろ。

JavaでもC#でもいいから、まずは基本をしっかり抑えろと。

527 :デフォルトの名無しさん:2010/01/31(日) 11:28:02
値型と参照型ってJavaにもあるし

528 :デフォルトの名無しさん:2010/01/31(日) 12:04:17
>>523
ありがとう、すげー高いけどそれだけの価値があるみたいなので買ってみます
>>526
そのとおりであります

529 :デフォルトの名無しさん:2010/01/31(日) 12:09:37
ネットって各言語の文法とかある程度経験のある人が細切れの開発論を学ぶには良い場所なんだけど
現状、体系的な勉強しようと思ったらやっぱ本じゃないと厳しいところがあるな。


530 :デフォルトの名無しさん:2010/01/31(日) 12:10:55
指定したアプリにマウスかキーボードからメッセージが送られたら検知するような機能を検討してます。
アプリの指定はProcess.MachineNameかMainWindowTitleあたりで起動中のアプリから探し出すとして、
メッセージはどうやったら引っ張ってこれるでしょうか?
キーボードのどのキーが押されたか?の情報は必要ないです。
マウスもクリックかスクロールされたときに拾ってくれればいいです。

調べると、SendMessageやらWin32APIを使うとかそういう話が出てきて
自分でコーディングするにはちょっと敷居が高い感じです。

で、グローバルフックで検索かけたら、指定アプリではなくとにかく全部フックしてくれるサンプルが見つかったんで、
これそのまま使って後はカレントウィンドウがどれかを調べればどこにメッセージが送られてるかは一応判断できるな、とは思ったんですが
もっと簡単で効率いいやり方ってあるのでしょうか

531 :デフォルトの名無しさん:2010/01/31(日) 12:13:10
>>530
ない
やりたいことに対する解決方法を見つけてる感じだけどそれを避けてとなるとあきらめろ

532 :デフォルトの名無しさん:2010/01/31(日) 12:25:11
特定のウィンドウでフックしてもいいけど、1アプリでウィンドウ1こじゃないしな

533 :デフォルトの名無しさん:2010/01/31(日) 12:31:31
>>532
うん
もうメッセージ監視のレベルがアプリじゃなくOSと同等のことをしないと無理

モニターしたい部品のハンドルなりを調べて、そこへ送られてくるメッセージを
常に監視もしく間に入ってモニターしながら透過的に送り届けるとかしないと
無理だろし

534 :デフォルトの名無しさん:2010/01/31(日) 12:36:03
>>487
MSDNって文章の書き方へただよね

535 :デフォルトの名無しさん:2010/01/31(日) 12:38:03
「手始めに簡単なアプレットを作ってみよう」→「OS操作の補助を」→「グローバルフックがうんぬん」
その作ろうと思うもの自体から間違ってると思うよ。それならまだ簡単なゲームのほうがまし。

536 :デフォルトの名無しさん:2010/01/31(日) 13:41:03
>>528
完全に個人的な好みだがこれがよかった

オブジェクト指向でなぜつくるのか―知っておきたいプログラミング、UML、設計の基礎知識―
tp://www.amazon.co.jp/dp/4822281957/

537 :デフォルトの名無しさん:2010/01/31(日) 13:54:41
その本は…

538 :デフォルトの名無しさん:2010/01/31(日) 14:05:39
データグリッドビューの、右端の列幅だけ、コントロール幅を超えて右ドラッグして広げることができません。

コントロール幅20
列1の幅10、
列2の幅10
にしています。スクロールモードはBothです。
もともとは2列ともコントロール幅に収まっていますが、列2のみ広げたい場合があります。
その際は列2の幅を右へドラッグして広げてもらい、スクロールバーを利用して閲覧してもらいたいのですが、列2の幅を広げることができません。
列1は広がります。
2つの列コレクションのプロパティに相違はありません。

どうすれば列2を広げることができるでしょうか。
よろしくお願いします。

539 :デフォルトの名無しさん:2010/01/31(日) 14:05:55
正直、日経BPの本で満足できた例しがない
とりあえず継承やら委譲やらの基本的なことが理解できないらな
別なオライリー読んだ方が遠回りでも近道

540 :デフォルトの名無しさん:2010/01/31(日) 14:51:34
「別なオライリー」ってなんだ・・・??

541 :デフォルトの名無しさん:2010/01/31(日) 14:53:40
継承ってそんなに難しいかね

Form系のコントロールで考えるとよくわかると思うけど


hogohoge : Label

とあって何も追加コード書かなければ機能的にはLabelと同じクラスができる

542 :デフォルトの名無しさん:2010/01/31(日) 14:55:19
だからなんだよ

543 :デフォルトの名無しさん:2010/01/31(日) 14:58:57
・どうやってやるか?
-> 簡単

・それで何ができるか?
-> まぁまぁわかる

・何のためにやるか? 効果的にやるためにはどうすればいいか?
-> この辺については難しい

ってことじゃね?

544 :デフォルトの名無しさん:2010/01/31(日) 14:59:35
継承は簡単だと思ってる奴は中級者
継承は難解だと思ってる奴は初心者か上級者

545 :デフォルトの名無しさん:2010/01/31(日) 15:00:46
>>543
設計上の判断は難しいな
書いてる上でこれは多用するから継承クラス化した方がいいなとか

546 :デフォルトの名無しさん:2010/01/31(日) 15:01:52
継承するより委譲した方がいい場合もあるっていうしな。
どういう場合かを簡潔に述べられないからまだまだ初心者なんだけど。

547 :デフォルトの名無しさん:2010/01/31(日) 15:03:30
>>545
多用するだけなら委譲で充分
インターフェースの継承と実装の継承は分けて考えた方がよい

って教科書に書いてありましたー><


548 :デフォルトの名無しさん:2010/01/31(日) 15:03:29
ユーティリティ関数が使いたいばかりに、フォームを継承したような腐ったコードを
見たことがある。

確かに「どうやったら継承ができるか」はわかってるんだろうけど、「継承の使いどころ」を
理解してない例。

549 :デフォルトの名無しさん:2010/01/31(日) 15:03:49
俺は上級者だけど、継承ってそんなに難しく感じないなぁ

550 :デフォルトの名無しさん:2010/01/31(日) 15:04:15
既存のクラスを勝手に継承していいものかよく悩む
そのクラスをフィールドにもつクラスを作るか(しかしこれだと使いづらいかも)、
ヘルパークラスでしのぐか

551 :デフォルトの名無しさん:2010/01/31(日) 15:04:58
むしろ慣れてくると継承を避けるようになるよ

552 :デフォルトの名無しさん:2010/01/31(日) 15:08:57
(1) 合成
(2) 継承
(3) 委譲
(4) 侵略
(5) 奪回
(6) 奔走
(7) 実装
(8) 皇帝

553 :デフォルトの名無しさん:2010/01/31(日) 15:14:05
例えば、豚を継承したと考えてみろ。
途端に継承という概念が理解できる。

554 :デフォルトの名無しさん:2010/01/31(日) 15:14:19
継承にしても委譲にしても必要になったときに
「使わずに実現できないか」を考えるようにすれば
「いつ使えばよいか」も自ずと絞られてくるのではないかな

555 :デフォルトの名無しさん:2010/01/31(日) 15:15:54
>>550
継承することを前提に作られたクラスからしか継承しない
これが一番無難

556 :デフォルトの名無しさん:2010/01/31(日) 15:16:51
>>560
神!神!もっと評価されるべき!!!!111

557 :デフォルトの名無しさん:2010/01/31(日) 15:16:52
つ「ハンマーを持つ人には、すべてが釘に見える」

558 :デフォルトの名無しさん:2010/01/31(日) 15:19:19
継承するか委譲するか?なんてやってる先には
ドメインモデルで設計するかあえてドメインモデル貧血症を選ぶかなんてのが最前線で盛り上ってるんだよな。

オブジェクト指向が銀の弾丸じゃないってのはもう完全に共通認識になってると思う。

559 :デフォルトの名無しさん:2010/01/31(日) 15:22:09
そこでF#ですよ

560 :デフォルトの名無しさん:2010/01/31(日) 15:23:50
最前線の話はブログとかで良く読むけどさあ、
自分の会社との差があまりにもありすぎてどっか遠い国で起きてることにしか思えん。
DDDとかTiDDとか本当に仕事で使ってんの??


561 :デフォルトの名無しさん:2010/01/31(日) 15:24:50
本では.NETの開発者の意見でインターフェイスより継承が推奨されてた

562 :デフォルトの名無しさん:2010/01/31(日) 15:28:15
継承よりインターフェースの方がわかんね

563 :デフォルトの名無しさん:2010/01/31(日) 15:30:08
インターフェイスは制約をかける意味合いでしか使ってないなぁ。

564 :デフォルトの名無しさん:2010/01/31(日) 15:31:14
>>561
それはインターフェイスにすると後でメンバを追加できないというバージョン管理上の問題から。
実装継承とインターフェイス継承の問題とは別。抽象クラスに実装が書かれてるからといって
実装継承というわけじゃない。

565 :デフォルトの名無しさん:2010/01/31(日) 15:32:50
継承かインターフェイスか悩んだときはインターフェイス。



566 :デフォルトの名無しさん:2010/01/31(日) 15:34:14
XPとかって理論としては面白いけど抽象的だし
実際に運用する段階になったら現実的じゃないと思うわ
C#で運用してる会社とかあるのかね
Railsとかそっち方面じゃないの

567 :デフォルトの名無しさん:2010/01/31(日) 15:34:51
MS的には多重継承が必要でなければ抽象クラス推奨
でも決して「実装継承推奨」という意味ではない

568 :デフォルトの名無しさん:2010/01/31(日) 15:42:00
http://msdn.microsoft.com/ja-jp/library/ms229042.aspx
MSDNにはなんでも書いてあるね

569 :デフォルトの名無しさん:2010/01/31(日) 15:47:55
C#じゃ少ないけどJavaで良いからデザパタの本読むと良いと思うよ
デザパタ自体を全て実践しろとは言わないが、クラスの使い方という意味で勉強になる

570 :デフォルトの名無しさん:2010/01/31(日) 15:49:03
でもさ、拡張メソッドのおかげで実装まで付いたインターフェースも作れるようになったんだよな。


571 :デフォルトの名無しさん:2010/01/31(日) 15:51:33
>>566
今時完全にウォーターフォールでやってるとこの方が少なくない?
完全にアジャイル開発じゃなくても、一つのプロジェクトで数回リリースの形を取る
(=インテグレーションサイクル)方が多いと思うよ。

572 :デフォルトの名無しさん:2010/01/31(日) 16:08:18
流れ変えてもうしわけないがなんでtabControlのタブ周りはあんなに糞なんだろ
上前提でできてるようなもんだよな
下にすると明らかにおかしいし
左右もなんで複数行を強いるんだとかさ

573 :デフォルトの名無しさん:2010/01/31(日) 16:17:32
>>572
君の説明能力も糞じゃないの?w
何がいいたいのかさっぱりわからん

574 :デフォルトの名無しさん:2010/01/31(日) 16:18:32
>>571
それはそうだろうけどアジャイルではないよね
XP見たいなプロジェクト管理者に責任だけを押しつけるようなやり方って
大規模な開発案件じゃ統制効かないような気がするんだけど

575 :デフォルトの名無しさん:2010/01/31(日) 16:21:52
>>573
windows2000もしくはそれと同等のUI設定なら特に問題はないんだが
XPのLunaなどを有効にするとタブの描画が上を前提にしてあるのが
タブとタブページの境目が変になるんだよ

こんなのは使ったことがあってかつ表示方法をいくらか試してないと気が付かない
わかってる人だけに伝わればいい

576 :デフォルトの名無しさん:2010/01/31(日) 16:23:55
>前提にしてあるのが
前提にしてあるのか

577 :デフォルトの名無しさん:2010/01/31(日) 16:51:44
>>576
うん

578 :デフォルトの名無しさん:2010/01/31(日) 16:52:50
>>538
ですが、どなたか教えてください(T_T)。
リストビューでは、どの列も、リストビュー本体の幅を超えて列幅が指定できます。
ヘッダーの右端境界線を右へ右へドラッグすれば、スクロールバーも同調して広がり、各列の列幅を自由に広げることができます。
データグリッドビューについてもそれができると思ったら、ヘッダーの境界線を、データグリッドビューの視覚上の右端より右へドラッグして各列幅を広げることができないんです。

どうすればリストビューのように広げることができるでしょうか。

579 :デフォルトの名無しさん:2010/01/31(日) 16:54:45
<BR><BR><B>地震</B><BR>
<A HREF=http://headline.2ch.net/bbynamazu/>地震headline</A><br>
<A HREF=http://gimpo.2ch.net/namazuplus/>地震速報</A><br>
<A HREF=http://live24.2ch.net/eq/>臨時地震</A><br>
<A HREF=http://live23.2ch.net/eqplus/>臨時地震+</A>

上記のような文字列あった時。
板名とURLだけを取得するにはどうすればいいですか?

よろしくお願いします。

580 :デフォルトの名無しさん:2010/01/31(日) 17:01:46
>>579
正規表現かDOM

581 :デフォルトの名無しさん:2010/01/31(日) 17:03:54
1行ごとに分かれてる場合

1行読んで先頭が <A HREF= と一致するかチェックする
一致したら最初に出てくる > を探す
最初に出てきた > の後ろからさらに</A>
・・・という風にやるか正規表現使うか

582 :デフォルトの名無しさん:2010/01/31(日) 17:04:11
>>578
お断りします(T_T)。

583 :デフォルトの名無しさん:2010/01/31(日) 17:09:23
>>574
XPは大規模開発には向いてないってどのアジャイル本にも解説してるぞ?

584 :デフォルトの名無しさん:2010/01/31(日) 17:14:36
>>578
言いたいことがやっとわかった
dataGridViewはカラム幅を変える際のマウスの移動範囲をクライアントサイズ内に限定してるのか

585 :デフォルトの名無しさん:2010/01/31(日) 17:24:45
仕様だからしようがないんじゃね?

あとはDataGridViewのソースを手に入れてカラムを摘んだ際のマウス移動範囲の
判定してるロジック部分をオーバーライドするとかで対応は無理・・・かな?
と思いつきで言ってみる

586 :デフォルトの名無しさん:2010/01/31(日) 18:14:40
あ!
と思いつきで言ってみる

587 :デフォルトの名無しさん:2010/01/31(日) 18:35:23
>>580
htmlの場合、正規表現しか駄目でしょ

588 :デフォルトの名無しさん:2010/01/31(日) 18:37:20
>>587
Elementで取得できると思ったけど

589 :デフォルトの名無しさん:2010/01/31(日) 18:37:44
厳密にはそうだけど実際はdom使えるよ

590 :デフォルトの名無しさん:2010/01/31(日) 18:40:17
XML関係のローダにブラウザでやってるような無理やりパースする機能が欲しい
 含まれてるだけで読めないとか面倒くせえんだよ

591 :デフォルトの名無しさん:2010/01/31(日) 19:01:21
nbspと言いたいのだろうけど見えんw

592 :デフォルトの名無しさん:2010/01/31(日) 19:06:35
まあ元がHtmlってわかってるならHtml解析でもいいな
タグならXmlの方でも読めなくはないんだろうけど

問題は階層になってないのが痛いな

593 :デフォルトの名無しさん:2010/01/31(日) 19:13:10
MIL HTML Parser - CodeProject
ttp://www.codeproject.com/KB/dotnet/apmilhtml.aspx

自分用だけど俺はこれ使ってる
HTMLの構文にエラーがあるとうまく動かないことがあったり
使いにくかったりするから少し修正と拡張してるけど

594 :デフォルトの名無しさん:2010/01/31(日) 19:16:25
というか専ブラ作るならそれくらいの文字列処理できるロジック
組めないとsubject.txtとdatのような中途半端なタグが残った
文字データは処理できないぞ

595 :デフォルトの名無しさん:2010/01/31(日) 19:16:49
殆どの場合domでOKだけど、最初から正規表現で考えた方が早かったりする

596 :デフォルトの名無しさん:2010/01/31(日) 19:19:14
WEBやったことが無い人には正規表現が鬼門だったりする

597 :デフォルトの名無しさん:2010/01/31(日) 19:19:53
>>595
でも問題はDomで処理した場合<BR>はいいとして

<B>地震</B>
<A HREF=http://headline.2ch.net/bbynamazu/>地震headline</A><br>

この二つは同じレベルだからなあ

親 <B>地震</B>
子 <A HREF=http://headline.2ch.net/bbynamazu/>地震headline</A><br>
の関係なら解析させたあとBで列挙してもいいけどさ・・・

598 :デフォルトの名無しさん:2010/01/31(日) 19:21:36
細かいな・・・

599 :デフォルトの名無しさん:2010/01/31(日) 19:23:16
FireBugの解析結果
http://uproda.2ch-library.com/209669XrW/lib209669.png
同列なんだよね

600 :デフォルトの名無しさん:2010/01/31(日) 19:26:35
同列だからなんなの? ここではAタグは完全に別物じゃん。
<B><A HREF="...">...</A></B>とかならともかく。

601 :デフォルトの名無しさん:2010/01/31(日) 19:26:39
OpenJaneのソース読んでみれば

602 :デフォルトの名無しさん:2010/01/31(日) 19:26:45
http://uproda.2ch-library.com/209672WRu/lib209672.png
まああるにはあるんだけどさ・・・DLLとし

603 :デフォルトの名無しさん:2010/01/31(日) 19:27:55
板データ取り出すだけなんだからIndexOfで充分だろ。ウェブブラウザでも作らす気か

604 :デフォルトの名無しさん:2010/01/31(日) 19:28:02
>>600
言いたいことがわかってないようだ

BとAを別々に列挙した場合Bを大見出しでつけるのは多分不可能だと思うよ

605 :デフォルトの名無しさん:2010/01/31(日) 19:32:12
そもそも、カテゴリを取りたいなんて一言も出てない件。

606 :デフォルトの名無しさん:2010/01/31(日) 19:33:12
>>604
おー。理解できた。確かにそれはDOMじゃ不可能だね。

607 :デフォルトの名無しさん:2010/01/31(日) 19:35:33
>>605
わかってる

ただあえて2chのメニューを持ってきたところで深読みしつつ書いてるだけ
タダ単にURL欲しいなら正規表現で取り出すか>>581
俺が書いてるから

608 :デフォルトの名無しさん:2010/01/31(日) 19:43:04
>>593
未だにtidy使ってるわ
試してみようかな

609 :デフォルトの名無しさん:2010/01/31(日) 19:47:35
わざわざ言うな

610 :デフォルトの名無しさん:2010/01/31(日) 19:52:07
イテレータ使いたいけどEnumerable<T>の拡張メソッドまで使いたくない場合どうすればいいの?
IEnumerable<T>使うと要らんものが増えすぎて嫌

611 :デフォルトの名無しさん:2010/01/31(日) 19:54:31
IEnumerator<T>を実装する。
それだけだと足らないので、GetEnumeratorも書く。
それでforeach使えるはず。

612 :デフォルトの名無しさん:2010/01/31(日) 19:57:09
あんがとぉ

613 :デフォルトの名無しさん:2010/01/31(日) 20:00:02
え、ちょっと待て
IEnumeratorインターフェースって要らねえの?

614 :613:2010/01/31(日) 20:00:49
間違えた
IEnumerator ×
IEnumerable ○

615 :デフォルトの名無しさん:2010/01/31(日) 20:02:40
要らないんだな、これが。

616 :デフォルトの名無しさん:2010/01/31(日) 20:06:33
そこそこ短いコードでありながら、初心者から中級者・上級者にステップアップするのに
参考となる優良コードが見られるサイトって無いですか?

617 :デフォルトの名無しさん:2010/01/31(日) 20:06:47
クックブックくらい買おう

618 :デフォルトの名無しさん:2010/01/31(日) 20:24:29
まあ関係ないかもしれんが2ch関連はこの辺読んだほうがいいね
http://www.monazilla.org/

619 :デフォルトの名無しさん:2010/01/31(日) 20:39:12
>>587-589
DOMにはHTML用の規定もあるのに何を
何の前置きもなく特定のパーサの実装に限定するなよ

>>604>>606
何でDOMだけA,Bを別々に列挙する話になっているんだよ
正規表現でもA,Bを抽出する正規表現で別々にマッチングして列挙したら同じだろ

620 :デフォルトの名無しさん:2010/01/31(日) 20:49:09
>>613
IEnumerableを実装するときでさえ、
あえてインターフェイス実装ではないGetEnumeratorを作ったりもする。


621 :デフォルトの名無しさん:2010/01/31(日) 20:50:45
>>619
じゃあ>>579のパターン書いてやれよ

Bに対するAがツリー状にでてくる正規表現ってやつを

622 :デフォルトの名無しさん:2010/01/31(日) 21:01:56
619から何か必死さを感じるな。
もうじき死ぬのかもしれん。

623 :デフォルトの名無しさん:2010/01/31(日) 21:41:10
>>619

624 :デフォルトの名無しさん:2010/01/31(日) 21:44:10
>>619死なないで

625 :デフォルトの名無しさん:2010/01/31(日) 21:44:25
>>617
料理本?

626 :デフォルトの名無しさん:2010/01/31(日) 21:46:38
CookBook

627 :デフォルトの名無しさん:2010/01/31(日) 21:49:37
え?

628 :デフォルトの名無しさん:2010/01/31(日) 21:58:56
シンドブック

629 :デフォルトの名無しさん:2010/01/31(日) 22:36:19
ピピルマー

630 :デフォルトの名無しさん:2010/01/31(日) 22:53:36
>>584
試しにやってみたけど確かにカーソルがコントロール範囲外に行かないね。
リストビューではできるのに、なぜなんだろ…。

631 :デフォルトの名無しさん:2010/01/31(日) 23:04:58
>>630
ColumnDividerとか言うらしいのでこいつ関連のイベントでクライアントの右端にマウスカーソルが
来たらカラムを広げてスクロールイベントを発生して・・・とか考えて調べてみたがろくな情報がなくて放置

632 :デフォルトの名無しさん:2010/01/31(日) 23:56:50
>>630
さあ

633 :516:2010/02/01(月) 03:12:45
>>517
>>518
なるほど
自動変換の規則がよく分かってないのかもしれません

例えば、stringはchar[]に自動変換できないくせに、
なぜかデリゲートで渡すときには
stringがLPCTSTRに変換できたりして

あと、IntPtrとint*の違いもよくわかりません

こういうのって体系的にまとまってないでしょうか?

634 :516:2010/02/01(月) 03:13:53
IntPtr、int*、ref intも同じに見えますね

635 :デフォルトの名無しさん:2010/02/01(月) 03:18:18
>>634
IntPtrとかrefあたりも自分たちがいじってる部分ではハンドラみたいな物でしょ
最終的な内部の方でDLLなんかとやり取りする部分ではじめてポインターとかに
化ける感じ
そこでしか必要ないもん
なので見た目上はint*と似てるけどぜんぜん違うと思うよ

636 :デフォルトの名無しさん:2010/02/01(月) 04:18:28
>>632
冷たいね、あなた。

637 :デフォルトの名無しさん:2010/02/01(月) 10:30:19
vb6から移行しました。
formのコントロールについて質問です。

vb6では各コントロールのTabIndexプロパティを0から振っていけば、起動
時には0にフォーカスが来ていたのですが、C#では上手くいきません。
TabIndexとは別のもので設定するのでしょうか?

638 :デフォルトの名無しさん:2010/02/01(月) 10:54:54
>>637
表示→タブオーダー

639 :デフォルトの名無しさん:2010/02/01(月) 11:00:29
あ、違うのか。駄目ならLoadのタイミングで
コントロールにFocusしたりはした?

640 :デフォルトの名無しさん:2010/02/01(月) 11:20:21
いや、タブオーダーで設定できるよ。
ダブってたりすると、Contorl.Add()した順番が生きるみたいだけど。

641 :デフォルトの名無しさん:2010/02/01(月) 11:34:56
637です。
TabIndexではなくタブオーダーだったんですね。解決できました。
早く使い方になれないとまずいですね。

642 :デフォルトの名無しさん:2010/02/01(月) 12:30:28
うん。まずいよ。

643 :デフォルトの名無しさん:2010/02/01(月) 13:16:53
C# 2008ExpressEditionでの相談です。
ACCESSの1テーブルのデータをデータグリッドビューで表示することはできました。
データグリッドビューでの変更や行追加もできますが、テーブルにそれを反映できません。。
ACCESSのように即時変更や行追加できなさそうなことまでは調べがつき、
ボタンを押したときに以下のメソッドを順に呼び出しています(例外は発生しません)。

DataGridView.EndEdit();
BindingSource.EndEdit();
TableAdapter.Adapter.Update(DataSet.テーブル名);

何かが足りてないと思うんですが、八方塞がりになりました・・・ご教授くださいませ。

644 :デフォルトの名無しさん:2010/02/01(月) 13:32:02
逆引き555のなんとかでも立ち読みしてきたら

645 :デフォルトの名無しさん:2010/02/01(月) 14:55:15
>>643
datagridviewのdatasourceとdatamemberはちゃんと設定してんの?

646 :デフォルトの名無しさん:2010/02/01(月) 15:13:47
>>645
は?してますが。。

647 :643:2010/02/01(月) 15:18:57
>>644
そですね、帰りに立ち読みしてきます。

>>645
ヒントありがとうございます。
datagridviewのdatasourceにはBindingSourceをセットしています。
datamemberには何もセットされていません、指摘後に何かをセットししようとしましたが一覧に「なし」しか表示されませんでした。。
調べてみます。

>>646
ヒドス

648 :デフォルトの名無しさん:2010/02/01(月) 15:25:34
>>647
本来は何もしないでも反映される。
datasourceにdataset、datamemberにdatatableを設定。
デザイナでdataset作ってないなならソース上で指定。

649 :デフォルトの名無しさん:2010/02/01(月) 15:31:50
gridviewからdatasetへは自動だがdatasetからテーブルに反映されるにはコードがいるからね

650 :643:2010/02/01(月) 15:42:33
>>648-649
いろいろとヒントをいただきありがとうございます。
ただ大変申し訳ありません・・・デバッグ実行するとMDBファイルが Debugフォルダにコピーされて
それに対して変更や行追加をしていることが分かりました。

恥ずかしい限りです、TableAdapter、TableAdapterManager、DataSet、BindingSourceを勉強します。
本当にありがとうございました。

651 :デフォルトの名無しさん:2010/02/01(月) 17:25:47
すみません VC#2008にて、ビルドにより埋め込まれる/埋め込むことが可能な情報ってどのようなものがありますか?

リリースexeファイルを右クリックしてプロパティ→バージョン情報 で見える情報で全部ですか?

何も設定しないでビルドすると、バージョンは1.0.0、言語は「ニュートラル言語」のようになっていますが、
これらを好きなように指定できるところってどこですか?

652 :デフォルトの名無しさん:2010/02/01(月) 17:28:39
ソリューションエクスプローラのプロジェクトのプロパティで何やかんやする

653 :デフォルトの名無しさん:2010/02/01(月) 17:35:36
で?

654 :デフォルトの名無しさん:2010/02/01(月) 17:36:33
いや、で?って言われても・・・。

655 :デフォルトの名無しさん:2010/02/01(月) 18:04:04
        /ニYニヽ
   (ヽ   /( ゚ )( ゚ )ヽ   /)
  (((i ) /::::⌒`´⌒::::\  ( i)))
 /∠_| ,-)___(-,|_ゝ \
( ___、  |-┬-|    ,__ )
    |    `ー'´   /´

656 :デフォルトの名無しさん:2010/02/01(月) 18:23:22
「そんなことを聞くレベルの奴がそんなことしてどうするんだろう」って質問が多いね

657 :デフォルトの名無しさん:2010/02/01(月) 18:24:29
いいだろ別に。
君達は只々オラクルのように答えていればいいんだよ!

658 :デフォルトの名無しさん:2010/02/01(月) 18:26:26
>>651
どのようなものがあるか?は>>652の通りなんやかんやしてみる
バージョンと言語はそのプロパティのアプリケーションのアセンブリ情報...ボタン押せば変えられる。
AssemblyInfo.cs弄ってもいいけど

659 :デフォルトの名無しさん:2010/02/01(月) 18:28:59
IDないから成りすましもいるので面倒だよな>プログラム板

660 :デフォルトの名無しさん:2010/02/01(月) 18:31:19
まあ成りすましされるケースのほとんどは質問が変な時だけどな

661 :デフォルトの名無しさん:2010/02/01(月) 18:33:34
C#で万能オラクルは作れますか?

662 :デフォルトの名無しさん:2010/02/01(月) 18:48:37
このスレだけターゲットにするなら、常に「お前には無理」ってだけ反応すればいいから簡単。

663 :デフォルトの名無しさん:2010/02/01(月) 18:49:57
>>661
お前には無理

664 :デフォルトの名無しさん:2010/02/01(月) 19:04:13
>>662
お前には無理

665 :デフォルトの名無しさん:2010/02/01(月) 19:06:00
開発されてしまった\(^o^)/

666 :デフォルトの名無しさん:2010/02/01(月) 19:32:52
読むのに半日以上かかるような長大ソースではなく、電車に乗ってる間くらいで読むことができる
達人が書いた模範的なC#コードをふんだんに読めるところって無いでしょうか?
一般的なプログラム本には書かれていないプロならではのTips的なことを学びたいです。

667 :デフォルトの名無しさん:2010/02/01(月) 19:36:05
そんな魔法みたいな都合のいいコードはありません

668 :デフォルトの名無しさん:2010/02/01(月) 20:07:17
>>666
github(gistでもいい) とか Google Code Search とかどうよ



669 :デフォルトの名無しさん:2010/02/01(月) 21:46:43
Mavenみたいに依存ライブラリを自動で拾ってきてくれるのってない?

670 :デフォルトの名無しさん:2010/02/01(月) 21:57:29
ない

671 :デフォルトの名無しさん:2010/02/01(月) 22:03:56
別々のスレッドで生成された複数のクラスで1つのQueue<object>インスタンスを共有しているとする
QueueにはSyncRootが無いわけだが、単にlock(queueの参照)すると何か問題起こるだろうか?
別にobject Syncでも用意すべき?

672 :デフォルトの名無しさん:2010/02/01(月) 22:06:27
>>671
Queue<T>をICollection<T>にキャストしてみ。
SyncRoot使えるから。

673 :デフォルトの名無しさん:2010/02/01(月) 22:07:47
本当だ…サーセン

674 :デフォルトの名無しさん:2010/02/01(月) 22:08:08
SyncRootって何ですか?
lockじゃ何がだめなんですか?

675 :デフォルトの名無しさん:2010/02/01(月) 22:10:02
>>674
コレクションクラスが持ってるlockステートメントでロックするための専用のメンバ。
結局lockで使うことに違いはない。

676 :デフォルトの名無しさん:2010/02/01(月) 22:11:37
コレクションをlockするのはだめってことなんですか?
オブジェクトならなんでもいいと思ってたorz

677 :デフォルトの名無しさん:2010/02/01(月) 22:13:47
いや、俺も正直よく分からん。

スレッドの同期 (C# プログラミング ガイド)
http://msdn.microsoft.com/ja-jp/library/ms173179.aspx

に色々書いてあるけどどうも要領を得ない。

678 :デフォルトの名無しさん:2010/02/01(月) 22:19:56
.NET1.1以前の非ジェネリックコレクションクラスはSynchronizedメソッドでスレッドセーフなラッパーを作る機能があった
そのラッパーの中でロックに使われてるオブジェクトを取得するためにSyncRootがある
.NET2.0以降のジェネリックコレクションではSynchronizedは無くなったので必要なくなった

679 :デフォルトの名無しさん:2010/02/01(月) 22:22:31
結論としてlock(list)とかしていいの?駄目なの?

680 :デフォルトの名無しさん:2010/02/01(月) 22:24:32
ジェネリックコレクションではおk

681 :デフォルトの名無しさん:2010/02/01(月) 22:26:10
じゃあlockしまくるよ(`・ω・´)

682 :デフォルトの名無しさん:2010/02/01(月) 22:28:32
必要に応じろよ

683 :デフォルトの名無しさん:2010/02/01(月) 22:32:24
簡単に説明すると、

あるコレクションcと、それをラップしたコレクションw1、w2があるとして、
単純にw1、w2をロックしたのではcへのアクセスは同期されない
そこで、w1、w2のSyncRootがc.SyncRootを返すように実装されていれば、
w1.SyncRoot、w2.SyncRootをロックすればcへのアクセスは同期される

684 :デフォルトの名無しさん:2010/02/01(月) 22:36:18
なるほど

685 :デフォルトの名無しさん:2010/02/01(月) 22:37:01
うんうん(`・ω・´)

686 :デフォルトの名無しさん:2010/02/01(月) 22:38:37
コレクションをラップ?
C#は奥が深いな
なにこれ?

687 :デフォルトの名無しさん:2010/02/01(月) 22:40:52
(´・ω・`)・・・

688 :デフォルトの名無しさん:2010/02/01(月) 22:42:44
結局,コレクションの同期はサポートしない方針に変わったのでどうでもよくなった
同期したかったら各自で勝手にやれってこと

689 :デフォルトの名無しさん:2010/02/01(月) 22:48:41
>>687
そんな、呆れてないで教えてくださいよ、旦那
コレクションをラップってなーに?

690 :デフォルトの名無しさん:2010/02/01(月) 22:52:37
委譲じゃないの

691 :デフォルトの名無しさん:2010/02/01(月) 22:53:28
ArrayListなどの古いコレクションでは各メソッドをオーバーライドしてラッパーとして機能させてしまうこともできたけど
ジェネリックコレクションではそういうことはできなくなってる
コレクションをIList<T>などを通して扱う場合には意味がある(ラッパーが入る余地がある)けど
実際そういうのをロックすることはあんまり無いでしょう

692 :デフォルトの名無しさん:2010/02/01(月) 23:03:23
>>691
勉強中の初心者です。1行目までは一応理解できたつもりでいますが
ジェネリックコレクションではそういうことはできなくなってるというのが、なぜかわかりません。
ジェネリックコレクションではできない原因となる、古いコレクションとの差異をご教授下さい。
よろしくお願いします。

693 :デフォルトの名無しさん:2010/02/01(月) 23:08:59
ジェネリックコレクションにはvirtualメンバがない
だからジェネリックコレクションをインターフェイスを通したりせずに
List<T>やQueue<T>などとして明確に型指定して使う限りはラッパーは紛れ込まない

694 :デフォルトの名無しさん:2010/02/01(月) 23:11:29
fileSystemWatcherを使ってあるフォルダーを監視して、メールが送られてきたらスタートボタンを押すという、一種のリモートスタート機能を実現したいんですが、
fileSystemWatcherの中でForm上のコントロールを制御しても、動作が保証されないって書いてあって、さてどうしたらいいんでしょう?というのが質問です。
なにか簡単な方法はないでしょうか?

695 :デフォルトの名無しさん:2010/02/01(月) 23:11:39
なるほど。virtualメンバがないということなんですね。
ありがとうございました。

696 :693:2010/02/01(月) 23:11:44
補足
System.Collections.Generic名前空間の主要なジェネリックコレクションに限った話ね

697 :デフォルトの名無しさん:2010/02/01(月) 23:13:39
>>696
補足どもです。勉強になりました。

698 :デフォルトの名無しさん:2010/02/01(月) 23:39:25
>>694
どこにどういう風に書かれてたのか知らないけど
InvokeかBeginInvokeしろとかって意味とは違うの?

699 :デフォルトの名無しさん:2010/02/02(火) 00:23:26
var ret = a ?? b ?? c ?? d ?? string.Empty;

なんぞこれ.. ret には何が入るのさorz

700 :デフォルトの名無しさん:2010/02/02(火) 00:29:00
Formを継承するのってやぼい設計なの?


701 :デフォルトの名無しさん:2010/02/02(火) 00:33:38
>>700
デザイナで作るとForm継承したクラスにずらずらと書きますがな

702 :デフォルトの名無しさん:2010/02/02(火) 01:09:29
>>699
最初のnullでないのが入る、全部nullなら空文字列


703 :デフォルトの名無しさん:2010/02/02(火) 01:10:47
>>698
ほとんど一字一句変わらないレスをしようとしてたw



704 :デフォルトの名無しさん:2010/02/02(火) 02:12:53
>>700
外観を統一するってレベルなら有りじゃないの

705 :デフォルトの名無しさん:2010/02/02(火) 02:23:44
標準コントロールの外見のことをいってるんだろうか…? WPF使えば?

706 :デフォルトの名無しさん:2010/02/02(火) 06:16:32
MSのコンポーネントの動作に疑問があってふとソースが公開されてて入手可能
と聞いてたのでダウンロードしてみたんだがEEバージョンユーザーなのに落ちてくるんだが
大丈夫なのか?

707 :デフォルトの名無しさん:2010/02/02(火) 06:24:39
息継ぎしろ

708 :デフォルトの名無しさん:2010/02/02(火) 06:28:02
これこれ
http://www.atmarkit.co.jp/fdotnet/insiderseye/20080222sourcecode/sourcecode.html

>Visual Studio 2008(Express Editionは除く)でデバッガを使用する際に、クラス・ライブラリの
>メソッド内部までソースコード・レベルでのトレース(ステップ・イン実行)が可能になるというものだ。
デバックの際にトレースができないだけでExpress Editionでもソースは入手可能なのかね?

このやり方で落ちてくるんだが
http://blogs.yahoo.co.jp/kotomi_eternal/56577556.html

NetMassDownloader -d C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 -o [ローカルの保存先ドライブ]

709 :デフォルトの名無しさん:2010/02/02(火) 06:37:51
で?

710 :デフォルトの名無しさん:2010/02/02(火) 06:39:02
公開されてるもんなんだから、ダウンロードできて当然だろ?

711 :デフォルトの名無しさん:2010/02/02(火) 07:07:28
EEでもトレースできるよ

712 :デフォルトの名無しさん:2010/02/02(火) 07:09:45
そんなことよりソースからSyncRootとか抜き出して使ってもいいもんかね?
ソース見たらたまたま俺が書いたコードと一字一句違わなかったんだが

713 :デフォルトの名無しさん:2010/02/02(火) 08:31:25
サブスレッドからメインスレッドのメソッドを呼び出すには
どうしたらいいでしょうか?

714 :デフォルトの名無しさん:2010/02/02(火) 08:40:53
テキスト

715 :デフォルトの名無しさん:2010/02/02(火) 08:41:20
サブスレッドから呼び出す

といいたいが、もっと詳しく書かないとだれも質問を理解できないと思うよ

716 :デフォルトの名無しさん:2010/02/02(火) 08:42:06
みすw

>>474のような感じで

717 :694:2010/02/02(火) 08:55:56
なるほど。わかりました。いやわかっていない。もうちょっと調べてみます(´・ω・`)

718 :デフォルトの名無しさん:2010/02/02(火) 10:31:56
フォルダを選択して、その中にある画像をスクロールバーを使って
順番にピクチャーボックスに表示するプログラムを作ろうとしてい
ます。

ScrolBar1.Maximum = files.Count;
で画像の数をセットし

private void ScrolBar1_Scroll(object sender, ScrollEventArgs e)
{
  PictureBox1.Image = Image.FromFile(files[ScrolBar1.Value].ToString());
}
でスクロールされる度に画像を表示したいのですが、ScrolBar1.Value
が常に0になってしまいます。どこか記述がおかしいのでしょうか?

719 :デフォルトの名無しさん:2010/02/02(火) 10:47:11
>>718
スクロールバーの代わりにトラックバーつかっとけ
そもそもスクロールバーはそういう用途に使うもんじゃない

720 :デフォルトの名無しさん:2010/02/02(火) 11:06:12
files.Countが0でも返してるんじゃねーの?

721 :デフォルトの名無しさん:2010/02/02(火) 11:17:23
>>719
深く考えずにスクロールバーを選んだのですが、トラックバー
に変更してみます。

>>720
files.countは3で、ScrolBar1.Maximumにも3がセットされてい
るのですがダメなんです。

722 :デフォルトの名無しさん:2010/02/02(火) 11:28:46
ちょっと試してみたよ。
LargeChangeの値がMaximum以上だとそうなるね

723 :デフォルトの名無しさん:2010/02/02(火) 11:28:59
.LargeChangeを1だな

724 :デフォルトの名無しさん:2010/02/02(火) 11:35:55
ああスクロールバーの癖というか仕様を踏んだのか
http://gurizuri0505.halfmoon.jp/develop/csharp/netframework_scrollbar

725 :デフォルトの名無しさん:2010/02/02(火) 11:37:47
こっちが情報元だった
http://mag.autumn.org/Content.modf?id=20080920015329

726 :デフォルトの名無しさん:2010/02/02(火) 12:03:15
>>722
トラックバーに変えてみたりしていました。
LargeChangeの値を1にしたら上手く動作させることができました。
ありがとうございました。

727 :デフォルトの名無しさん:2010/02/02(火) 14:42:34
c#ってリバースエンジニアリングが容易と聞いたのですが
そうなるとVC++で書くとかになるんでしょうか?

728 :デフォルトの名無しさん:2010/02/02(火) 14:44:25
つ 難読化
程度問題だからコストとつき合わせて考えろ。

729 :デフォルトの名無しさん:2010/02/02(火) 14:46:52
>>728
難読化ですか
確か無料版には付いてこない機能ですよね
外部の物もあるようですが無料は.netの対応バージョンが古かったりと

そういえばVC++も無料版だとMFCが付いてこないとか聞いたのですが
これが無いとwindowsの画面を作るのに支障があるんでしょうか?

730 :デフォルトの名無しさん:2010/02/02(火) 15:00:34
言っちゃわるいけど、君程度の知識の人がそんな質問してどうすんの?
って気になってしまう…

731 :デフォルトの名無しさん:2010/02/02(火) 15:04:06
世の中すべて勉強です
初心者スレで見下すのはどうかと

732 :デフォルトの名無しさん:2010/02/02(火) 15:08:10
そもそも何のために難読化したいのか?
ソースパクられるの心配とかならアホだぞ。

733 :デフォルトの名無しさん:2010/02/02(火) 15:12:05
>>729
絶対に君のソースを盗み見しようという人は現れないから安心しなさい
C言語だろうがJAVAだろうが、労力次第では解読されるけど
低能制作者・作、というのは最強の対策だからね

734 :デフォルトの名無しさん:2010/02/02(火) 15:13:39
とりあえずProのデモ版落としてきて難読化・逆コンパイルしてコード読んでから考えれば

735 :デフォルトの名無しさん:2010/02/02(火) 15:15:46
自分のコードが他人から見て盗みたくなるものかどうかは
やってみれば本人が一番実感できるようになるんじゃね?
別に初心者が難読化しちゃいけないわけじゃないし

736 :デフォルトの名無しさん:2010/02/02(火) 15:16:43
あ、質問の中心がそもそも難読化じゃなかったっけか

737 :デフォルトの名無しさん:2010/02/02(火) 15:26:32
C/C++の経験はあるのですがwindows環境で組むのがはじめだったので
手始めにc#に手を出してたのですがリバースエンジニアリングの話もあったりしたので
どうせならC++でと思ったもので

738 :デフォルトの名無しさん:2010/02/02(火) 15:27:52
C++でもC#でも好きにしろ。でもここはC#スレだ。



とりあえず、C++/CLIはやめといたほうがいいな。


739 :デフォルトの名無しさん:2010/02/02(火) 15:36:49
プロ(笑)のみなさまは難読化で対応されてるんですねw

740 :デフォルトの名無しさん:2010/02/02(火) 15:38:58
商売でコンポーネント売ってる人なんかは割と腐心してるんじゃないかなぁ。
客向けにシステム一から組む人なんかは汎用的じゃないから心配いらんだろうけど。



741 :デフォルトの名無しさん:2010/02/02(火) 15:39:00
本当に守りたい情報やロジックはサーバーサイドに置いとくもんだ。
とりあえずageのは最初の質問だけにしろ。

742 :デフォルトの名無しさん:2010/02/02(火) 15:42:55
という感じで自称プロ(笑)が申しておりますw

743 :デフォルトの名無しさん:2010/02/02(火) 15:59:19
subject.txtと、subject.txtから取得したスレッドキーから
スレッドのurlを作りたいんですが、何かいい方法ありますか?

例えば
http://gimpo.2ch.net/namazuplus/subject.txt + 1265082300

http://gimpo.2ch.net/test/read.cgi/namazuplus/1265082300/

よろしくお願いします。

744 :デフォルトの名無しさん:2010/02/02(火) 16:01:59
http://gimpo.2ch.net/test/read.cgi/namazuplus/1265082300/
正規表現にかけて

http://gimpo.2ch.net/namazuplus/dat/1265082300.dat
にすればいいよ

745 :デフォルトの名無しさん:2010/02/02(火) 16:03:23
ああ、dat取りに行く話じゃないのか

どっちにしろURLのパターンが決まってるなら正規表現かけたほうが早い

746 :デフォルトの名無しさん:2010/02/02(火) 16:06:27
取り込み中すみません。
今C#関連の本を読んでいて、Dispose関連の記述でどうもよくわからなかったんですが
マネージドリソースというのはCLRが管理するメモリ領域という理解で良いのでしょうか?
それから、アンマネージドリソースも、CLRの手が届かない領域…?とどうも理解が及びません。
このような素人用の解説をどなたかおねがいできませんでしょうか?よろしくお願いします。

747 :デフォルトの名無しさん:2010/02/02(火) 16:25:45
picturebox上に配置したtextboxをマウスで移動できるようにと

DragDropEffects dde = textbox1.DoDragDrop(textbox1, DragDropEffects.Move);

をtextbox1_MouseMoveに記述しているのですが、思うように動かす
ことができません。MouseDownで今の座標を取得してMouseUpで場所
を変更したいと思っています。
上記のコードの直後にddeを確認するとNoneが入ってしまっています。
どのように修正したらよいでしょうか?

748 :デフォルトの名無しさん:2010/02/02(火) 17:03:09
>>747
http://dobon.net/vb/dotnet/form/moveform.html

749 :デフォルトの名無しさん:2010/02/02(火) 17:05:56
>>746
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=34497&forum=7

750 :746:2010/02/02(火) 17:13:14
>>749
ありがとうございます。参考にさせていただきます。

751 :デフォルトの名無しさん:2010/02/02(火) 18:21:20
>>746
別にメモリやOSのハンドルなどに限らず,使い終わったらGC任せにしてないで
すぐに返さないと問題が発生するようなものの総称
仮にマネージコードだけで完結してるとしてもそういう状況はありうる

752 :デフォルトの名無しさん:2010/02/02(火) 18:21:55
>>748
ありがとうございました。このやり方でもできるんですね。
あとはPicturebox内でだけ動かせるような制限を考えなければ

753 :デフォルトの名無しさん:2010/02/02(火) 19:27:18
。「ぶるっちょ( ´∀`)だお

754 :デフォルトの名無しさん:2010/02/02(火) 21:44:17
プリンタに出力するときに
 e.Graphics.PageUnit = GraphicsUnit.Millimeter;
を使って位置指定をミリメートルに設定したのはいいんですけど
.DrawLineで線を引くときに1ミリより細い線を引く方法が分かりません。。。
教えてください。
よろしくお願いします。

755 :デフォルトの名無しさん:2010/02/02(火) 21:51:29
今年一番の笑い話だ

756 :693:2010/02/02(火) 21:52:20
Graphics.DrawLine(Pen, Single, Single, Single, Single)のオーバーロードがあるから
普通に少数で指定すればいいんじゃないの

757 :デフォルトの名無しさん:2010/02/02(火) 21:59:22
オーバーロードて何のこっちゃ。
普通にpenそのもの幅を設定するだけだと思うけど

758 :デフォルトの名無しさん:2010/02/02(火) 22:00:33
前回終了時の状況によっては起動時は非表示でタスクトレイに常駐するだけで
一瞬も表示しないウインドウを作りたいのですがどのようにすればいいでしょうか?

759 :デフォルトの名無しさん:2010/02/02(火) 22:02:19
>>757
浮動小数点(floatかdoubleかしらんけど)で指定可能なDrawLineもあるってことじゃないの?
そりゃGraphicsUnit.Millimeterで基準をミリメートルにした上でintで与えてたらそれ以下は
引けないわな

760 :754:2010/02/02(火) 22:04:19
0.5っていう風に少数で指定したらエラーが出たんですよ。。。
で、0.5を1/2って入力したらいけましたw
ちょっと悲しいけどよかったです。

761 :デフォルトの名無しさん:2010/02/02(火) 22:06:28
よくわからんw

Penでもfloat指定できるし、DrawLineも座標系にfloatあったぞ

762 :デフォルトの名無しさん:2010/02/02(火) 22:06:56
だから設定するのはpenの幅なんですよ、って言ってるのに池沼か。
そもそもそうでなきゃ“Pen”がペンのメタファになってないじゃないか。
何をいってるんだよ本当。

763 :デフォルトの名無しさん:2010/02/02(火) 22:08:58
>>760
それでいけたんなら0になってんだろ

764 :デフォルトの名無しさん:2010/02/02(火) 22:09:16
1/2って0にならんか

765 :デフォルトの名無しさん:2010/02/02(火) 22:10:57
ああ、、もしかして小数点指定する際にFつけてないとか・・じゃないよね?

1.0とかそのまま指定するとdoubleと認識するようで1.0Fとかしないと
IDEがうるさいよ

766 :デフォルトの名無しさん:2010/02/02(火) 22:12:05
一番うるさいのはコンパイラだよ

767 :デフォルトの名無しさん:2010/02/02(火) 22:12:16
>>760
0.5はdoubleだ
1/2はintだ


768 :デフォルトの名無しさん:2010/02/02(火) 22:12:24
こんな感じ
http://uproda.2ch-library.com/210262X94/lib210262.png

769 :デフォルトの名無しさん:2010/02/02(火) 22:12:27
わかってない奴は黙れ

770 :754:2010/02/02(火) 22:13:34
>>765
うわあああああああああああああ
Fつけたらいけました。
ありがとうございました。

他の人もありがとうございました。
VB6の感覚でやってたらダメだな・・・

771 :デフォルトの名無しさん:2010/02/02(火) 22:13:52
>>769
あなたはうるさいですね。。。

772 :デフォルトの名無しさん:2010/02/02(火) 22:14:47
VB6なんか頭打って忘れろ

773 :デフォルトの名無しさん:2010/02/02(火) 22:15:07
この際他の接尾辞も覚えておくことをお勧めする



774 :デフォルトの名無しさん:2010/02/02(火) 22:18:29
なんかこの流れ見たことあるような気がする。デジャブ?

775 :デフォルトの名無しさん:2010/02/02(火) 22:18:59
いつ?

776 :デフォルトの名無しさん:2010/02/02(火) 22:19:26
>>770
というかエラーメッセージ読みなよ

キャストしないと駄目な際のメッセージと同じ警告でてるでしょうに

777 :デフォルトの名無しさん:2010/02/02(火) 22:19:29
旧VBにも一応リテラル接尾辞はあったはずなんだがなー
ていうかまずエラーの中身確認しようよ

778 :754:2010/02/02(火) 22:19:29
よくみたら、エラー一覧にDoubleからfloatに変換できませんってでてますね。
こんなことで5時間は悩んだ気がする・・・
2ちゃんがあってよかったw
ふぅ

779 :デフォルトの名無しさん:2010/02/02(火) 22:20:31
エラー 2 引数 '2': 'double' から 'float' に変換できません。

780 :デフォルトの名無しさん:2010/02/02(火) 22:20:43
ULとか使ったことないわ

781 :デフォルトの名無しさん:2010/02/02(火) 22:26:42
そういえば、グラフィックスいじってて疑問に思ったのがほとんどのレベルで小数点はdouble扱いなのに
レンダリングや印刷のところになるとfloatがでてくるのはDirectXなどのラッパーだからなのかね?

782 :デフォルトの名無しさん:2010/02/02(火) 22:27:42
さあ・・・

783 :デフォルトの名無しさん:2010/02/02(火) 22:29:02
GDI+がそうなってるから
ほぼDirect3D剥き出しなWPFでは逆にdoubleで統一されてる

784 :デフォルトの名無しさん:2010/02/02(火) 22:29:55
DirectXのラッパーってなんだ・・・?
ManagedDirectXの事か?

785 :デフォルトの名無しさん:2010/02/02(火) 22:30:48
>>783
なるほど

>>784
間違えた
GDI+だ

786 :デフォルトの名無しさん:2010/02/02(火) 22:33:32
WPFはレイアウトにも浮動小数点使いまくるからfloatでは精度が足りないんだろうな

787 :デフォルトの名無しさん:2010/02/02(火) 22:34:44
WPFマジいらねえ

788 :デフォルトの名無しさん:2010/02/02(火) 22:50:58
WPFはあんなに出来がいいのに…
使わないともったいないぜ

789 :デフォルトの名無しさん:2010/02/02(火) 22:55:02
>>788
おもしろいけど、あれはさらにソースコードつけて配布してるような感じになってない?
Listをバインドすれば勝手にTreeViewに反映されるとか

790 :デフォルトの名無しさん:2010/02/02(火) 22:58:50
>>789
>あれはさらにソースコードつけて配布してるような感じになってない?
これの意味がわからん。


791 :デフォルトの名無しさん:2010/02/02(火) 23:11:56
WPFはもう終わってるだろ

792 :デフォルトの名無しさん:2010/02/02(火) 23:12:28
VS2010はWPFです

793 :デフォルトの名無しさん:2010/02/02(火) 23:20:45
OOPを意識した事も無い人がよくFormの下にずらずら書くよね
そう言う人達にはWPFを使うのは辛いと思う

794 :デフォルトの名無しさん:2010/02/02(火) 23:23:00
WPFだってWindowの下にずらずら書けるよ
Designer.csがXMLになっただけ

795 :758:2010/02/02(火) 23:24:51
自己解決しました

796 :デフォルトの名無しさん:2010/02/02(火) 23:26:09
だけって、、テキストバインディングが出来る事によって設計手法が大きく変わるんだからそれに合わせた開発をしようよ・・・


797 :デフォルトの名無しさん:2010/02/02(火) 23:28:10
MSに踊らされるのはごめんだ

798 :デフォルトの名無しさん:2010/02/02(火) 23:28:34
WPFについてこれない人多そうだな
MEFあたりの技術は知らない(わからない)人が更に多そう

799 :デフォルトの名無しさん:2010/02/02(火) 23:29:44
WPFでFormの下にずらずら書くようなやり方になるとは思えないくらいのレベルなんだが

800 :デフォルトの名無しさん:2010/02/02(火) 23:32:13
使うのがつらいっていうかメンバ覚え直すのが面倒で

801 :デフォルトの名無しさん:2010/02/02(火) 23:32:13
>>798
MEFってなに?
ぐぐったらメトロイーサネット・・・とかでてくるしw

802 :デフォルトの名無しさん:2010/02/02(火) 23:32:57
>>801
Managed Extensibility Framework

803 :デフォルトの名無しさん:2010/02/02(火) 23:35:07
Form.TextがWindow.Titleになってるだけでイライラ度パない。

804 :デフォルトの名無しさん:2010/02/02(火) 23:37:02
>>803
そういう名前レベルの互換性ないよね
まるで俺が設計するクラスの名前のようだ

805 :デフォルトの名無しさん:2010/02/02(火) 23:40:21
良くも悪くもピュアOOPに近づけようとしてるんでしょ
Textじゃ何を指してるか曖昧すぎてわからないからね

806 :デフォルトの名無しさん:2010/02/02(火) 23:43:47
まあTextなんてのはWin32の影響受けまくってて微妙だったのでTitleの方がすっきりする

807 :デフォルトの名無しさん:2010/02/02(火) 23:45:00
あとイメージ関係の扱いが強烈に煩雑なのがな

808 :デフォルトの名無しさん:2010/02/02(火) 23:48:04
Imagingに関しては言えてるかも知れない。
MSとしては何でもやれるように汎用性を持たせたかったんだろうけど
何でもやれる必要性がある人って少ないのよね。
特に移行段階では。

809 :デフォルトの名無しさん:2010/02/02(火) 23:58:00
>>802
ありがとう
面白そうです
勉強中の身でためになりました
あとDIコンテナというのもあるですね

810 :デフォルトの名無しさん:2010/02/03(水) 00:22:04
あるですね

811 :デフォルトの名無しさん:2010/02/03(水) 00:43:22
emunってどこで宣言すべきだと思う?
全てのクラスから参照できるよう全てのクラスの外で宣言すべきだと思う?

812 :デフォルトの名無しさん:2010/02/03(水) 00:51:24
発想が逆だろ
必要な範囲から見えればそれでいいじゃねえか

813 :デフォルトの名無しさん:2010/02/03(水) 00:52:58
>>807
クラスいっぱいでよくわからん。MSDN見ても要領を得ない

814 :デフォルトの名無しさん:2010/02/03(水) 00:54:23
複数クラスで共通の汎用的なものなら外で、特定の単一クラス限定ならそのクラス内でいいんじゃないの?

815 :デフォルトの名無しさん:2010/02/03(水) 01:26:28
でいいんじゃないの?

816 :デフォルトの名無しさん:2010/02/03(水) 03:07:23
>>812
>>814
共通のemunを使うのはとあるクラスの中とメイン関数の中の二カ所。
これだったら全てのクラス外で宣言しないといかんかなぁ、と思って。

817 :デフォルトの名無しさん:2010/02/03(水) 06:02:51
メインにだらだらコードを書くな。

818 :デフォルトの名無しさん:2010/02/03(水) 06:23:38
オレは分け方悩んだらメインに入れてる
5万行くらいだけどファイル管理も楽だよ

819 :デフォルトの名無しさん:2010/02/03(水) 08:38:06
うごきゃいい

820 :デフォルトの名無しさん:2010/02/03(水) 09:39:30
たしかに動かなかったら品質も保守性もへったくれもないわな。

821 :デフォルトの名無しさん:2010/02/03(水) 09:53:44
MyClassでしか使わないからといってMyClass.MyEnum.Hogeのように
外から内部型にアクセスさせるのは原則ガイドライン違反だよ

822 :デフォルトの名無しさん:2010/02/03(水) 10:03:42
確かに、クラス内の集合的な識別子(enum/class/struct)は普通は外部に公開はしないわな。
するなら最初からそのクラスの外側に並べて書けばいいわけだし。

823 :デフォルトの名無しさん:2010/02/03(水) 11:52:08
名前空間で縛って外に出せばいい

あれJaneに次スレ候補ボタンなんかあったっけ?

824 :デフォルトの名無しさん:2010/02/03(水) 12:03:05
名前空間にかかわらず,同一ライブラリ(もしくは同時に使うことが
想定されるライブラリ群)で同じ名前の型が存在するのはガイドライン違反だ
結局わかりやすくて区別しやすい名前を付けろということ

825 :デフォルトの名無しさん:2010/02/03(水) 12:20:05
>>824
System.Drawing.Font
SlimDX.Direct3D9.Font

普通にかぶってますがなにかー
というかほぼ同時に使うものだちゅうねんめどいわー

826 :デフォルトの名無しさん:2010/02/03(水) 12:20:48
ガイドライン違反といっても所詮ガイドラインでしかないよね

基本的なクラス類が重複する場合はこまるよね
FormとMDX両方使いたいときに座標関連(Pointだっけ?)が両方で大量に定義されていて大変だったな

上のほうで座標が何でdoubleなのかって書いてあるけど答えはfloatだと精度不足だからです
昔からプログラムやってる人にはおなじみですが
float a = 0.0F;
for(int i=0;i<10;i++)
{
a += 0.1F;
richTextBox1.AppendText(a.ToString()+"\n");
}
で実行結果は
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8000001
0.9000001
1

827 :デフォルトの名無しさん:2010/02/03(水) 12:21:28
string stTarget
= http://gimpo.2ch.net/namazuplus/
stTarget.Replace("2ch.net/", "2ch.net/test/read.cgi/");
MessageBox.Show(stTarget);
結果: http://gimpo.2ch.net/namazuplus/
置換されてません どうすればいいでしょうか?

よろしくお願いします

828 :デフォルトの名無しさん:2010/02/03(水) 12:24:03
>>827
置換結果は戻り値です
string result = stTarget.Replace("2ch.net/", "2ch.net/test/read.cgi/");

MessageBox.Show(result);

2chブラウザ作ってるの?

829 :デフォルトの名無しさん:2010/02/03(水) 12:26:50
>>826
たったそれだけの足し算でそんな誤差でるのか

>>828
>2chブラウザ作ってるの?
そうとしか

830 :デフォルトの名無しさん:2010/02/03(水) 12:31:04
>>826
なんでdoubleかじゃなくてなんでGDI+でfloatなのかって話だったような

831 :デフォルトの名無しさん:2010/02/03(水) 12:32:29
>>829
0.1は2進数では表現できないからね

結果の最後の1も1.0じゃないし…

(a==1.0F).toString()がfalseになる

832 :デフォルトの名無しさん:2010/02/03(水) 12:34:29
>>831
最近そっち方面やってないので忘れちゃったけど誤差吸収するための
なにかあったよね・・シグマじゃないや・・・

833 :デフォルトの名無しさん:2010/02/03(水) 12:37:06
>>830
そうだったのか orz
斜め読みすぎ

834 :デフォルトの名無しさん:2010/02/03(水) 12:43:11
思い出した
EPSILONか

835 :デフォルトの名無しさん:2010/02/03(水) 12:55:37
というか、内部表現が2進数の浮動小数点数を10進数ベースの小数の計算して
誤差がどうとか、アホとしか言いようがない。
計算誤差が嫌ならdecimal型を使いなさい。

836 :デフォルトの名無しさん:2010/02/03(水) 12:57:08
2chブラウザ作るやつ多いな

俺も作ったけどデータ取ってきたり表示したりする部分は
どうにかなるが最後まで決まらないのがUIなんだよな・・
よく見るタイプ、ガジェットタイプ、proxyタイプ全部作ったけど
いまだに納得いくのができない

837 :デフォルトの名無しさん:2010/02/03(水) 12:58:20
>>835
その辺は許容誤差と計算速度のトレードオフでは?

838 :デフォルトの名無しさん:2010/02/03(水) 12:59:38
>>836
UI以外の部分、公開して

839 :デフォルトの名無しさん:2010/02/03(水) 13:01:10
初歩から1日1つ聞いていって何日したらものになるかちょっと興味がある

840 :デフォルトの名無しさん:2010/02/03(水) 13:02:34
最終的出力の座標だけなら単精度で十分すぎるくらいでしょう
WPFではコントロールのレイアウトやアニメーションの計算なども
全て一貫して小数でやってるから精度が必要

841 :デフォルトの名無しさん:2010/02/03(水) 13:03:00
>>838
がんばれ

842 :デフォルトの名無しさん:2010/02/03(水) 13:06:24
>>839
初歩もいろいろあるからなあ

他言語で開発経験があってC#という道具の使い方をマスターしてない初歩な人か
多言語すら経験のないC#が処女言語な初歩じゃあ偉い違う

俺は前者だけど2chとのやり取りについてまとめたサイトがあることを知らないで
やったのでView部分は別にして内部の処理は1週間くらい

843 :デフォルトの名無しさん:2010/02/03(水) 13:08:43
>>841
うん。がんばる。。

844 :デフォルトの名無しさん:2010/02/03(水) 13:09:02
関数のリターン値を、intやdoubleやshortなど違った型に出来ませんでしょうか?

845 :デフォルトの名無しさん:2010/02/03(水) 13:09:44
>>844
普通に

846 :デフォルトの名無しさん:2010/02/03(水) 13:10:40
で、ここまでは本体部分だけの話なんだけどスキンとかスクリプトを動かすとなると
HTML、CSS、Javascript、正規表現とwebに関する知識もいる
こいつらとIEコンポーネントの癖も知らないといけない
proxyやるならIEとFireFoxで動かないスクリプトの書き方があるとかも
理解してないと問題の切り分けすらできないけどね

847 :デフォルトの名無しさん:2010/02/03(水) 13:12:45
>>829
単精度なんてその程度。仮数部23bitsだと10進数で小数点以下6.9桁分の情報しかない
ttp://www.google.co.jp/search?hl=ja&q=log+2^23&btnG=%E6%A4%9C%E7%B4%A2&lr=&aq=f&oq=

>>831
「有限桁で」という文言を入れよう

848 :デフォルトの名無しさん:2010/02/03(水) 13:14:13


849 :デフォルトの名無しさん:2010/02/03(水) 14:57:45
Visual C# 2008 Expressにて、
WebBrowserコントロールでブラウザ機能を内蔵したプログラムを作成しているのですが、
「履歴に残さない」「キャッシュからリードしない」という指定を付けてブラウジングする方法を探しています。

検索して探した結果、
.Net2.0の時点では、navigate2メソッドにて引数を渡すことで実現できたように書いて有りますが、
http://capsulecorp.studio-web.net/tora/cs/mshtml/WebBrowser.html
現行のVisual C# 2008(.Net3.5)ではnavigate2メソッドは無いようです。

同じようなことを実現剃る方法ってありますか?

850 :デフォルトの名無しさん:2010/02/03(水) 15:27:54
そのページと
同じようにやれば
navigate2メソッド
使える

851 :デフォルトの名無しさん:2010/02/03(水) 15:33:45
VS2008の設定について教えてください。

{ を入力すると対応する } を自動で挿入してくれる機能は設定にありますか?
コード入力時に { を入力すると } を入力するまでずっとエラーメッセージがでるのがうざいです。
eclipse だと { や ( ” などを入力すると自動で閉じる側も入力されるので、同様な操作にしたいのです。

852 :デフォルトの名無しさん:2010/02/03(水) 15:44:02
>>851
{を書いた時点で}も書けばいいじゃん

{} って書いて→ { 間に書き足す }

853 :デフォルトの名無しさん:2010/02/03(水) 15:46:50
スニペット使えば

854 :デフォルトの名無しさん:2010/02/03(水) 15:51:57
>>853
つかってみる

855 :デフォルトの名無しさん:2010/02/03(水) 18:13:50
ifとかwhileとかforとか大抵の制御構文はコードスニペットで
自動でブロック作ってくれるじゃん
メソッド定義や配列などの初期化なんかそこまで頻繁に使うものじゃなし

856 :デフォルトの名無しさん:2010/02/03(水) 19:44:46
メインフォームにプログレスバーがあって、そのうえにユーザーコントロールを貼り付けたんだけど、
そのユーザーコントロールから、メインのプログレスバーを利用したい場合は、どうしたらいいのでしょうか?

857 :デフォルトの名無しさん:2010/02/03(水) 19:57:42
>>856
メインのプログレスバーのインスタンスをユーザーコントロールに渡せばいい。

858 :デフォルトの名無しさん:2010/02/03(水) 20:00:52
>>857
ありがとうございます。早速ためしてみます。W

859 :デフォルトの名無しさん:2010/02/03(水) 21:55:55
List<string>型の配列から特定の文字に合致する項目を削除しようと思っています。

List<string>型の配列は既にソートがかけられているものとします。


【方法1】
.RemoveAll() にdelegate関数を引数として渡して特定の文字と一致する項目を削除させる。

【方法2】
.BinarySearch() で特手の文字と一致する配列のインデックス番号を調べ、
.RemoveAt() でそのインデックス番号の配列を削除する。


とではどちらの方がより高速に処理できますか?

860 :デフォルトの名無しさん:2010/02/03(水) 22:01:09
速度を追求すると痛い目見るぜ

861 :デフォルトの名無しさん:2010/02/03(水) 22:28:08
測ったわけじゃないけど、合致する項目が多ければ直感的には1の方が速いだろうな
でもマジレスすると>>859みたいなところがボトルネックになることはまず無いので気にしないのが正解

862 :デフォルトの名無しさん:2010/02/03(水) 22:40:02
あまり気にするなということですね、ありがとうございます。

863 :デフォルトの名無しさん:2010/02/03(水) 22:53:05
>>860
チューニングに浪費した時間プライスレスですね分かります

864 :デフォルトの名無しさん:2010/02/03(水) 23:02:05
そもそも動いてない段階でチューニングもクソもない
全く意味がない

865 :デフォルトの名無しさん:2010/02/03(水) 23:24:48
画像と数値が混合した人別のデータがあるんだけど、これをお手軽にデータベースにするにはどんなワザを使えばよいですかね?

866 :デフォルトの名無しさん:2010/02/03(水) 23:38:53
画像もデータベースに入れたいの?

867 :デフォルトの名無しさん:2010/02/03(水) 23:42:20
コンソールアプリを作ってるんだけど、たとえばヌコクラス(Class Nuko)を作ってオブジェクトを多数作成するとする。

#名前、 性別、 年齢、 毛色数
たま、 ♂、 5、 2
ミーちゃん、 ♀、 2、 3
田子作、 ♂、 13、 1






こんな感じでざっと1000匹に対応して1000個のクラスオブジェクトを作るとする。
上記の属性はテキストファイルにでも保存するとして、問題はそれを読み込んでヌコクラスの
オブジェクトを作る際なんだけどみんなならどうやる?

Main()メソッドの中でテキストから読み込んでNukoクラスのオブジェクトをfor文で回して作る?

それともテキストを読み込んでNukoクラスを1000個生成するのに専用のクラスを別途作成する?

どういう流儀でやるべきか、そこんところがよう分からんのよ(´・ω・`)

868 :デフォルトの名無しさん:2010/02/03(水) 23:48:47
どうでもいい
別の専用のクラスを作るとしてもそのクラスの中でやることは同じだろ
アプリケーションの規模や、その処理をどう使うかなどによるので一概には言えない

869 :デフォルトの名無しさん:2010/02/03(水) 23:50:10
どういう流儀よりも何したいのかだろ

870 :デフォルトの名無しさん:2010/02/03(水) 23:53:22
>>866
そう。画像というかサムネールなんだけどね。バイナリでバーっとファイルに落とすのも今ひとつだし、なにか便利な物があるのかなーと思って。

871 :デフォルトの名無しさん:2010/02/03(水) 23:53:44
forも専用クラスも作らずXmlSerializer使います

872 :デフォルトの名無しさん:2010/02/03(水) 23:53:55
intとint[]をそれぞれメソッドの引数にとり、メソッド内でそれぞれの値を変更した場合
メソッドの外に戻ったときそれぞれの値は変更されていますか?それとも渡したときのままですか?

873 :デフォルトの名無しさん:2010/02/03(水) 23:54:34
そのくらい試せハゲ
前者変わらない、後者変わる

874 :デフォルトの名無しさん:2010/02/03(水) 23:54:51
>>869
何したいのかも分からんのよ(´・ω・`)

875 :デフォルトの名無しさん:2010/02/03(水) 23:55:19
後者は変わるの?

876 :デフォルトの名無しさん:2010/02/03(水) 23:55:29
じゃあプログラム辞めろ

877 :デフォルトの名無しさん:2010/02/03(水) 23:56:20
intは値型だがint[]は参照型だから変わるよ

878 :デフォルトの名無しさん:2010/02/03(水) 23:57:49
たとえばデータを読み込む専用の抽象クラスを定義して
それをCSV形式用のクラスやXML形式用のクラスなどが継承するようにすると
いろんなフォーマットに対応したりできる
そういうのが必要なければ読み込みメソッド1個で十分
結局使い方による

879 :デフォルトの名無しさん:2010/02/03(水) 23:57:51
>>868
別のクラスつくってそこで読み込みメソッドを新たに作る?
読み込んだあと1000個からなるNukoクラスの配列を作って
実際に処理するところにコピーするわけ?

うーむ・・・

880 :デフォルトの名無しさん:2010/02/03(水) 23:58:38
>>876
やーだお(´・ω・`)

881 :デフォルトの名無しさん:2010/02/03(水) 23:58:50
>>874
少なくとも使い回ししないのならクラス作る意味が無い
メソッドで十分

882 :デフォルトの名無しさん:2010/02/04(木) 00:01:37
( -ω-)スヤスヤ…

883 :デフォルトの名無しさん:2010/02/04(木) 00:03:03
>>878
なるほど・・・

Main()メソッドの隣に読み込み専用のReadText()メソッドでもstaticで作ってそこで読ませると。
ReadText()メソッドは引数としてNukoの配列を参照渡ししてそいつに読み込んで生成したオブジェクトを
返させるわけね、こんな感じに↓

static void ReadText( Nuko [] nukkonuko )
{
 ・・・・
}

884 :デフォルトの名無しさん:2010/02/04(木) 00:04:15
つか>>867って単なる練習でしょ?
練習中に流儀とか気にしなくていいから心の赴くままにやりなさいよ

885 :デフォルトの名無しさん:2010/02/04(木) 00:04:49
遊びで作るなら、

DataTable.ReadXml(
for(
 new nuko( row[ i ] );

くらいで十分じゃないか? 確かこんなのがあったよね。

886 :デフォルトの名無しさん:2010/02/04(木) 00:04:56
static Nuko[] ReadText()
{
 ・・・・
}
それならこっちの方がいい
読み込む前に配列の要素数とか決められないだろ

887 :デフォルトの名無しさん:2010/02/04(木) 00:06:41
>>886
> 読み込む前に配列の要素数とか決められないだろ

そっか、だったら param を追加すべきだったか(´・ω・`)

static void ReadText( param Nuko [] nukkonuko )
{
 ・・・・
}

888 :デフォルトの名無しさん:2010/02/04(木) 00:08:29
try{
using(FileStream stream = File.OpenRead("nukonuko.txt")){

Xmlserializer serializer = new XmlSerializer(typeof(Nuko));
return (Nuko[])serializer.Deserialize(stream);
}
}(FileNotFoundException){ return new Nuko[0]; }

889 :デフォルトの名無しさん:2010/02/04(木) 00:09:06
1000の単位だと、DB使いたくなるな。

890 :デフォルトの名無しさん:2010/02/04(木) 00:09:25
>>887
おい

891 :デフォルトの名無しさん:2010/02/04(木) 00:09:59
>>888
(´・ω・`) ?

892 :デフォルトの名無しさん:2010/02/04(木) 00:10:28
つ NHibernate


893 :デフォルトの名無しさん:2010/02/04(木) 00:11:17
>>889
漢なら10000でもCSV

894 :デフォルトの名無しさん:2010/02/04(木) 00:11:42
>>887
もしネタじゃなくて本気で言ってるんだったら、当分クラスなんか忘れて今すぐ超入門書に戻りなさい

895 :デフォルトの名無しさん:2010/02/04(木) 00:12:09
>>893
おい

896 :デフォルトの名無しさん:2010/02/04(木) 00:12:23
おいおいお

897 :デフォルトの名無しさん:2010/02/04(木) 00:13:23
>>894
やーだお(´・ω・`)

898 :デフォルトの名無しさん:2010/02/04(木) 00:13:58
XmlSerializerはクラスもプロパティもコンストラクタもパブリックじゃないといけないから
シリアライズ用のクラスを別途用意することになったりして扱いにくい

899 :デフォルトの名無しさん:2010/02/04(木) 00:14:18
>>897
クソして寝ろ

900 :デフォルトの名無しさん:2010/02/04(木) 00:20:19
なんだ、構ってちゃんか。そろそろ終了で。

901 :デフォルトの名無しさん:2010/02/04(木) 00:21:34
>>877
> intは値型だがint[]は参照型だから変わるよ

なんとorz
それ知らないでプログラム組んだら偉いことになりますね

参照型はref/outの接頭語を付けて受け渡しすることを厳守する、という決まりを貫かなかったのはなぜでしょう?

902 :デフォルトの名無しさん:2010/02/04(木) 00:24:14
参照型の値渡しだから決まりも糞もない

903 :デフォルトの名無しさん:2010/02/04(木) 00:25:43
それって悪名高いポインタと同じことでは?!

904 :デフォルトの名無しさん:2010/02/04(木) 00:26:13
キャストできないから問題ない

905 :デフォルトの名無しさん:2010/02/04(木) 00:26:33
ref/outはできる事の範囲が違うだろが


906 :デフォルトの名無しさん:2010/02/04(木) 00:28:28
これだから低能は

907 :デフォルトの名無しさん:2010/02/04(木) 00:29:27
まったくだ

908 :デフォルトの名無しさん:2010/02/04(木) 00:30:58
319 名前:デフォルトの名無しさん[sage] 投稿日:2010/01/27(水) 11:56:14
参照の値渡し
参照の参照渡し 要ref/out
値型の値渡し
値型の参照渡し 要ref/out

この程度のことを何度も何度もいい加減ウザイんだが

909 :デフォルトの名無しさん:2010/02/04(木) 00:33:19
ポインタが悪名高いって、何がどうして悪名高いのか全く理解してねえだろ。
人聞きの悪い。

910 :デフォルトの名無しさん:2010/02/04(木) 00:37:50
ListView のオーナードローで質問です
ListView.DrawSubItem イベントハンドラにおいて、非選択状態・選択状態・選択状態(非アクティブ)の
三つの状態を判定して、前景色と背景色を変更して描画しています
それと同時に、項目ごとに水平方向の配置を StringAlignment.Far などと設定しているんですが
例えば StringAlignment.Far だと右側にベターっとひっつきます
オーナードローでなくお任せの場合や、DrawString ではなく DrawText で表示する場合は
テキストの右側に少し余白がいい感じで表示されます
この余白を DrawString でも表示したいんですが、どうしたら良いでしょうか?

911 :デフォルトの名無しさん:2010/02/04(木) 00:41:38
ポインタは悪だー!ポインタを許すなー!

912 :デフォルトの名無しさん:2010/02/04(木) 00:44:01
最近visual C# 2008を使い始めました。
小さなプログラムを作って練習していますが、
新しく作成するたびにいちいちプロジェクトを作成するのは面倒です。
そこでコマンドプロンプトからコンパイラを呼び出そうとしましたが、
それがどこにあるかわかりませんでした。
皆さんは例えばhello worldレベルの小ささのプログラムを作成するとき、
いちいtプロジェクトを作成して対処していますか?
それともIDEを使わずに対処していますか?

913 :デフォルトの名無しさん:2010/02/04(木) 00:45:38
プロジェクトを使いまわせばいいだろ


914 :デフォルトの名無しさん:2010/02/04(木) 00:45:47
そんなん作らないから知らん。

915 :デフォルトの名無しさん:2010/02/04(木) 00:49:05
簡単なコード懸賞ならbutton_clickに書けばいい

916 :デフォルトの名無しさん:2010/02/04(木) 00:51:27
>>910
知らんけどStringFormat.MeasureTrailingSpaces

917 :デフォルトの名無しさん:2010/02/04(木) 00:53:02
StringFormatFlagsのマチガイ

918 :デフォルトの名無しさん:2010/02/04(木) 00:54:53
C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe


919 :デフォルトの名無しさん:2010/02/04(木) 00:55:50
自己解決してました。

920 :デフォルトの名無しさん:2010/02/04(木) 01:02:36
どういたしまして。

921 :デフォルトの名無しさん:2010/02/04(木) 01:04:33
>>918
ありがとうございました

922 :デフォルトの名無しさん:2010/02/04(木) 01:09:46
どういたしまして。

923 :デフォルトの名無しさん:2010/02/04(木) 01:11:15
レベルの低いスレですね

924 :デフォルトの名無しさん:2010/02/04(木) 01:11:46
それでいいのだ

925 :910:2010/02/04(木) 01:17:59
>>916-917
ありがとうございます
ちょっとやってみましたが変化なしです
ただ、正しく理解していないせいかもしれませんので
もうちょっと調べてみます

926 :デフォルトの名無しさん:2010/02/04(木) 01:39:23
文字列末尾に半角空白入れるとかDrawStringに渡すRectangleの左右を少し絞るとかすれば?

927 :デフォルトの名無しさん:2010/02/04(木) 01:44:39
グループボックスのenableをfalseにしたら中のコントロールのenableもfalseになるけど
trueにしたときはならないのね・・・

928 :デフォルトの名無しさん:2010/02/04(木) 01:49:30
入り口開け閉めしてるだけのようなもんだから、中の状態は変わらんわ

929 :910:2010/02/04(木) 01:53:33
>>926
報告しようとしたら既にレスが

ご指摘の通り、右寄せと左寄せの項目に関しては
Rectange の Reft と Left の値を調整して DrawString するようにして
希望する動作を得ました
ありがとうございました

930 :デフォルトの名無しさん:2010/02/04(木) 02:48:00
>>928
調べてみたらデザイナで一つのコントロールのEnableをfalseにして
それをコピーしてたからEnableがtrueなのとfalseなのがまざってたよ・・・
ありがとう

931 :デフォルトの名無しさん:2010/02/04(木) 03:39:45
>>908
参照の値渡し           → int[]
参照の参照渡し 要ref/out   → ???
値型の値渡し           → int
値型の参照渡し 要ref/out   → ref/out int

上から2番目の用途って何ですか?

932 :デフォルトの名無しさん:2010/02/04(木) 03:52:23
var x1 = new int[] { 1,2,3 }; test1(x1);
var x2 = new int[] { 1,2,3 }; test2(ref x2);

void test1(int[] d) { d = new int[]{ 3,4,5 }; }
void test2(ref int[] d) { d = new int[]{ 3,4,5 }; }


933 :デフォルトの名無しさん:2010/02/04(木) 04:01:11
>>932
> void test1(int[] d) { d = new int[]{ 3,4,5 }; }
> void test2(ref int[] d) { d = new int[]{ 3,4,5 }; }

どっちも結果は同じですか?

934 :デフォルトの名無しさん:2010/02/04(木) 04:05:41
実行してみろクソハゲ

935 :デフォルトの名無しさん:2010/02/04(木) 04:08:22
>>933
値渡しと参照渡しの区別が付くようになったら分かるよ。

936 :デフォルトの名無しさん:2010/02/04(木) 04:18:40
>>932
void test1(int[] d) { d = { 3,4,5 }; }
void test2(ref int[] d) { d = { 3,4,5 }; }

こうしたらどっちも結果は同じじゃね?


937 :デフォルトの名無しさん:2010/02/04(木) 04:37:56
>>936
お前もう死ね

938 :デフォルトの名無しさん:2010/02/04(木) 09:50:02
ClickOnceにてWindowsフォームアプリケーションを作成し、ユーザーに利用してもらっていますが、ユーザーが増えてきたため、バージョンアップが行われる都度に何らかのアナウンスをしたいと考えています。
現在のアプリケーションの更新方法は、
・アプリケーションが実行されるたびに更新バージョンがないか確認する。
・確認するのはアプリケーション開始後
にしています。

ここで、次のようなことは可能でしょうか?もし可能でしたらどのようにすればよろしいでしょうか。
・アプリケーションの起動時に更新バージョンがないか確認する。
・ただし、更新バージョンがないか確認する通信中のステータスを表す小窓は表示しない。(毎回この小窓が表示されるのが煩わしいと思うユーザーがいるため)
・更新バージョンがあるときは、メインフォームのステータスバーに「新しいバージョンがあります。再起動してください。」と表示させる。

お手数ですが、よろしくお願いいたします。



939 :デフォルトの名無しさん:2010/02/04(木) 10:08:17
>>938
いや、それを自動でやってもらうためのClickOnceなんだが……。
毎回起動のたびに配信サーバーにバージョンチェックしに行ってるだろ?

940 :デフォルトの名無しさん:2010/02/04(木) 10:12:17
>>939
バージョンチェックしに行ってますが…何か?

941 :デフォルトの名無しさん:2010/02/04(木) 10:19:10
clickonceなんか使うより自分で作ったほうがいいよ

942 :デフォルトの名無しさん:2010/02/04(木) 10:19:11
picturebox(親)の上にpicturebox(子)を配置して、親の上でだけ自由に
移動できるプログラムを作ろうとしています。
以前教えてもらったサイトを参考に下記のようにコードを書きました。

Point mouseDownPoint = Point.Empty;

private void PictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
{
Rectangle moveRect = new Rectangle(0,0,240,320);
//ドラッグとする移動範囲を超えたか調べる
if (moveRect.Contains(e.X, e.Y))
{
PictureBox1.Location = new Point(PictureBox1.Location.X + e.X - mouseDownPoint.X, PictureBox1.Location.Y + e.Y - mouseDownPoint.Y);
}
}
}

_MouseDown()でx軸y軸を取得、Rectangleで親のサイズを指定して動きを
限定したかったのですが、親サイズから出て(隠れて)しまいます。
コードをどのように修正すれっば良いのでしょうか?

943 :デフォルトの名無しさん:2010/02/04(木) 10:27:10
すれっば

944 :デフォルトの名無しさん:2010/02/04(木) 10:31:51
>>939さんへ。
>>938です(※>>940の人は別人です)。
わがままかもしれませんが、

・起動時に裏で配信サーバーにバージョンチェックをしに行く。
・その際に通信ウィンドウを出さない(毎回表示されるとユーザーがいい印象を持たないかもしれないため)。
 また、その時点では最新バージョンへの更新を行わない。
・新しいバージョンがあればフォームのステータスバーに
 「最新のバージョンがあるので再起動してください。」と表示させる。
・再起動時に自動で最新バージョンを取得する。

という流れを描いているのですが、無理でしょうか…。


945 :デフォルトの名無しさん:2010/02/04(木) 10:37:31
ClickOnceに用意されているAPIを自分で呼べばいい

946 :デフォルトの名無しさん:2010/02/04(木) 10:58:42
>>938,944
つーかそんなせんでもいい行儀の悪いことをわざわざすんな。
# 通信ウィンドウを表示しないとか。
# 表示するのがClickOnceという仕組み。
# 元々サーバー上にあるソフトウェアをオフラインにダウンロードして実行するという形式だから

前のバージョンからの更新分の表示については、こんな方法はどうだ?
・更新履歴の情報をリソースに蓄えておく
・アプリケーション設定ファイルに前回起動した自分自身のバージョンを記録しておく
・前回起動したバージョンと今のバージョンが違う場合には、差分範囲の更新履歴を起動時に表示する

947 :デフォルトの名無しさん:2010/02/04(木) 10:58:59
te

948 :デフォルトの名無しさん:2010/02/04(木) 11:07:10
picturebox1(親)
picturebox2(子)
と仮定すると

picturebox2.Parent.Locationとか
picturebox2.Parent.ClientRectangleとか
したほうがいいかもね

picturebox2の親がなんであろうがOKになる

ただしControls.Addしておかないと親が居ないのでこけるけど

949 :デフォルトの名無しさん:2010/02/04(木) 11:34:24
あとこういうのってゲーム作ったことあると簡単なんだけどね・・・

親の表示範囲(ClientRectangle)から子を出したくない場合は
子の左上頂点が親の範囲表示範囲内にいるかどうか判定して
居なければその範囲内に戻せばいいだけ

まず左上付近の判定
多分左上が(0,0)はいじれないと思うので
>>948の例だとpicturebox2.Topとpicturebox2.Leftがマイナスになってれば0に戻す

//左上処理
if(picturebox2.Left < 0) picturebox2.Location = new Point(0,picturebox2.Top);
if(picturebox2.Top < 0) picturebox2.Location = new Point(picturebox2.Left,0);

//右下の処理
int AW = picturebox2.Parent.Width - picturebox2.Width;//もしかしたら幅なので座標系として見る場合は-1いるかも
int AH = picturebox2.Parent.Height - picturebox2.Height;//もしかしたら高さなので座標系として見る場合は-1いるかも

if(AW > picturebox2.Left) picturebox2.Location = new Point(AW,picturebox2.Top);
if(AH > picturebox2.Top) picturebox2.Location = new Point(picturebox2.Left,AH);

950 :デフォルトの名無しさん:2010/02/04(木) 11:35:36
ごめん右下はこれだ

//右下の処理
int AW = picturebox2.Parent.ClientRectangle.Width - picturebox2.Width;//もしかしたら幅なので座標系として見る場合は-1いるかも
int AH = picturebox2.Parent.ClientRectangle.Height - picturebox2.Height;//もしかしたら高さなので座標系として見る場合は-1いるかも

951 :デフォルトの名無しさん:2010/02/04(木) 11:51:39
>>946
>>945さん
>>946さん
ありがとうございます。
立ち上がったままPCを操作するような慌ただしい状況下にあるユーザーが多いので、起動時の通信ウィンドウを出さずに更新情報を見に行き、
リアルタイムにより新しいバージョンがあることを通知したかったんです。

コードで最新バージョンが何かをサーバー上(レンタルサーバー上にアップしています)
に見に行く方法があったりもするのでしょうか。
APIの命令を記述することは今までやったことがないのですが、
何か良い参考書やサイトはありますでしょうか。

たびたびすみません、よろしくお願いします。




952 :デフォルトの名無しさん:2010/02/04(木) 11:54:02
印刷プレビューダイアログボックスを使わずに
フォーム上に印刷プレビューコントロールを配置してプレビュー表示したいと思っていますが、
印刷プレビューダイアログボックス内の虫眼鏡による拡縮機能を利用するにはどうすればよいでしょうか。

953 :デフォルトの名無しさん:2010/02/04(木) 12:11:37
>>942
ごめん
>>948>>949は参考程度にしておいてくれ(不等号の向き間違ってたりする、恥ずかしいw

windowsの場合はMouseイベントは純粋に移動だけ行って
pictureboxのLocationChangedイベント内で下記処理を行ったら思うように動いた

void picturebox2_LocationChanged(object sender, EventArgs e)
{
int wPic2Left = picturebox2.Left;
int wPic2Top = picturebox2.Top;
//wPic2Left += e.X - mousePoint.X;
//wPic2Top += e.Y - mousePoint.Y;
//左上処理
if (wPic2Left < 0) wPic2Left = 0;
if (wPic2Top < 0) wPic2Top = 0;
//右下の処理
int AW = picturebox2.Parent.ClientRectangle.Width - picturebox2.Width;//もしかしたら幅なので座標系として見る場合は-1いるかも
int AH = picturebox2.Parent.ClientRectangle.Height - picturebox2.Height;//もしかしたら高さなので座標系として見る場合は-1いるかも
if (AW < picturebox2.Left) wPic2Left = AW;
if (AH < picturebox2.Top) wPic2Top = AH;
picturebox2.Location = new Point(wPic2Left, wPic2Top);
}

954 :デフォルトの名無しさん:2010/02/04(木) 13:09:25
>>948さんに教えてもらったやり方でいろいろ試していました。

>>953
レスありがとうございました。この方法で親の枠内でだけ子が動けるよ
うになりました。
この時、枠から外に出ようとすると子枠のちらつきが起きてしまいます。
子のlocationが枠から出たら戻すので起こるのかなと思いましたが
_mousemoveに移動してみたりrefreshを入れてみたりしていますが、とて
も難しいです。

955 :デフォルトの名無しさん:2010/02/04(木) 13:14:26
>>954
LocationChangedじゃなくLocationChangingイベントがあれば
Locationを変更しようとしたときに干渉できるのでその後起こる
であろう描画イベント前に位置補正できるんだろうけどね

LocationChangedイベントだとLocationを変えた後一旦描画して
から呼ばれる感じなのでどうしてもねえ

Paintイベントで補正もやってみたけど余計変になった

956 :デフォルトの名無しさん:2010/02/04(木) 13:36:58
Formを継承して自分でプログレスバーを作って、main formから呼び出すとちゃんと動くんだけど、
それを他に作ったユーザーコントロールから使うと、ダイアログは出るんだけど、バーが表示されません。
どうしたらよいでしょうか?

957 :デフォルトの名無しさん:2010/02/04(木) 13:41:31
2ちゃんで聞いてみる

958 :デフォルトの名無しさん:2010/02/04(木) 13:42:21
>>957
いらっしゃい

959 :デフォルトの名無しさん:2010/02/04(木) 13:43:36
>>956
その周辺のコード書け

960 :デフォルトの名無しさん:2010/02/04(木) 13:50:49
C++で書いたDLLをC#で使う場合の注意事項など
を解説したサイトとかありますでしょうか

たぶんメモリ関連が一番の注意事項だと思うのですが
よくわかりません

961 :デフォルトの名無しさん:2010/02/04(木) 13:53:32
一番の注意事項はAny CPUならDLLを32/64両方用意する
用意しないならx86で作る、じゃないかなあ。

962 :956:2010/02/04(木) 13:56:47
事故解決しました。
DoEventsを通っていませんでした。

963 :デフォルトの名無しさん:2010/02/04(木) 13:58:54
DoEvents……アレな匂いが漂ってきたぜ

964 :デフォルトの名無しさん:2010/02/04(木) 14:09:38
>>961
Any CPUというのがよくわからないのですがx86(つまり32bitDLL)として作っておいて
OSやCPUの32bit互換機能に頼って使えるようにしておくということですかね?

Any CPUに関してはVS2010になるとexeに関してはx86とするとか
あまりいい検索結果はなかったので結構重要なことなんですね

965 :デフォルトの名無しさん:2010/02/04(木) 14:16:33
>>954
別解
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
mPos = e.Location;
Point p = this.PointToScreen(pictureBox1.Location);
p.Offset(e.Location);
Cursor.Clip = new Rectangle(p, new Size(pictureBox1.Width - pictureBox2.Width + 1, pictureBox1.Height - pictureBox2.Height + 1));
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (mPos == Point.Empty) return;
pictureBox2.Left += e.X - mPos.X;
pictureBox2.Top += e.Y - mPos.Y;
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
Cursor.Clip = Rectangle.Empty;
mPos = Point.Empty;
}

966 :デフォルトの名無しさん:2010/02/04(木) 14:28:46
PrintPreviewコントロール(スクロールバー表示中)の上でホイールを回したり
PageDownが効くようにするにはどうすればいいでしょうか。

967 :デフォルトの名無しさん:2010/02/04(木) 14:35:30
>>966
ぐぐればOK

968 :デフォルトの名無しさん:2010/02/04(木) 14:36:45
イベントハンドラで好きなように処理すれば

969 :デフォルトの名無しさん:2010/02/04(木) 14:56:32
>>967>>968
2ちゃんで聞いてみます。

970 :デフォルトの名無しさん:2010/02/04(木) 15:07:45
>>965
レスありがとうございました。思ったとおりの動きができました。
>Point p = this.PointToScreen(pictureBox1.Location);
>p.Offset(e.Location);
>Cursor.Clip = new Rectangle(p, new Size(pictureBox1.Width - pictureBox2.Width + 1, pictureBox1.Height - pictureBox2.Height + 1));
ここは初めてみるものなので、これから調べてみます。
本当にありがとうございました。

971 :デフォルトの名無しさん:2010/02/04(木) 15:17:22
>>970
なるほど
ボタンを押してる間はマウスの移動範囲を限定するわけか

972 :デフォルトの名無しさん:2010/02/04(木) 15:18:07
間違えた
>>970じゃなく>>965
そうすれば無駄な処理はいらんな

973 :デフォルトの名無しさん:2010/02/04(木) 15:31:28
便乗だが>>965を使わせてもらおうと思ってぐりぐり動かしてたら
マウスジェスチャーに反応するランチャーに一旦アクティブを取られた場合に
限定したクリップが解除されるな

ランチャーの設定はマウスジェスチャーで呼び出しできて
カーソルがランチャー上から外れたら自動でたたむという感じ

なのでボタンは押したままなんだよね

974 :デフォルトの名無しさん:2010/02/04(木) 16:04:16
>>973
そうですよ。

975 :デフォルトの名無しさん:2010/02/04(木) 16:08:16
えっ

976 :デフォルトの名無しさん:2010/02/04(木) 16:22:38
おっ

977 :デフォルトの名無しさん:2010/02/04(木) 17:30:00


978 :デフォルトの名無しさん:2010/02/04(木) 18:00:06
c#使えばオーソドックスな専ブラなら割とすぐに作れるのはいいよね
http://uproda.2ch-library.com/210576Dva/lib210576.png

まあその分中のソースもコンパクトでリバースエンジニアリングされちゃうと
終わっちゃうけどw

979 :デフォルトの名無しさん:2010/02/04(木) 18:02:26
終わるというのがわからん

980 :デフォルトの名無しさん:2010/02/04(木) 18:04:37
>>979
既存のブラウザの検索機能の一部が気に入らないんだけど
一から書くのが面倒な人とかにすれば.netのexeはオープンソースで
やってるのも変わらないからねえ

使ってもらう楽しみじゃなくソースありがとうじゃあねじゃちょっと寂しい物があるよね

981 :デフォルトの名無しさん:2010/02/04(木) 18:05:41
>>978
そういえばJaneはメニュー部分もつまんで動かせるけど、.NETのだと出来ないっぽい?
一番上固定はいいとしても、右の空いたスペースにアドレスバーとか詰め込みたくなるね

982 :デフォルトの名無しさん:2010/02/04(木) 18:07:38
>>981
どうにでもできる
部品としては使いこなしてないので上ででてるコントロールを摘んで・・・という
コード書いちゃう気がするけど所詮はFormの上のパーツだからねえ

DockStyleをNoneにして摘んだ際の移動コード書けばなんでも動くよ

983 :デフォルトの名無しさん:2010/02/04(木) 18:15:32
調べたらこんなのがあった

http://dobon.net/vb/dotnet/links/dockingwindow.html

自前で書いてたよorz

984 :デフォルトの名無しさん:2010/02/04(木) 18:26:09
コントロールのフロートとドッキングをサポートすると何が面倒ってZオーダー
の管理なんだよな・・・

985 :デフォルトの名無しさん:2010/02/04(木) 18:37:55
>>980
初めからオープンソースでやればいい話じゃない?
何せこい話してるんだか

986 :デフォルトの名無しさん:2010/02/04(木) 18:38:55
わたし女だけど難読化したソースが素でよめる男の人って…

987 :デフォルトの名無しさん:2010/02/04(木) 18:49:52
>>986
難読化されてるとはいえクラスの形とか元に戻るんだから
機械語で解析する苦労を考えると楽だろう
復元したソースをコンパイルすることだってできるんだか


988 :デフォルトの名無しさん:2010/02/04(木) 19:01:06
ライブラリ呼び出すだけのソースなら楽だろうな。解読する価値があるのかは疑問だが。

989 :デフォルトの名無しさん:2010/02/04(木) 19:32:56
プリンタにA4用紙をセットして↓のような出力をしたら、中央にくるはずが
 e.Graphics.PageUnit = GraphicsUnit.Millimeter;
 e.Graphics.FillRectangle(new SolidBrush(Color.LawnGreen), 30, 40, 150, 6);
5mmくらい右にずれたんですけど、これはプリンタの余白が5mmくらいあって
ずれたということですか?
どう考えていいのか・・・
よろしくお願いします。

990 :デフォルトの名無しさん:2010/02/04(木) 19:37:55
君か

とりあえず前提となる数字データ
A4 - ISO 216 用紙サイズ(210mm×297mm)

eの元は何なの?
関連しそうなので思いつきだがPaddingとかあったね

991 :デフォルトの名無しさん:2010/02/04(木) 19:41:15
2ちゃんブラウザくらいならソース解析するより
自分で作ったほうが早いな
昔VB6で作ったけど簡単だった。たいした機能なかったけど。

992 :デフォルトの名無しさん:2010/02/04(木) 19:41:15
>>990
ありがとうございます。↓です。
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)

993 :デフォルトの名無しさん:2010/02/04(木) 19:45:40
>>992
この辺かね?
http://dobon.net/vb/dotnet/graphics/printdocument.html

994 :デフォルトの名無しさん:2010/02/04(木) 19:57:00
>>993
e.MarginBounds.Leftは100になってて、100×0.254=25.4mmだから印刷できる範囲に入ってるんですよね・・・

995 :デフォルトの名無しさん:2010/02/04(木) 20:07:37
そもそもその100ってインチなの?
第一プリンタの設定なんて個々で違うから下記のようなテストコード書いてどうなってるか見てみないとわかんないよ

PrintDocument pd = new PrintDocument();

textBox1.AppendText(pd.DefaultPageSettings.PaperSize.ToString() + Environment.NewLine);
textBox1.AppendText(pd.DefaultPageSettings.Bounds.ToString() + Environment.NewLine);
textBox1.AppendText(pd.DefaultPageSettings.Margins.ToString() + Environment.NewLine);
textBox1.AppendText(pd.DefaultPageSettings.PrintableArea.ToString() + Environment.NewLine);
textBox1.AppendText(pd.DefaultPageSettings.PaperSource.ToString() + Environment.NewLine);
textBox1.AppendText(pd.DefaultPageSettings.HardMarginX.ToString() + Environment.NewLine);
textBox1.AppendText(pd.DefaultPageSettings.HardMarginY.ToString() + Environment.NewLine);
textBox1.AppendText(pd.DefaultPageSettings.Landscape.ToString() + Environment.NewLine);
textBox1.AppendText(pd.DefaultPageSettings.PrinterResolution.ToString() + Environment.NewLine);

こんな感じで今試した

http://uproda.2ch-library.com/210608eQU/lib210608.png

996 :デフォルトの名無しさん:2010/02/04(木) 20:11:19
ふーん

997 :デフォルトの名無しさん:2010/02/04(木) 20:13:18
構造体の面罵変数ってなんで初期化できないの?

struct person{
private int age=30;
}

クラスだとできるのに構造体だとこれができない理由は何?

998 :デフォルトの名無しさん:2010/02/04(木) 20:13:38
>>995
結果は↓でした。
 [PaperSize A4 Kind=A4 Height=1169 Width=827]
 {X=0,Y=0,Width=827,Height=1169}
 [Margins Left=100 Right=100 Top=100 Bottom=100]
 {X=13.33333,Y=11.66667,Width=800,Height=1137.667}
 [PaperSource オートシートフィーダ Kind=AutomaticFeed]
 13
 11
 False
 [PrinterResolution Medium]

999 :デフォルトの名無しさん:2010/02/04(木) 20:15:02
>>998
で?

1000 :デフォルトの名無しさん:2010/02/04(木) 20:18:09
>>997
このスレの98辺りから読め

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

206 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)