08/03/23 11:07:29
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
前スレ
ふらっとC#,C♯,C#(初心者用) Part25
スレリンク(tech板)
2:デフォルトの名無しさん
08/03/23 11:08:00
参考サイト。まずはここで検索してから。(次のスレ立てる人は追加していただけるとありがたいです)
URLリンク(google.com)
URLリンク(homepage3.nifty.com)
URLリンク(www.atmarkit.co.jp)
URLリンク(dobon.net)
URLリンク(jeanne.wankuma.com)
URLリンク(www.labasp.net)
3:デフォルトの名無しさん
08/03/23 11:08:46
>>950を踏んだ人は新スレを立てて下さい。
>>950が無理な場合、話し合って新スレ立てる人を決めて下さい。
誰も建てないので立てました。
4:デフォルトの名無しさん
08/03/23 11:09:40
C#, C♯, C#相談室 Part45
スレリンク(tech板)
C♯, C#相談室 Part34
スレリンク(tech板)
【新GUI FW】WPF(XAML,AVALON,.NET3.0)【重い?】
スレリンク(tech板)
Windows Live プログラミング
スレリンク(tech板)
初心者のためのプログラミング言語ガイド Part7
スレリンク(tech板)
5:デフォルトの名無しさん
08/03/23 11:13:44
このスレの住人なら知っていますね、あの糞開発ツールのことを
・自分のプログラムのバグなのかコンパイラのバグなのかわからない
・他の仕事に応用できない糞開発ツールの独自世界を必死に学習している
・テキストエディタで書いたほうが効率的なのに糞UIツールを懸命に使っている
・糞開発ツールを批判すると「性格が悪いから糞ツールを批判するんだ」と言われる
糞だけど、政治的な理由で無理やり使わされているんですよね。
もう、あんな厨の作った糞ツールを我慢して使うのはやめましょう。
・糞開発ツールを部下に押し付ける上司の命令は無視しましょう。
上司は糞開発ツールが使われる実績を作ることであの会社のごきげんをとっているのです。
・糞開発ツールを使わせる上司の下では働けません、と上司の上司に直訴しましょう。
・あの糞開発ツール提供会社には「おたくの糞開発ツールは話にならない」と突き放しましょう。
バグレポートなどしてはいけません。改善要求などもってのほかです。
あの会社はあなたたちのことをテスター/モルモットとしか思っていません。
・あの会議で「糞開発ツールを使ったら生産性がxx%アップしました」
なんて話が出たら力強く机を叩き、会議室を出ましょう。
あの人たちは糞開発ツールをマンセーすることで立場を確保しているのです。
糞な開発ツールを糞だと言える、そんな当たり前の環境をみんなの力で取り戻しましょう。
6:デフォルトの名無しさん
08/03/23 11:43:10
俺はあの開発ツール使ったら背が5cm伸びて
彼女もできました。宝くじにも当たってびっくり
今更ながらにあのツールのすごいパワーを感じてます
7:デフォルトの名無しさん
08/03/23 11:57:18
>>5
eclipse にだって良い所は沢山あるんだぞ、そんなに悪く言うな
8:デフォルトの名無しさん
08/03/23 11:57:29
俺は糞開発ツール使ったら欝病になって
離婚しました。会社も解雇されてびっくり
今更ながらに糞開発ツールのすごいネガティブパワーを感じてます
9:デフォルトの名無しさん
08/03/23 12:05:24
なんだこの流れw
10:デフォルトの名無しさん
08/03/23 12:10:26
>>3 乙です
次のスレ建てから、それは 1 に書いておきませんか?
>>950を踏んだ人は新スレを立てて下さい。
>>950が無理な場合、話し合って新スレ立てる人を決めて下さい。
それと、スレの流れは速い訳では無いので 980 でもいいかと。
11:デフォルトの名無しさん
08/03/23 13:40:11
C# 4.0の情報ってない?
12:デフォルトの名無しさん
08/03/23 13:43:56
>>11
URLリンク(blogs.msdn.com)
13:デフォルトの名無しさん
08/03/23 13:57:21
仕様追加じゃなくてVBみたいに仕様変更されるようになることはないよね?
14:デフォルトの名無しさん
08/03/23 14:02:27
早く言語仕様をくれ
妄想してハァハァしたい
15:デフォルトの名無しさん
08/03/23 14:03:37
消極的なDLRサポートじゃね
16:デフォルトの名無しさん
08/03/23 14:06:20
ヘジがそんなつまらないことをするはずがない
17:デフォルトの名無しさん
08/03/23 14:08:12
\ │ /
/ ̄\
─( ゚ ∀ ゚ )─
\_/
/ │ \
○○○ ○○○
○,,・ω・○ ○・ω・,,○
○○○ ○○○ o
o~(,_uuノ とuu_,)ノ
FREE TIBET
18:デフォルトの名無しさん
08/03/23 14:22:14
>>13
アセンブリ単位ならバージョン混在可能だし、それを想定してコードを書きたいところ。
ヤバイ仕様は、拡張すれば当然出現するし、しかしそれを放置しないでサクサク修正して欲しいな。
どこかのタイミングでdelegateは廃棄してラムダ式で統一して欲しいとか、今でも思うし。
19:デフォルトの名無しさん
08/03/23 14:26:36
Expression TreeはなかったことにしてDLRに統合してほしい
20:デフォルトの名無しさん
08/03/23 14:38:54
互換を維持するあまりC++の様になったら悲惨だからな
21:デフォルトの名無しさん
08/03/23 14:40:47
別に匿名メソッドはあっても害はないんじゃないのか
22:デフォルトの名無しさん
08/03/23 14:46:58
というか後で無かったことにするためにあんな面倒な記述にしたとしか思えない
23:デフォルトの名無しさん
08/03/23 14:47:58
同じ機能を持つ別のものが複数個あるのは、コードを書くときに混乱に繋がるから良くないと思うな。
既に憶えている人には良いが、新しくC#を憶える人がC#の歴史を勉強しないとならないという事態になってしまう。
それは良くない、気付けば使える人間はオッサンばっかりという事態に陥るから。
24:デフォルトの名無しさん
08/03/23 14:53:39
>>22
ヘジたんの関数型に対する知識が微妙だっただけでは、匿名でないdelegateにしても
コンテナになっていて複数個のメソッドが登録できるとか
実用的な機能はコレだって言われれば至極なっとくできるが、美しくは無いような。
この理屈不要実用一点張りがC#のいいところだと思うんで。
25:デフォルトの名無しさん
08/03/23 15:01:11
delegateがコンテナである必要なんかあるのかね
delegateがコンテナであっても別に問題ないというのはすごいことなような気はするが
26:デフォルトの名無しさん
08/03/23 15:03:13
確かにマルチキャストはいらない気がするな
イベントの後ろにだけ別途コンテナ用意すればいい
27:デフォルトの名無しさん
08/03/23 15:04:13
>>25
何回でもコード書きやがれ、使いやがれ、頭で考えるな!!
28:デフォルトの名無しさん
08/03/23 15:07:50
イベントであっても2つ以上メソッドを登録したことは無いな
29:デフォルトの名無しさん
08/03/23 15:12:31
自分でデリゲートを結合することなんて滅多にないし
イベントハンドラを登録・結合するコードはどうせコンパイラが自動生成するんだから
全くメリットを感じない
30:デフォルトの名無しさん
08/03/23 15:16:04
タスクシステムを作る場合に楽じゃない?
効率はともかく。
31:デフォルトの名無しさん
08/03/23 15:18:06
使い込みが足らないから理解が迷走するんだよ、例えばフォームのクローズイベントをキャッチしたいコントロールは一体何個あるよ?
32:デフォルトの名無しさん
08/03/23 15:20:27
デリゲートとイベントをごっちゃにしてはいけない
コンテナを別にすればいいだけのこと
33:デフォルトの名無しさん
08/03/23 15:21:45
>>32
そんな事はあとから考えればいいの、今必要なのは何か、これが一番大事。
34:デフォルトの名無しさん
08/03/23 15:29:36
フォームのクローズイベントをキャッチするために
Closedにいくつも+=するなんてことはないだろう
一個のメソッドを書いて、その中に必要な処理を書いていくだろう
35:デフォルトの名無しさん
08/03/23 15:32:56
イベントの呼び出し対象が複数指定できるのはいいけど,
その実装のためにデリゲート自体にコンテナを持たせる必要はない
コンパイラが生成するイベントの実装コードをちょっと変えればコンテナは分離できる
36:デフォルトの名無しさん
08/03/23 15:33:14
>>34
登録されるコントロールが自ら登録するんだよ、アホ
37:デフォルトの名無しさん
08/03/23 15:40:00
>>36
Framework内部のことであれば好きなように実装すればいいだろう
Formが子Controlの仮想OnClosedメソッドでも呼び出すのが自然だと思うがね
Controlは木構造でありAddしたときに親Formがあるかどうかはわからんのだし
38:デフォルトの名無しさん
08/03/23 15:41:53
>>37
イベントとしてクローズを挙げたのは一例に過ぎないぞ
大体だ、何か有るたびにFormにコード書きまくらなければならない、そのコーディングの非効率をどう思うよ?
39:デフォルトの名無しさん
08/03/23 15:45:18
>>38
Frameworkを使う立場の俺は、イベントにメソッドをIDEを使って登録し
Formにコードを書きまくっているが特に何の問題も感じない
ややこしくなれば登録したメソッドから別クラスのメソッドを呼び出すけども
40:デフォルトの名無しさん
08/03/23 15:50:34
マルチキャストが必要だからってデリゲート自体がマルチキャストである必要はないんだよ
そもそもその辺を分離するための機能がイベントなのに
41:デフォルトの名無しさん
08/03/23 16:09:14
URLリンク(www.atmarkit.co.jp)
このページのコード(csargs1.cs)で引数を表示させるプログラムをビルドしてみたのですが、
引数に <"LD"> と入力すると「構文が間違っています」と表示されます。
そのまま引数に<"LD">を文字列として渡すためにはどうすれば良いでしょうか。
どなたか教えてください。よろしくお願いします。
42:デフォルトの名無しさん
08/03/23 16:18:58
そんなことはコマンドプロンプトスレかなんかで聞いてくれ
43:デフォルトの名無しさん
08/03/23 16:20:59
"<\"LD\">" と入力する、コマンドプロンプトの使い方であってC#の問題ではないです。
44:デフォルトの名無しさん
08/03/23 16:25:43
>>42-43
速レスthxです
コマンドプロンプトの構文なんですね、すみませんでした。
>>41で上げた引数はエラーが起こる例で、あるアプリケーションから
このプログラムに引数を渡したいので、文字列は変更できないんです。
後出しになってしまってごめんなさいorz
45:デフォルトの名無しさん
08/03/23 16:27:43
そのアプリケーションから渡す時はエラーにはならないだろう
46:41=44
08/03/23 16:33:57
再ビルドして試行したら出来ましたorz
恥ずかしい><;
>>42-43,>>45さん
親切に教えて下さってありがとうございました!
47:デフォルトの名無しさん
08/03/23 16:35:51
>>46 ここは、そのための初心者用
48:デフォルトの名無しさん
08/03/23 16:38:58
>>37>>40
さすがにこのあたりの意見は暴論にしか聞こえないね。
経験が足りないか知識が足りないんだろうけど。
49:デフォルトの名無しさん
08/03/23 16:43:07
自分がエキスパートだと信じて疑っていない自信満々の人なんだよ
「C#, C♯, C#相談室」にいってドヒンシュク買ってこいって思うよ。
50:デフォルトの名無しさん
08/03/23 18:25:09
見てる人一緒だ
51:デフォルトの名無しさん
08/03/23 19:24:06
一枚の写真から中国のうそを見破る
URLリンク(jp.youtube.com)
52:デフォルトの名無しさん
08/03/23 21:00:16
コピペ君って馬鹿だな、まで読んだ。
53:デフォルトの名無しさん
08/03/23 21:38:39
まあとにかく、マルチキャストデリゲートはデリゲートをややこしくするな
54:デフォルトの名無しさん
08/03/23 21:44:10
そうか?
55:デフォルトの名無しさん
08/03/23 22:02:06
WPFのルーティングイベントなんかはマルチキャスト使わない実装になってるね
56:デフォルトの名無しさん
08/03/23 22:48:17
救いようのないバカがいるな
57:デフォルトの名無しさん
08/03/23 23:33:37
俺はデリゲートってマルチスレッド対応でしか使ってないわ
58:デフォルトの名無しさん
08/03/24 01:51:22
例外について質問です。
プログラム自身以外が原因で発生する例外はいろんな種類があっていいと思うんですが
コードのバグに起因する例外って細分化する必要があるんでしょうか?
例えばパラメータが異常,switchで本来ありえないdefaultに到達してしまった,
foo()を呼ぶ前にbar()を呼んでしまった、といったバグにそれぞれ別の例外を割り当てて
catchしたりしなかったり、catchした時に処理の内容を変えるといったことはありえるんでしょうか。
それともバグと外的な要因で発生する例外の種類を分けること自体無意味ですか?
文法的な使い方は一応理解したつもりなんですが、
どこでどんな例外をthrowするべきかというのがいまいちよくわかりません。
59:デフォルトの名無しさん
08/03/24 02:49:51
dataGridViewで
行選択したときに送られるイベントって何ですか?
60:デフォルトの名無しさん
08/03/24 03:38:20
>>58
論理的に有り得ない状況(e.g. コーディングミス、仕様外の利用)を
検出するのが目的ならアサーション使え
cf. System.Diagnostics.Debugクラス
61:60
08/03/24 03:47:49
補足
仕様外の利用ってのはクラスなどの内部で閉じてる場合ね
外部に公開されるメンバなら例外投げる方が適切
62:デフォルトの名無しさん
08/03/24 04:02:55
内部的にバグを検出するチェックをすべてDebug.Assertにしたとしてリリース後はどうしてる?
バグを見つけるためというよりも万一バグった後の処理を続行させない為という意味合いの何か良い例外ってあるのかな。
自分そこらへん結構いい加減だw
63:デフォルトの名無しさん
08/03/24 04:31:11
\ │ /
/ ̄\
─( ゚ ∀ ゚ )─
\_/
/ │ \
○○○ ○○○
○,,・ω・○ ○・ω・,,○
○○○ ○○○ o
o~(,_uuノ とuu_,)ノ
FREE TIBET
64:デフォルトの名無しさん
08/03/24 08:08:46
コピペ君って馬鹿だな、まで読んだ。
65:デフォルトの名無しさん
08/03/24 10:49:33
とりあえずInvalidOperationExceptionが定番じゃね
66:デフォルトの名無しさん
08/03/24 15:18:05
>>65
InvalidOperationExceptionは、不当な操作では?
その操作が出来る状態になっていないのに、操作した場合の例外。
>>59
誰もレスつけないので、自分も知らないのですが、こんなやり方をしています。
RowEnter で操作開始を検出して、各種プロパティーをみるという手を良く使っています。
SelectedCells を読めばいけるんじゃないかなと思のですが・・・今で試せる環境がないので試してません。
RowEnter タイミングが微妙なので、類似の別のイベントの方が良いかもしれません。
67:デフォルトの名無しさん
08/03/24 15:20:31
>>66
それを不当な操作というんじゃないのか?
68:デフォルトの名無しさん
08/03/24 15:22:13
>>67
内部的バグに対する例外ではないよと言ったつもりなのですが・・・
69:デフォルトの名無しさん
08/03/24 15:53:14
まあ例外は適当でいいよというのがC#の思想なのだろうから
適当でいいんだと思うがな
catchされないような例外に何を投げようと関係ないんじゃないか?
70:デフォルトの名無しさん
08/03/24 16:02:07
バカ
71:デフォルトの名無しさん
08/03/24 16:08:33
DirectXだとInvalidOperationExceptionは本当に適当に飛んでくるよw
72:デフォルトの名無しさん
08/03/24 16:18:35
使い方が間違っているなら飛んでくるのは当然じゃね?
73:デフォルトの名無しさん
08/03/24 16:50:22
Nullable<bool>をifの条件に使うとき,if (value == true)とするのが適切?
この書き方好きじゃないんだけどboolにキャストしたりValueプロパティにアクセスすると
nullのときに例外が発生する
74:デフォルトの名無しさん
08/03/24 16:51:34
Javaはガチガチすぎて
C#はむちちゅじょに過ぎる
75:デフォルトの名無しさん
08/03/24 17:05:04
ガチムチ兄貴Java
76:デフォルトの名無しさん
08/03/24 17:06:44
>>73
if (value.GetValueOrDefault(false))
とか
if( value ?? false)
で良いんじゃない?
77:デフォルトの名無しさん
08/03/24 17:13:37
>>73
Nullable使っててキャスト時に例外がとんでくる?
使い方を根本的に間違ってねぇかそれ・・・。
78:デフォルトの名無しさん
08/03/24 17:15:16
nullのときにキャストしたら例外飛ぶだろ…
79:デフォルトの名無しさん
08/03/24 20:00:16
>>59>>66
SelectionChangedイベントでSelectedRowsを読む
>>62
一部または全部をTrace.Assertにすれば
80:デフォルトの名無しさん
08/03/24 20:08:33
>>76
value??falseいいね
81:デフォルトの名無しさん
08/03/24 21:43:58
固定長でテキストファイルを書き出したいのですが、どうすれば良いのでしょうか?
例えばシフトJISで最初の40バイト目までが項目A、41バイト目から項目Bというような感じです。
string.Format("{0,40}{1}",a,b)
として書き出しても、全角文字が混じるとその分だけずれてしまいます。
1文字ずつ全角か半角かチェックしながらカウントして、埋める空白の文字数を計算して出すしかないのでしょうか?
82:デフォルトの名無しさん
08/03/24 21:49:08
Encoder
83:81
08/03/24 22:18:30
>>82
シフトJISのEncoderを使ってバイト数を調べて、空白は自分で補うということでしょうか。
もう少し調べてみます。ありがとうございました。
84:デフォルトの名無しさん
08/03/24 22:22:39
固定長とかキモイ
85:デフォルトの名無しさん
08/03/25 09:54:23
string a = "URLリンク(192.168.0.1)"001".txt";
webBrowser1.Navigate(new Uri(a));
data1 にはランダムな値が入る場合
URLリンク(192.168.0.3)"data1".txt
の用にしてdata1によって違うページを開かせたい場合はどのように記述すればいいのでしょうか?
86:デフォルトの名無しさん
08/03/25 09:57:00
最後のところ入力ミスです><
×192.168.0.3
○192.168.0.1
87:デフォルトの名無しさん
08/03/25 10:14:47
多分 String.Format の出番
88:デフォルトの名無しさん
08/03/25 10:22:14
string a = "URLリンク(192.168.0.1)" + data1 + ".txt";
webBrowser1.Navigate(new Uri(a));
でいいんじゃないの?
89:デフォルトの名無しさん
08/03/25 10:28:33
>>87-88
有り難う御座います。>>88の方法で出来ました。
90:デフォルトの名無しさん
08/03/25 10:31:10
あ、001みたいに0を入れたいわけか
string a = ("URLリンク(192.168.0.1)",data1);
91:デフォルトの名無しさん
08/03/25 11:58:07
>string a = "URLリンク(192.168.0.1)" + data1 + ".txt";
フォーマットプロバイダ通さないやり方がちょっとキモイな
92:デフォルトの名無しさん
08/03/25 11:59:28
C#も便利表記が増えすぎてスクリプト言語並にわけがわからなくなりつつあるな
93:デフォルトの名無しさん
08/03/25 12:03:15
5年後VBに統合されVB#になります ^^)
94:デフォルトの名無しさん
08/03/25 12:09:37
その前にまずWebインストールさせろ!
1Gなんてダウンロードしたくない
95:デフォルトの名無しさん
08/03/25 12:10:48
>5年後VBに統合されVB#になります ^^)
VBのコードも多いから、混合して書ける機能があると大助かりというのが実あったりするけどな
class X
{
void F()
{
#lang VB
・・・・
#endlang
}
}
#lang VB
・・・・
#endlang
こんな感じで、要望してみるかな。
96:デフォルトの名無しさん
08/03/25 12:25:14
>>90
こんな表記あんの?
97:デフォルトの名無しさん
08/03/25 12:29:42
形式指定だっけ?Cで言うprintfみたいなやつ
98:デフォルトの名無しさん
08/03/25 12:30:16
俺の環境じゃコンパイル通らんぞ
99:デフォルトの名無しさん
08/03/25 12:30:26
VBみたいな構文には違和感しか感じないんだよな。
別に個人でやってるだけだからどうでもいいんだが、統合されたら他の言語に移るしかないな
100:デフォルトの名無しさん
08/03/25 12:32:32
うん。VBはまだ慣れない。あの構文はきもすぐる
101:デフォルトの名無しさん
08/03/25 12:33:02
>>96
無いよ
string.Formatを忘れてるだけだろ
102:デフォルトの名無しさん
08/03/25 12:33:22
string a = string.Format( "URLリンク(192.168.0.1)" , 12 );
だな、その場で書いたなw
103:デフォルトの名無しさん
08/03/25 12:36:03
>>99-100
さようなら、VB統合と言わず、今すぐそのままJavaへなり移行されてくださいw
104:デフォルトの名無しさん
08/03/25 12:36:39
VB厨が暗躍しているな
105:デフォルトの名無しさん
08/03/25 12:42:59
VB チューハイ
C# 水割り
C++ ロック
C ストレート
106:デフォルトの名無しさん
08/03/25 12:43:27
構文は慣れればVBの方が読みやすいと俺は思うけどね。
まあ改行=行の終わり、とか細かい点で気持ち悪い点は確かにいくつかあるけど。
107:デフォルトの名無しさん
08/03/25 12:44:16
変数名の後に型名を書く方が自然な気がする
VBの方が好きな点はそれだけ
108:デフォルトの名無しさん
08/03/25 12:46:13
もともとnewするときに型名を2回書くなんて不合理以外の何者でもなかったからな
varが出来て状況はだいぶ改善したけど
109:デフォルトの名無しさん
08/03/25 12:47:30
今0から作り直すとしたら
var a as string = "a"とか
var a : string = "a"みたいになりそうだな
110:デフォルトの名無しさん
08/03/25 12:47:35
>>107 どうぞ、C# 3.0です。
var hinsuumei = new Katamei();
111:デフォルトの名無しさん
08/03/25 12:48:10
C# 4.0からは変数名から型名を推論する機能がつきます
var font = new;
112:デフォルトの名無しさん
08/03/25 13:06:44
>>111
ちょっと欲しい気はするな、それだと型の推論のしようがないが
var = instance1@System.Drawing.Font new ;
使うときは
instance1@System.Drawing.Font or instance1@Drawing.Font or instance1@Font or instance1
衝突がなければ通るとか、オブジェクト指向になって以来ハンガリアン記法が役立たずになっているが
これなら型名が増えても困る事はないし、分りきっている場所で不必要に型名を書いてかえって読みずらい事にもならないような……気がする。
113:デフォルトの名無しさん
08/03/25 13:11:28
使い方で推論すればおk
コンパイルエラーとする下限の確率をコンパイラのパラメータで指定する
114:デフォルトの名無しさん
08/03/25 13:13:48
キチガイこえー
115:デフォルトの名無しさん
08/03/25 13:21:04
C#でシェル拡張書いてみたいんだけど参考になる記事とか無い?
116:デフォルトの名無しさん
08/03/25 13:28:24
Public Class foo()
{
foo()
{
・・・・
}
hoge{get; set;}
honya{get; set;}
hogehoge{get; set;}
}
Public Class hoo()
{
List<foo> list = new List<foo>();
・・・・・・
}
Public Class puu()
{
List<hoo> list2 = new List<hoo>();
・・・・
}
こういうリストのリストを使うんですが、これを単なるリストに展開するにはどうしたらいいのでしょうか?
117:デフォルトの名無しさん
08/03/25 13:33:06
list2.SelectMany(hoo=>hoo.list).ToList()
2.0なら2重のループで新しく作ったリストに自分で追加していく
118:デフォルトの名無しさん
08/03/25 13:37:14
>>115
高度な話題になるから、ソレらしい所に行くべし
きわどい問題も累積している。
119:デフォルトの名無しさん
08/03/25 18:38:12
入力された数字を大きい順番に並べるプログラムですがbを一番大きくなるよう入力すると重複してますといわれます。どなたか理由をおしえてください
public static void Main()
{
START:
int a = int.Parse(Console.ReadLine());
int b = int.Parse(Console.ReadLine());
int c = int.Parse(Console.ReadLine());
if (a > b)
{if (a > c){if (c > b){Console.Write("{0}{1}{2}", a, c, b);
}else{
Console.Write("{0}{1}{2}", a, b, c);
}
}else{
Console.Write("{0}{1}{2}", c, a, b);
}
}else{
if (b > c)
{
if (a > c)
{
Console.Write("{0}{1}{2}", b, a, c);
}else{
Console.Write("{0}{1}{2}", b, c, a);
}
}
if (c > a && c > b)
{
Console.Write("{0}{1}{2}", c, b, a);
}else{
Console.Write("数字が重複していますカエレ");
120:デフォルトの名無しさん
08/03/25 18:43:14
C#ってboolを数値で扱えないんだ・・・
121:デフォルトの名無しさん
08/03/25 19:06:46
>>119
自分が入力した値でどこを通るか辿っていったらわかるだろ
とりあえず整形しなさい
122:デフォルトの名無しさん
08/03/25 19:11:45
>>119
当たり前じゃん。bが一番大きかったらc>bを満たすはずがない
123:デフォルトの名無しさん
08/03/25 19:14:13
>>119
if文をちゃんと理解してる?
124:デフォルトの名無しさん
08/03/25 19:26:09
それより START: が気になる
goto START; とかやるつもりなんだろうか
125:デフォルトの名無しさん
08/03/25 20:19:25
>>120 C#でなくてもboolと宣言しておいて数値の意味でぶち込むとかヤメロ馬鹿
>>119 そのコード、コンパイル通らない。
126:デフォルトの名無しさん
08/03/25 20:21:04
.tonumeric()でも定義してろ
127:デフォルトの名無しさん
08/03/25 20:34:17
List<int>に突っ込んで.Sort()で済むだろ。
128:デフォルトの名無しさん
08/03/25 20:34:38
指定した位置(ウィンドウ外の場合も)にコンテキストメニューを表示したいのですがどうすればいいのでしょうか?
129:デフォルトの名無しさん
08/03/25 20:39:35
Showのオーバーロードを調べる作業に戻るんだ
130:デフォルトの名無しさん
08/03/25 20:49:08
どうもありがとうございます。
URLリンク(www.labasp.net)
で見つけました。
もうひとつ質問があるのですが、これはウィンドウ外でも表示出来るのでしょうか?
131:デフォルトの名無しさん
08/03/25 20:57:30
聞く前に試せ。な。
132:デフォルトの名無しさん
08/03/25 20:59:40
すいません。今はその環境が無いもので...
133:デフォルトの名無しさん
08/03/25 21:29:42
知るか
134:デフォルトの名無しさん
08/03/25 21:31:59
環境がないなら今聞く必要もないな?
135:デフォルトの名無しさん
08/03/25 21:34:27
URLリンク(msdn2.microsoft.com)(VS.80).aspx
ここに書いてありました。どうもすみませんでした。
136:デフォルトの名無しさん
08/03/25 21:37:40
>>127
彼は別にソートしたいんじゃなくて、勉強したいんだろ
>>119
意図したとおりにならなかったら
デバッガで1ステップずつ実行して違う場所を探せばいい
その時点の変数の値も確認できる
137:デフォルトの名無しさん
08/03/25 21:58:32
ちょっと質問です。。。
PixtureBoxに点(1ドット)を打ちたいのですが、方法が分かりません。
ご教授いただけると幸いです。
138:137
08/03/25 22:02:41
すみません説明がおかしかったです。
PictureBoxで描写しているBitmapにです。
Graphicsに落として、線を引いたりはできるのですが、指定した一点にだけ描写する方法が分かりませんm(_ _)m
139:デフォルトの名無しさん
08/03/25 22:18:48
>>137
Bitmap.setpixel()
140:デフォルトの名無しさん
08/03/25 22:20:34
縦横1pxの四角形を描くって手もあるな
141:137
08/03/25 23:12:37
>>139-140
できました。ありがとうございます。
Bitmapにあったんですね(^^;
JavaのノリでいたのでGraphicsにあるものだと思い込んでました。。。
縦横1pxの四角形を描こうとすると、縦横2pxの四角形になってしまいました。。。orz
142:デフォルトの名無しさん
08/03/25 23:54:29
Stack<Hoge> hoges;で
中身を取り出したときに確実に葬り去るにはどうすればいいの?
143:デフォルトの名無しさん
08/03/25 23:55:40
なんか日本語でおkな質問が最近多いような。。
144:デフォルトの名無しさん
08/03/26 00:17:41
メモリをゼロクリアすれば確実だろう。だがちょっと待って欲しい。ここではデータ取り出しをしている。
それらを考えると放射線でメモリをROMとして焼き付けるのが一番ではないだろうか?
145:デフォルトの名無しさん
08/03/26 00:30:46
hoges.pop().Dispose();
146:デフォルトの名無しさん
08/03/26 02:07:20
>>142
>葬り去る
この意味を書け、何をしたいのかハッキリさせろ、話はそれからだ。
147:デフォルトの名無しさん
08/03/26 03:13:02
staticクラスおよびそのクラスのstaticメソッドや
staticでないクラスのstaticメソッドはプログラム内
で全く使われてなくてもメモリ上に読み込まれる?
148:デフォルトの名無しさん
08/03/26 08:51:02
>>146
ゆとりか
149:デフォルトの名無しさん
08/03/26 09:06:39
>>148
146じゃないけど、142がどの程度C#とStackのことをわかってるのかがわからない以上、
俺も何をしたいのかわからない。
ひょっとするとhoges.Peek()にしか気づいておらず、スタックから消す方法を聞きたいのかもしれない。
hoges.Pop().Hoge()とかのように、そのまま使ってしまいDispose()を呼び出せないと思いこんでいるのかもしれない。
いろいろ考えられる。
150:デフォルトの名無しさん
08/03/26 10:24:07
>>148
オブジェクトの破棄の意味と仮にエスパーしても何段階かあるぜ、どれなんだい?役立たずの爺さんよぉ。
151:デフォルトの名無しさん
08/03/26 10:32:25
>>147
JITの勝手、作る側は意識しない。
今現在どうなっているのかというなら、アセンブリ単位で読み込まれているようだ。
用語の意味や詳細がわからないなら以下を読め、ただしプログラム初学者には難易度は高いぞ。
URLリンク(www.atmarkit.co.jp)
152:デフォルトの名無しさん
08/03/26 10:45:34
>>147
メモリ上に読み込まれるのと、型として評価されるのと、
特定のメソッドがJITでコンパイルされるタイミングはどれも違う。
型として評価されるタイミングならスタティックイニシャライザに
WriteLineを仕込んでみると近似できると思うよ。
153:デフォルトの名無しさん
08/03/26 11:41:00
C++でStack.Popが例外安全に作る方法が無いというのが
C#でどのように克服されてるかという話かもしれない
154:デフォルトの名無しさん
08/03/26 11:54:34
克服もなにも例外が非安全になる言語はC++だけだ、そもそも例外の実装に失敗している
C++では、例外を使わないという事を検討すべきだな、故障中と書かれた蛇口をひねるような真似はすべきでない。
この話題は、もはやスレ違いだ 147 は死ねって事でFA。
155:デフォルトの名無しさん
08/03/26 12:04:22
>>147
使われる前には読み込まれていなければならない
具体的なタイミングは実装依存だったと思う
156:デフォルトの名無しさん
08/03/26 12:05:16
いやいやC#だって基本保証すらないメソッドを作れる。
作るほうが難しいけど。
C++はただなんでも値渡しでコピーするから
例外投げないメソッドが作りづらいだけじゃないか、それが致命的なんだけど。
157:155
08/03/26 12:07:03
メソッドのことだったのか
>>155は変数の中身のことだから忘れてくれ
158:119
08/03/26 13:10:19
20行目と22行目の下にgoto文入れたら解決しました。
ついでにもうひとつ質問ですがデバッガはどこを押せばできますか?
使ってるソフトはMicrosoft Visual C# 2008です。
おしえてください
159:デフォルトの名無しさん
08/03/26 13:16:24
こんなコードにgoto文使うなよ
160:デフォルトの名無しさん
08/03/26 13:18:56
switchと多重ループ抜けるとき以外はgoto使用禁止
デバッグは止めたいところにカーソル置いてF9を押してブレークポイントを追加してからF5
161:デフォルトの名無しさん
08/03/26 13:19:54
このコードでごとぅって思考放棄じゃね?
162:デフォルトの名無しさん
08/03/26 13:25:15
どこの初心者サイトや入門書でもgotoをはじめに教えるなんてありえないけど
goto使いまくるような言語から入った人なのかな
163:デフォルトの名無しさん
08/03/26 13:28:14
gotoは大域gotoじゃなきゃ別に危険じゃないんだぞ
164:デフォルトの名無しさん
08/03/26 13:31:44
昨今、危険かどうかというより可読性の問題が大きい。
165:デフォルトの名無しさん
08/03/26 13:35:50
gotoはスパゲッティーコードの元。
166:デフォルトの名無しさん
08/03/26 13:36:41
上向きのgotoはコンパイルエラーでもいいと思う
167:デフォルトの名無しさん
08/03/26 13:36:49
>>158,119
考えられるケースを書き出してからコード書き始めると漏れがなくなる。
abc
123
132
213
231
312
321
あと重複チェックは先頭でやってしまったほうがいいな。
正しくない入力データはなるべく早く排除しておいたほうがいい。
というのを踏まえてgoto抜きで書き直してみ。
別に使っちゃいけないわけじゃないがこのケースで使う必要は0。
それからgotoネタは他所でやった方がレスの共通化が図れて効率的。
168:デフォルトの名無しさん
08/03/26 13:37:12
goto使いまくる言語ってどんなだよ
スクリプト系か
169:デフォルトの名無しさん
08/03/26 13:37:16
一つの関数を巨大にしない限り
gotoでスパゲッティになることもない
問題なのは巨大な関数の方でgotoじゃない
170:デフォルトの名無しさん
08/03/26 13:42:31
>>168
HSPとかかなぁ。よく知らないけど。
171:デフォルトの名無しさん
08/03/26 13:42:52
あーHSPはgoto使いまくるね
172:デフォルトの名無しさん
08/03/26 13:43:39
gotoを使うべきところはあるが、どう見ても>>119は使うべきでない所だろ。
スパゲティとかいうレベルじゃなく場当たり的に回避してるだけだ
173:デフォルトの名無しさん
08/03/26 13:45:43
複雑なifとか多重ループはわかりにくいから
避けられるなら避けるべきだ
174:デフォルトの名無しさん
08/03/26 13:59:25
このスレには、チームで開発しててコードの書き方に異様にこだわる人がいる。
チームのメンバとか、他社へ納品するとか、他人が見る可能性がある場合は、
そういうことに気をつける必要はある。
だが、個人で書いてて誰にも見せないなら、どんな書き方をしようが個人の自由。
気にするな。
でもgotoは、COBOLとRPGでreturnとかcontinueとかbreakとかがなくて
仕方なく使ってたのが最後だな。
175:デフォルトの名無しさん
08/03/26 14:08:13
ラベル付きbreakがあれば下向きgotoやめてもいいな。
176:デフォルトの名無しさん
08/03/26 15:25:52
時間を取得して、 以下のような処理をさせたいのですが、
時間のみの取得がどうすればいいのか分かりません。
long tick = DateTime.Now.Ticks;
DateTime d = new DateTime(tick);
というサンプルを見つけたのですが、これでは年~秒まで取得してしまします。
どのようにすればよいかご助言下さい。
if(4時<時間<=11時)
{
処理1
}
else if(11時<時間<=16時)
{
処理2
}
else
{
処理3
}
177:デフォルトの名無しさん
08/03/26 15:39:32
DateTime.Now.Hour
つかDateTime構造体をちゃんと調べれ
178:デフォルトの名無しさん
08/03/26 15:41:31
>>174
どうみても>>119は初心者なんだから個人の自由とかの議論の前にみんなが指摘してやってるだけだと思うよ。
179:デフォルトの名無しさん
08/03/26 15:51:03
C#でgetchar();に相当する物ってなんでしょうか?
C言語で入力を待って実行するのに便利だったのですが。
180:デフォルトの名無しさん
08/03/26 15:51:48
>>177
ありがとうございます。
181:デフォルトの名無しさん
08/03/26 15:53:35
Console.Read()
182:デフォルトの名無しさん
08/03/26 15:54:34
>>179
URLリンク(msdn.microsoft.com)
183:デフォルトの名無しさん
08/03/26 15:58:27
>>181-182
thx
184:デフォルトの名無しさん
08/03/26 17:08:51
Enum型のみを指定できるジェネリッククラスを作ろうと思ったのですが、whereでEnumを指定できないため、
Where T : Typeとしました。
このとき、TがEnumから派生したものでない場合、例外を投げるにはどの例外を投げたらいいでしょうか?
ArgumentExceptionにメッセージでEnumを継承してないからだめって書いて投げてもいいのでしょうか?
185:デフォルトの名無しさん
08/03/26 17:13:50
where T : structだろ
例外はなんでもいいんじゃね
どうせ実行時には発生しちゃいけないはずなんだから
186:184
08/03/26 17:14:26
すいません、where T : Typeは余計でしたので、無視してください orz
whereは指定していませんが、上記の場合、どの例外を投げるのが適切なのでしょうか?
187:デフォルトの名無しさん
08/03/26 17:42:29
みんなが作った
Windows コントロール ライブラリ
見れるところってありますか?
188:デフォルトの名無しさん
08/03/26 17:49:20
>>186
where T : structにしといたほうがいい
TEnumのほうがいいかも
ArgumentExceptionはメソッドの引数の例外だからExceptionかその直接の派生クラス作って投げたら
>>187
codeplexとかcodeprojectとか
189:デフォルトの名無しさん
08/03/26 18:04:48
>>185
コンパイルエラーにできないということはそういう使い方をするなということなんでしょうかね…
>>188
TypeLoadExceptionというものを見つけたんですが、これはまた別物なんでしょうか?
それと、お二方のご指摘通り、where T : structを指定しました。
ありがとうございます。
190:デフォルトの名無しさん
08/03/26 20:05:00
private List<string> GetList()
{
List<string> list = new List<string>();
return list;
}
List<string> list = GetList();にするとnullが返って来てエラーとなります。
こういうものなのですかね?。
191:デフォルトの名無しさん
08/03/26 20:16:07
>>190
ちょw
192:デフォルトの名無しさん
08/03/26 20:17:07
>>190
それはおかしい
そのコードでnullが返ることは無い
193:デフォルトの名無しさん
08/03/26 20:17:48
>>156
>例外投げないメソッドが作りづらいだけじゃないか
具体的に例外安全とならない例をひとつ挙げてみてもらえないか?
不可能だと思ったので、すこし興味深い。
194:デフォルトの名無しさん
08/03/26 20:19:01
>>190
クリーン再インストールすると治るんじゃないかなw
195:デフォルトの名無しさん
08/03/26 20:22:40
C#で作っているプログラム aaa.exe から
別のプログラム bbb.exe 上の
ボタンを自動で押したいのですが、どうやればいいのでしょうか?
196:デフォルトの名無しさん
08/03/26 20:25:44
>>195
セキュリティー上の重大な問題を引起こす、その種の操作は一般にはできない。
無理すればできるが、かなり高度な話題、相互運用でググれ。
197:デフォルトの名無しさん
08/03/26 20:31:34
>>195
bbb.exe側のソースをいじれるなら .NETリモート処理で対応する。
できないなら>>196のいうとおりAPIいじくるしかない。
198:190
08/03/26 20:40:43
やはりおかしいですよね・・・。私も不思議だったので投げてみました。
家族の夕食を作って食べてから出直してきます。
みなさん、ありがとう。
199:デフォルトの名無しさん
08/03/26 20:55:52
コンソールアプリケーションだとこのようなコードがコンパイル出来ません。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(f());
}
private int f()
{
return 10;
}
}
}
f()をstaticなメソッドにすれば問題ないのですが何故ですか?
フォームアプリケーションではstaticでなくても問題ないみたいですが…。
200:デフォルトの名無しさん
08/03/26 20:58:39
>>196>>197
bbb.exeはいじれないです。
APIでいじる方法のキーワードとなりそうなググり方でも教えていただけると嬉しいです
201:デフォルトの名無しさん
08/03/26 21:02:33
>>199
フォームアプリケーションでは、
ウィザードが生成するコードの中でインスタンスを作っている。
コンソールアプリケーションでは、自分でインスタンスを作らないといけない。
static void Main(string[] args)
{
Program p = new Program;
Console.WriteLine(p.f());
}
202:デフォルトの名無しさん
08/03/26 21:08:47
>>201
ありがとうございました!
Mainのあるクラスですらインスタンスを作らなくちゃいけないんですね。
たしかにstaticなのはMainだけだからそうなんだろうけど自分自身を作るみたいで変な感じ^^;
203:デフォルトの名無しさん
08/03/26 21:16:13
そういえばVS2003以前はフォームのクラスの中にMainがあったよな
当時は何の疑問も感じずに使ってたけどProgram.csに慣れると
コンポーネントの中にエントリポイントがあるっておかしいだろ普通に考えて
204:デフォルトの名無しさん
08/03/26 21:20:44
>>200
URLリンク(www.microsoft.com)
APIの使い方が分らないというならキッパリ諦めた方がいい。
205:デフォルトの名無しさん
08/03/26 21:44:19
>>200
FindWindow系で対象のボタンのウインドウハンドルを探して
クリックしたメッセージを送るか、マウス操作をエミュレート
206:デフォルトの名無しさん
08/03/26 22:06:39
>>204>>205
対称となるウィンドウ(ボタン)は固定なので、SendMessageくらいで出来ると嬉しいです。
Spy++のように座標が取得できればマウス動かしてやろうかな
などと考えております
207:デフォルトの名無しさん
08/03/26 22:21:50
>>206
ならDllImportAttributeあたりを調べてみるといい
208:デフォルトの名無しさん
08/03/26 22:33:49
>>206
対象のウィンドウのウィンドウハンドル取得後、
GetWindowRectで対象ウィンドウの現在位置を取得して、
対象ウィンドウの左上座標からの相対位置から、スクリーン座標を求めた後に、
WindowFromPointでボタンのウィンドウハンドルを取得し、
SendMessageでキーのアップダウンメッセージなりマウスのアップダウン(クリック)メッセージなりを
送ればいいとおもわれ
209:デフォルトの名無しさん
08/03/26 22:37:07
BOTでも作るの?
210:デフォルトの名無しさん
08/03/26 22:38:14
BOTなんてやるならクライアントをエミュレートした方が早いだろ。
211:デフォルトの名無しさん
08/03/26 22:44:30
つか、このレベルの事をやりたいのなら、ここじゃなくてふさわしいスレッドへ行けよ
さらに言うなら、この程度自力でなんとかしやがれ。
212:デフォルトの名無しさん
08/03/27 00:08:19
C#というのは、名前とは違い、CとC++のどちらにも互換性が無いのだろう。
ANSIの標準ライブラリは、何一つC#では使えないんだろうな。
それなら、VB.NETのほうが良いのでは。
VBを知らない人のための言語のように思えるが。
213:デフォルトの名無しさん
08/03/27 00:22:28
コンパイラ エラー CS0274 って別にエラーにする必要なくね?
public int Property
{
get { return hoge; }
private set { hoge = value; }
}
より
public int Property
{
public get { return hoge; }
private set { hoge = value; }
}
のほうがシンメトリックだし。
214:デフォルトの名無しさん
08/03/27 00:33:21
>>213
ヘジたんの御心のままです
215:デフォルトの名無しさん
08/03/27 00:39:46
わざわざ、public書く必要もないが、禁止するほどのことでもないな。
216:デフォルトの名無しさん
08/03/27 01:09:01
C#で電子メールクライアントを作っているのですが、Windowsの右クリックメニューにある
「送る」->「メール受信者」という項目から通常使うメーラとして起動したいのですが、
HKEY_LOCAL\SOFTWARE\Clients\Mail\nullmail\Protocols\mailto\shell\open\command
HKEY_LOCAL\SOFTWARE\Clients\Mail\nullmail\shell\open\command
などのレジストリを書き換えても動いてくれません。
IEの通常使うメールソフトの設定には表示されているのですが、なぜか起動すらしてくれないのです。
Gmail等のWebメールでURLに引数を付けて呼び出す方法などだと動くのですが、
.NETでメールを書く場合には何かルールがあるのでしょうか?
217:デフォルトの名無しさん
08/03/27 02:52:38
初めてプログラムを学ぶ者です。
C#を使えるようにしたいのですが、
どのように勉強するのが効率的なのでしょうか?
一応、15日ほど前にC#の絵本というのを買って
Micro Soft Visual Studio C# 2005 Express Edition
というツールを使いながら読み進めているのですが、
サンプルプログラムに省略されている部分が多くてよくわからないのです。
218:デフォルトの名無しさん
08/03/27 08:47:31
TreeNode[] tn = treeView.Nodes.Find(key, true);
これってつまり重複したキーが使えるという事なのでしょうか?
今まで気づかなかったorz
219:デフォルトの名無しさん
08/03/27 09:05:21
テトリスを作ってみたいのですが少し調べてみたらXNAとDirectXと2つあるようです。
どちらで作ればよいのでしょうか?
220:デフォルトの名無しさん
08/03/27 09:27:17
XNA・・・xbox360でも動く、資料少ない。将来性あるのか謎。
PCだと、XNAランタイムみたいなの入れてないと動かないPO
DirectX・・・資料多い。ややめんどくさいかも。PCだけだとこっちの方が動く環境多い
221:デフォルトの名無しさん
08/03/27 09:28:00
テトリスレベルならGDIでいいんじゃね
222:デフォルトの名無しさん
08/03/27 09:29:56
C#でDirectXつかう利点あるの?
C++つかったほうが
223:デフォルトの名無しさん
08/03/27 09:36:15
とりあえず何か作ってみたいのです。
224:デフォルトの名無しさん
08/03/27 09:45:54
>>223
じゃあどっちでも良いじゃん
225:デフォルトの名無しさん
08/03/27 09:55:48
XNAは、Xbox360と共通化されたDirectXのラッパーで、C#から楽に呼べる。
C#にする時点で.NETを入れる必要があるんだから
XNAのランタイムを入れる必要があるってデメリットは無視できると思う。
「DirectX」がもしManaged DirectXのことを言ってるんだとしたら結局は同じ。
Managed DirectXは見捨てられ、XNAにシフトした。
ただし、360コントローラ以外のパッドのようにXbox360と互換がないデバイスは
XNAでサポートされていないのでManaged DirectXを使う必要がある。
DirectXを直接C#から呼ぶのは大変。
と時間が出来たら技術的興味からXNAに触ってみようとしてるやつが思った、
間違ってるとこがあるかもしれない戯れ言
226:デフォルトの名無しさん
08/03/27 10:07:06
これ嫁
URLリンク(www.amazon.co.jp)
227:デフォルトの名無しさん
08/03/27 10:40:13
最終的にはGDI関係をDirectXの上に乗ったライブラリとして実装しようという流れは変わらないみたいだし
そうすると、セキュリティーの関係上DirectXがマネージドでないと都合が悪いので
どういう形になるにせよ、DirectXがマネージドになるのは時間の問題かと。
現在のDirectXがマネージドDirectXラッパーになるのでは。
228:デフォルトの名無しさん
08/03/27 11:10:35
C#の資格試験はどういうものがありますか
229:デフォルトの名無しさん
08/03/27 11:46:06
ToolStripMenuItemの1つ上にあるToolStripMenuItemはどうやったら調べられますか?
230:229
08/03/27 11:49:17
OwnerItemでした
231:デフォルトの名無しさん
08/03/27 13:37:42
>>228
MCTS,MCPD
232:デフォルトの名無しさん
08/03/27 13:56:33
掛け算の式を表示するプログラムを作ってみたのですが、まったく表示されません。なぜなのかおしえてください
using System;
class aaa
{
public static void Main()
{
for (int a = 1; a == 9; ++a)
{
for (int b = 1; b == 9; ++b)
{
Console.Write("{0}*{1}",a,b);
}
Console.Write("\n");
}
}
}
233:デフォルトの名無しさん
08/03/27 14:15:17
> for (int a = 1; a == 9; ++a)
a == 9 が true の間だけループを回す、って意味だが。
234:デフォルトの名無しさん
08/03/27 14:16:48
>>225
DInputゲームパッドから入力とるだけならC#+Marshalingで直さわりしても
正直一日仕事レベルなのだが意外に知られてないっつーか
キーマップやら無理ない設計やら面倒くさいもの(しかしあまり使われない)が
ややこしいのは確かなんだが
235:デフォルトの名無しさん
08/03/27 14:38:42
XNA使って箱で動かないものを書いてどうする
236:デフォルトの名無しさん
08/03/27 14:42:08
SlimDXおすすめ
プライベート配置できるし
237:デフォルトの名無しさん
08/03/27 14:42:11
>>227
そもそも、DirectX自体がWPFとXNAに二分されて
フェードアウトするんじゃないか?
DirectShowなんか、既にWindows SDKに移住したし。
238:デフォルトの名無しさん
08/03/27 15:04:57
>>235
んなもん #if で終了だろ
239:デフォルトの名無しさん
08/03/27 16:36:39
型の使い分けについて教えて下さい。
int やlongの場合、intを使わずに全てlongで良いような気がするのですが、なぜintが存在しているのでしょうか?
素人考えだと、intで良い物はむやみにlongにするより、処理が早くてすむ、メモリの節約になる。
などの理由があるのかなと予想しているのですが。
240:デフォルトの名無しさん
08/03/27 16:43:01
>>239
>処理が早くてすむ、メモリの節約になる。
正解。
241:デフォルトの名無しさん
08/03/27 16:44:58
そうだよ?
誰もA1ノートなんて買わないだろ?使わないんだから
242:デフォルトの名無しさん
08/03/27 16:53:21
longよりintが先に存在したから
243:デフォルトの名無しさん
08/03/27 17:09:39
>>240-242
ありがとうございます。すっきりしました。
244:デフォルトの名無しさん
08/03/27 17:12:31
>>237
Direct3Dに関しては、WPFのブラシの一つとして実装されるのが一番綺麗だろうな。
逆にDirect3DのテクスチャとしてWPFがまた利用可能で、無限入れ子になってくれば汎用性も高そうな気がする。
消滅に関しては今更感があるので難しいかと。
245:デフォルトの名無しさん
08/03/27 17:15:00
>>239
現状だとCPUが32ビットで、複数回に分けて計算されるので
long だと、マルチスレッドではいちいちlockしないといけないのが面倒くさいという実務上の都合もあるな。
246:デフォルトの名無しさん
08/03/27 17:15:14
WPFのもっと低レベルな描画方法は欲しい
247:デフォルトの名無しさん
08/03/27 18:39:55
>>245
thx 参考になります。
248:デフォルトの名無しさん
08/03/27 19:12:38
tryの中で冷害が起きるとFにみちりりんの中は実行されるですか?
249:デフォルトの名無しさん
08/03/27 19:15:42
それ面白いと思って書いてるのかな。
ちっとも面白くないが、君が「オカシイ」奴だということだけはよくわかるよ
250:デフォルトの名無しさん
08/03/27 19:33:52
オーバーロードがないと叱られるのですが、どうしたら良いですか?
ToolStripItem.MouseUp += new EventHandler(fff);
private void fff(object sender, MouseEventArgs e)
{
}
251:デフォルトの名無しさん
08/03/27 19:36:16
ToolStripItem.MouseUp += new MouseEventHandler(fff);
または
ToolStripItem.MouseUp += fff;
252:デフォルトの名無しさん
08/03/27 19:41:18
>>251
ありがとうございます。
EventHandlerで全て処理するのかと思い込んでいました。
指摘されて電気が走りました・・・。
253:デフォルトの名無しさん
08/03/27 21:05:38
foreachの中で要素を消すのは違法ですか?
254:デフォルトの名無しさん
08/03/27 21:11:05
ダメ。ゼッタイ。
255:デフォルトの名無しさん
08/03/27 21:13:35
消すのイクナイ。
256:デフォルトの名無しさん
08/03/27 21:32:27
てかコンパイルエラー吐くだろ。設定で無視できるのか?
257:デフォルトの名無しさん
08/03/27 23:07:13
SplitContainerでdockをfillにしてフォームのサイズを変更するとラインの位置が比率?で
変わりますがこれをどちらかだけ固定する方法はないのでしょうか?
258:257
08/03/27 23:08:40
ありました・・・
今度は30秒待ってから書きますorz
259:デフォルトの名無しさん
08/03/27 23:36:55
フォームが非アクティブの時にもキー入力を取得したいのですがどうしたらいいんでしょうか?
260:デフォルトの名無しさん
08/03/27 23:38:15
ほっく
261:デフォルトの名無しさん
08/03/28 00:01:05
URLリンク(homepage3.nifty.com)
ここの「ホットキーを登録する」をコピペしたら動きました。
これから理解したいと思います。
262:デフォルトの名無しさん
08/03/28 02:34:15
初心者で申し訳ないんですが、ジェネリックの使い方がいまいち分かっていないようです
以下のような、任意のデータ方を扱えるconsを作りたいのですが、うまくいきません。ご教鞭願いたいです
class Cons<T,U>
{
private T left;
private U right;
public T car
{
get { return left; }
set { left = value; }
}
public U cdr
{
get { return right; }
set { right = value; }
}
public Cons(T a,U b)
{
this.left = a;
this.right = b;
}
263:つづき
08/03/28 02:34:53
public override string ToString()
{
return "(" + left.ToString() + "." + right.ToString() + ")";
}
static void Main()
{
Cons a = new Cons(10, "a");
Console.WriteLine(a.ToString());
}
}
264:デフォルトの名無しさん
08/03/28 02:36:54
プラスとして、恐らく上のままでは一旦
Cons a = new Cons(10,"abc");
などとして作った後、
a.car="foo";
とするとエラーになると思うのですが、解決策はあるでしょうか?
265:デフォルトの名無しさん
08/03/28 02:46:24
>>264
この2つを直せば動く。
1. ジェネリッククラス内にエントリポイントMainは置けない。
2. ジェネリッククラスを使うときには、Cons<int, string>のように
ジェネリックの引数を指定しないといけない。
266:デフォルトの名無しさん
08/03/28 03:02:32
ちなみに、
型推論を働かせたい場合、コンストラクタでは無理。
static partial class New
{
static Cons<T, U> Cons<T, U>(T left, U right) { return new Cons<T, U> (left, right); }
}
みたいな static メソッドを書けば、
C# 3.0 なら
var a = New.Cons(10, "abc");
で、Cons<int, string> が作られたりはする。
267:デフォルトの名無しさん
08/03/28 03:05:29
すみません、少し質問の仕方が悪かったですね。
・任意のデータ型を内包できるリスト構造を作れるか
・そのリストの要素をまた別の任意の型へ変換できるものが作れるか
この2点が知りたいです。
そんなに柔軟な型にこだわるならスクリプト言語でもいじってろと思うかもしれませんが・・・
268:デフォルトの名無しさん
08/03/28 03:07:09
>>266
なるほど、結構しんどくなってくるんですね・・・
269:デフォルトの名無しさん
08/03/28 03:22:08
自己解決しました。普通にobject型使えば一発でした。
吊ってきます。
270:デフォルトの名無しさん
08/03/28 06:42:43
>>268
横やりだけど、これって関数型言語のような事をしたいという意味に取れたのですが
もしそうだとしたら、プロパティーに set をつけること事態がよろしくないのでは?
と思ったりしたのですが・・・・
やるとすれば、たとえば string クラスや DateTime クラスのように
一回設定したら変更できないタイプのクラスに設計するのが美しいような予感がします。
271:デフォルトの名無しさん
08/03/28 07:11:04
自分が実装するなら・・・こうかな
public class Pair<T,U> {
T left ;
U right ;
public T Left { return left ; }
public U Right { return right ; }
public Pair<T,U>(T l ,U r) { left = l ; right = r ; }
public override string ToString() {
return "(" + left.ToString() + "." + right.ToString() + ")";
}
}
public static class Lisp {
public static T Car<T,U>( this Pair<T,U> pair ) { return pair.left ; }
public static U Cdr<T,U>( this Pair<T,U> pair ) { return pair.right ; }
public static T SetCar<V,U>( this Pair<T,U> pair , V left ) { return new Pair<V,U>( left , pair.right ) ; }
public static U SetCdr<T,V>( this Pair<T,U> pair , V right ) { return new Pair<T,V>( pair.left , right ) ; }
public static Pair<T,U> Cons<T,U>( T left , U right ) { return new Pair<T,U>( left , right ) ; }
}
class MyClass {
void Main() {
var a = Lisp.Cons( 10 , "a" ).Car() ;
var b = a.SetCar( "foo" ) ;
Console.WriteLine(a.ToString());
}
}
272:デフォルトの名無しさん
08/03/28 07:26:52
まちがっている
public static T SetCar<V,U>( this Pair<T,U> pair , V left ) { return new Pair<V,U>( left , pair.right ) ; }
public static U SetCdr<T,V>( this Pair<T,U> pair , V right ) { return new Pair<T,V>( pair.left , right ) ; }
↓
public static Pair<V,U> SetCar<T,U,V>( this Pair<T,U> pair , V left ) { return new Pair<V,U>( left , pair.right ) ; }
public static Pair<T,V> SetCdr<T,U,V>( this Pair<T,U> pair , V right ) { return new Pair<T,V>( pair.left , right ) ; }
コンパイルしていないのでまだあるかも知れない。
273:デフォルトの名無しさん
08/03/28 08:27:11
public T Left { ... }
↓
public T Left { get { ... } }
pair.left
↓
pair.Left
あとはMainもおかしい
aはint
274:デフォルトの名無しさん
08/03/28 09:06:50
>>269
ジェネリックスはもともと関数型言語由来だから相性は悪くないはず
object などと妥協せずとことんやりこんでみる事をお勧めする。
275:デフォルトの名無しさん
08/03/28 10:39:38
lock(x)
{
}
を有効にするにはxオブジェクトを private static で修飾する、ということであってますか?
276:デフォルトの名無しさん
08/03/28 11:00:31
static が付くとは限らないんじゃないか
readonly をつけることは結構あるかも
277:デフォルトの名無しさん
08/03/28 12:31:07
>>275
日本語書け。
「有効にする」とはどういう意味?
あるいは、「有効にする」というからには「無効」という状態があるんだろうが
「lock(x)が無効」とは具体的にどんな事態のことを指してるの?
278:デフォルトの名無しさん
08/03/28 13:06:03
>>275
MSDNでlockのところ読んどけ
279:デフォルトの名無しさん
08/03/28 13:53:17
>>276
おぃ、なんちゅートンデモアドバイスを与えいるんだ?
280:デフォルトの名無しさん
08/03/28 19:04:42
Test
281:デフォルトの名無しさん
08/03/28 20:04:53
private string[] List_GetItem(string url)
{
foreach (string[] item in list_news) if (item[0] == url) return item;
return null;
}
こういう書き方ってきもいかな?
282:デフォルトの名無しさん
08/03/28 20:09:46
うん
283:デフォルトの名無しさん
08/03/28 20:12:14
foreachで回す必要なし
284:デフォルトの名無しさん
08/03/28 20:14:15
メソッド名がきもいです
285:デフォルトの名無しさん
08/03/28 20:19:08
つーか、メソッドにする必要なくね?
286:デフォルトの名無しさん
08/03/28 20:25:14
list_newsがList<string[]>なら、
list_news.Find(x => x[0] == url)
ですむんじゃまいか。
287:デフォルトの名無しさん
08/03/28 20:29:21
List_まではいいけど、GetItemがものすごく嫌だな
たぶん.NetFrameworkの上でなければ全然気にならないんだろうけどwww
288:デフォルトの名無しさん
08/03/28 20:36:40
TransparencyKeyで透過色を指定した後、
やっぱり透過をやめたい場合はどうすればいいんでしょうか??
289:281
08/03/28 21:11:32
みなさん、ありがとうございます
メソッド名がきもいのは許して・・・
>>286
こういう書き方ができるのですね
勉強になります
290:デフォルトの名無しさん
08/03/29 13:05:15
基底クラス内で宣言したクラスや構造体に
派生クラスからメンバを追加する方法ってありますか?
291:デフォルトの名無しさん
08/03/29 13:12:43
意味が分からん
具体的に何がしたい
292:デフォルトの名無しさん
08/03/29 13:13:08
class Base {
//Nestedオブジェクトは常にこのメソッドを通して作ること!
protected virtual Nested CreateNested() { return new Nested(); }
protected class Nested { }
}
class Derived {
protected override Nested CreateNested() { return new DerivedNested(); }
class DerivedNested : Nested { public void NewMember() { } }
}
こういうことか?
293:デフォルトの名無しさん
08/03/29 14:13:59
たぶん例えばListViewItemを継承したクラスで、ListViewSubItemを継承したいとかそんなことだと予想。
最近何通りにも解釈できる短い日本語だけで、何も具体的に書かないのが多いな。
しかもそれに対して、こうでしたって書き込みがない。
釣りか?
294:デフォルトの名無しさん
08/03/29 14:26:27
釣りではないでしょ。
むしろこういうタイプの「彼」は、「俺様の意図が理解できないなら黙ってろよこの煽り厨房が」
ぐらいのことをリアルで思ってように感じられる。
295:デフォルトの名無しさん
08/03/29 14:28:16
お前ら偉そうだなっ!
これからも宜しくお願いしますm(_._)m
飛び入りです
296:デフォルトの名無しさん
08/03/29 14:38:30
お前ら偉そうだなっ!
これからも宜しくお願いしますm(_._)m
通りすがりです
297:デフォルトの名無しさん
08/03/29 14:55:22
若い人は特に言葉使いとか礼を述べる習慣がありませんからね
そういう教育をしてこなかった世代にも誤りがあります
298:デフォルトの名無しさん
08/03/29 15:05:13
>>297
礼儀の問題か。
説明能力の問題だろう。
まあ君の場合は理解力の問題でもある。
299:デフォルトの名無しさん
08/03/29 15:08:51
>>298
1から1000まで書かないと理解して貰えませんでしたか、とても残念です。
300:デフォルトの名無しさん
08/03/29 15:18:21
どんな幸せ回路内蔵してんだろコイツ
301:デフォルトの名無しさん
08/03/29 15:49:20
ただのバカですな、そのままの意味で理解するなら不可能とだけ答えて終わりにしておきませう。
きっと彼の想像するお望みの機能はあっさり実装できると思われますが。
302:デフォルトの名無しさん
08/03/29 16:09:21
ユーザーが指定した数だけ数字を入力できるプログラムを作りたいのですが、エラーが出て実効できません、どこがおかしいのかおしえてください
using System;
class aaa
{
public static void Main()
{
int a = int.Parse(Console.ReadLine());
int[] b= new int [a];
for(int c=0;c<=a;++c)
{
a[c] = int.Parse(Console.ReadLine());
}
}
}
303:デフォルトの名無しさん
08/03/29 16:12:04
c<=a ←これがおかしい
304:デフォルトの名無しさん
08/03/29 16:24:42
なんでエラーメッセージを読みすらしないんだろう?
305:デフォルトの名無しさん
08/03/29 16:26:39
エラーメッセージよんでもわかりませんでした。
あと直す箇所はどうやってなおしたらいいかおしえてください
306:デフォルトの名無しさん
08/03/29 16:28:39
>>305
では、ここに来る前に入門書を購入してしばらくやってください。
ちょっと迷惑にもほどがありますね。
307:デフォルトの名無しさん
08/03/29 16:29:03
どう見てもs/a[c]/b[c]/だろ。
c=<aはおかしいがc<=aは正しい
aは配列じゃない云々言われたはずだが、どうして分からないとか言えるんだ?
308:デフォルトの名無しさん
08/03/29 16:31:13
すいません、もっとよく勉強してから来ます
309:デフォルトの名無しさん
08/03/29 16:32:32
DataSetを利用している人って多いい?
310:デフォルトの名無しさん
08/03/29 16:34:54
趣味の人は使わないと思うよ、実務系のひとなら大抵使っているかと。
311:デフォルトの名無しさん
08/03/29 17:18:12
TransparencyKeyで透過色を指定した後、
やっぱり透過をやめたい場合はどうすればいいんでしょうか??
312:デフォルトの名無しさん
08/03/29 17:56:25
C#で作成したアプリケーションをスタートアップに登録しても起動しないんですが、何が悪いんでしょうか?
OS起動後に実行すれば問題なく実行できます。
環境は
OS:WindowsXPSP2
IDE:Visualstudio2005pro
.netframework2
です。
313:デフォルトの名無しさん
08/03/29 18:05:51
>>312
当方まったく同じ環境ですが、問題なく起動しています。
別に原因があるんじゃないですかね?
314:デフォルトの名無しさん
08/03/29 18:07:40
他ユーザの場所に登録したんじゃないの?
315:デフォルトの名無しさん
08/03/29 18:12:23
>>311
Color.Empty でも指定すれば良いんじゃね
316:デフォルトの名無しさん
08/03/29 18:33:44
>>310
今までデータ管理は自分でやっていたから気にしてなかったのですがさっき自分が使いやすいように
固めて扱ってみたらわりと便利そうな感じです。これから設定などはこれを利用してみようと思います。
317:デフォルトの名無しさん
08/03/29 18:35:25
>>316
これからやるなら、せっかくだからLINQ攻めてみたらどうだい?
318:デフォルトの名無しさん
08/03/29 18:42:43
スレチすいません。
Visual Studio 2005のヘルプのようなヘルプを作りたいのですがどうすればいいのでしょう?
319:デフォルトの名無しさん
08/03/29 19:02:12
ウィンドウの最小サイズってどのくらいなんでしょう?
30*30に設定してもならないですし、
フォームにラベル貼ってAutoSizeで大きく表示したあと、そのラベルを30*30くらいまで下げると縦長のウィンドウになっちゃうし…。
320:デフォルトの名無しさん
08/03/29 19:11:13
>>316
sqlとの付き合いも長いからある程度は使えると思うのですがまだ利用のイメージが
わかないのです。あると便利なのはわかるのですがそれを有効に使うには結局、
メモリ以上に大量のデーターベースをおいて置かないといけないって事ですよね?。
321:デフォルトの名無しさん
08/03/29 19:25:40
>>319
SystemInformation.MinimizedWindowSize
SystemInformation.MinWindowTrackSize
この辺じゃね?
322:デフォルトの名無しさん
08/03/29 20:01:01
>>320
そんな激しいもんじゃないよ、テーブルの定義がclassのフィールドもしくはプロパティーになって
その配列(シーケンスとよばれている)がテーブル
それに対してクエリを発行しましょうという物。
その テーブルの定義 == class に Sql やら XML やら、自作DBを関連付けて統一的に取り扱えるようにしましょうという物。
323:デフォルトの名無しさん
08/03/29 20:01:18
>>321
てことは30*30とかには変更できないって事ですね。
でもラベルのAutoSizeに合わせるとバグるのはなんでなんだろ
324:デフォルトの名無しさん
08/03/29 22:24:58
>>318
NDocは更新が止まっていた気がするので今だとSandcastle?
325:デフォルトの名無しさん
08/03/29 22:38:15
>>318
どこかで見かけたなと思って、スタートメニューの中をのぞいていたら HTML Help Workshop というのがあって
ためしにチョコチョコっと作ったらできた。
初代VS,2002,2003,2005,2008のどれかについてきたものだと思う、調べてみるといいかも。
326:デフォルトの名無しさん
08/03/29 22:52:17
Officeについていたりもするよ
327:デフォルトの名無しさん
08/03/29 22:57:05
チェックボックスやラジオボタンの状態を保存するのってどうすればいいのでしょうか?
誰か、暇だったら教えて下さい><
328:デフォルトの名無しさん
08/03/29 22:58:04
>>327
プロパティー読み出して適当な変数に保存しておればいいかと。
Checkedという名前だった・・・はず
329:デフォルトの名無しさん
08/03/29 23:11:32
>>328
ありがとうございます。明日起きたらやってみますzzz
330:デフォルトの名無しさん
08/03/29 23:12:05
Sandcastleだな。
331:デフォルトの名無しさん
08/03/29 23:38:32
オブジェクトのプロパティの値を全てTextWriterに書き出す標準の方法ってある?
自分でリフレクション使ってやらないといけない?
332:デフォルトの名無しさん
08/03/29 23:45:33
プロパティの値といわれると制限が強いがXmlSerializer
フィールドならIFormatterだが直接TextWriterは無理か
333:デフォルトの名無しさん
08/03/29 23:47:46
>>331
シリアライザを使ったらいいと思うよ。
334:331
08/03/29 23:49:48
すみません デバッグ用に書き出したいだけなんです
イミディエイトウインドウなんかだと自動でやってくれるので,
もしかしたら標準的な方法が用意されてるのかなと
335:デフォルトの名無しさん
08/03/29 23:54:09
>>334
URLリンク(www.codeplex.com)
commonsと比べると微妙だった気がするが・・・
336:デフォルトの名無しさん
08/03/29 23:55:08
使ったことはないけど、デバッグ用のがあったな・・・
最近見かけておやっ、あとで調べとかなきゃとか思っていたんだが2008専用かもしれん。
今、手元にないので駄目だが、ツールボックスか、プロジェクトの追加の所を調べてみるといい、たしか有ったぞ。
337:デフォルトの名無しさん
08/03/30 09:05:33
>>336
Visualizer(デバッガ ビジュアライザ)の事?
あれはTextWriterに書き出すのとは用途が違うからなぁ・・
338:デフォルトの名無しさん
08/03/30 10:21:33
[]でアクセスするプロパティは作れますか?
339:デフォルトの名無しさん
08/03/30 10:24:20
うん
340:デフォルトの名無しさん
08/03/30 10:28:43
どうするの?
341:デフォルトの名無しさん
08/03/30 10:38:09
インデクサでぐぐれ
342:デフォルトの名無しさん
08/03/30 12:36:40
クラスのパブリックメンバ(プロパティ)で、
単に
public int Member1;
とするのと、get setを使用する
public int Member1()
{
get{return _member1;}
set{_member1 = value;}
}
とするのとは同じものと考えていいのでしょうか?
343:デフォルトの名無しさん
08/03/30 12:37:46
いいえ。
前者はフィールドで後者はプロパティです。
344:デフォルトの名無しさん
08/03/30 13:06:52
やることは一緒だろ
345:デフォルトの名無しさん
08/03/30 13:21:59
>>344
本格的に使ってみればわかる、全くの別物。
346:デフォルトの名無しさん
08/03/30 15:43:06
プロパティの方は、set時に値チェックをするもよし、内部状態を更新するもよし、get時に状況に応じて別のフィールドの値を返すもよし、例外を投げるもよし
347:デフォルトの名無しさん
08/03/30 16:01:42
自分で作っている範囲なら、その程度の範囲かもしれないしが
例えば DataGridView とかプロパティーのみを表示するクラスとか色々あるだろ
デザイナ上でのユーザーコントロールもそうだし
そういった所まで使い始めるとどちらで設計するかが使い勝手の良さを決定的に変える。
348:デフォルトの名無しさん
08/03/30 16:02:45
>>346
例外を投げるとは具体的にどのように?
349:デフォルトの名無しさん
08/03/30 16:04:04
>>348
346では無いが、そのぐらいは自分で考えてみたらどうだい?
350:デフォルトの名無しさん
08/03/30 16:10:36
Class1 c1 = new Class1();
c1.exceptionMessage = "";
if (c1.exceptionMessage != string.IsNullOrEmpty)
{
MessageBox.Show(c1.exceptionMessage);
c1.exceptionMessge = "";
}
351:デフォルトの名無しさん
08/03/30 16:18:06
>>350
C++上のメタプログラミングみたいだな、けど・・・でき悪い、キモイよ
使用したいなら更なる改善を要求する
352:デフォルトの名無しさん
08/03/30 17:35:21
NetworkStream.Flash()で強制送信だと思うのですがサーバー側はどうやって分けて受信したら
良いのでしょうか?
353:デフォルトの名無しさん
08/03/30 17:47:39
分けて受信とかTCPにそんな機能無いから
354:デフォルトの名無しさん
08/03/30 17:50:29
>>353
そうするとデータの最後に何らかの〆データを付加するしかないのですね
355:デフォルトの名無しさん
08/03/30 17:58:46
>>346
getで例外投げるのはガイドライン違反
356:デフォルトの名無しさん
08/03/30 18:06:21
Nullable<>.Valueとか普通に例外投げてくるけどね
357:デフォルトの名無しさん
08/03/30 18:11:57
それはキャッチされることを想定してないから問題ないんじゃないの
javaでいうところのチェック済み例外みたいなのをgetが投げちゃダメって意味だと思う
358:デフォルトの名無しさん
08/03/30 18:50:09
ref class Anime
{
private Dictionary<Int32, String> titles;
}
こんなクラスで
Anime ccs = new Anime();
ccs.Title[0] = "さくらと不思議な本"
Console.WiteLine(ccs.Title[0]);
みたいに使えるプロパティを作るにはどうすればいいですか?
上記以外のコレクションへの直接操作は出来ない感じで。
359:デフォルトの名無しさん
08/03/30 18:53:15
>>358
>>341
360:デフォルトの名無しさん
08/03/30 18:58:46
>>358
まずC#に ref classはないだろ
class Anime
[
private Dictionary<int,string> titles;
public Dictionary<int,string> Titles{ get{ return titles; } }
}
これで出来る
361:デフォルトの名無しさん
08/03/30 18:59:01
>>358
public Dictionary<int, string> Titles { get{ return this.titles; } }
362:デフォルトの名無しさん
08/03/30 19:03:48
>上記以外のコレクションへの直接操作は出来ない感じで。
インデクサを通さないと他の操作やりたい放題だよ
public string this[int index] {
get { return titles[index]; }
set { if(titles.ContainsKey(index))titles[index]=value;else titles.Add(index,value); }
}
363:デフォルトの名無しさん
08/03/30 19:05:50
それだと構文が異なるだろ。
C#は名前つきインデクサ作れないから、プロキシオブジェクトを返さないと無理だ
364:デフォルトの名無しさん
08/03/30 19:08:21
iterindexコードスニペットを使えば幸せになれるかも
インデクサ自体の実装は>>362みたいな感じで
365:デフォルトの名無しさん
08/03/30 19:11:05
そもそもそれ関数じゃだめなのか?
366:デフォルトの名無しさん
08/03/30 19:50:51
DictionaryBaseでも継承したネストクラスを作って公開するのが普通だろ
367:デフォルトの名無しさん
08/03/30 19:56:42
今更非ジェネリックは無いわ
368:デフォルトの名無しさん
08/03/30 20:18:48
こうだろ
class Anime
{
Dictionary<string,int> titles;
TitlesIndexer indexer;
public Anime()
{
titles = new Dictionary<string,int>();
indexer = new TitlesIndexer(titles);
}
public TitlesIndexer Titles{ get{ return indexer; } }
public class TitlesIndexer
{
Dictionary<int,string> titles;
public TitlesIndexer(Dictionary<int,string> titles)
{
this.titles = titles;
}
public string this[int index]{ get{ return titles[index]} } }
}
}
369:デフォルトの名無しさん
08/03/30 20:21:36
358 じゃないですが、プロキシオブジェクトと聞いて・・・
以前からある System.Collections.ArrayList.ReadOnly や System.Collections.ArrayList.Synchronized
に対応する
ジェネリックス版は無いのでしょうか?
見つからなくてとりあえず自作してしまっているので、あれば交換しておきたい所。
370:デフォルトの名無しさん
08/03/30 20:22:31
>>365
そんな最低な仕様は嫌だろ、Linqも何も使えなくなっちまう。
371:デフォルトの名無しさん
08/03/30 20:24:49
>>369
ないよ。なくなっちゃった。
372:デフォルトの名無しさん
08/03/30 20:30:53
List<T>.AsReadOnlyはある
373:デフォルトの名無しさん
08/03/30 20:38:24
>>372
ども、Asが付いたのか
なんとも実装が中途半端だな、問題が見つかったのだろうか?
374:デフォルトの名無しさん
08/03/30 20:38:54
System.Collections.ObjectModel.ReadOnlyCollection<T>ってのもある。
Synchronizedは・・・まぁ手抜きサービスとしてはあまりに
お粗末すぎるから廃止されたんじゃねーの?
375:デフォルトの名無しさん
08/03/30 20:41:39
>>358
敢えてタイトルの中身には突っ込まないでおこう。
376:デフォルトの名無しさん
08/03/30 20:59:46
オンラインMSDNが最近重いからオフラインにインストールしてみたのですが・・・
キーワード検索で「socket」って入れるとSystem.Net.Sockets.SocketExceptionしか出てこない
こんなものでしょうか?、それとも使い方を間違えているのでしょうか?
TcpClient tcp = listener.AcceptTcpClient();
このtcpからリモートのIPを調べる方法を知りたいのです
377:デフォルトの名無しさん
08/03/30 21:19:57
WindowsSDK入れたら表示できるようになったような気がする
378:デフォルトの名無しさん
08/03/30 21:27:27
>>376
TCPは知らないけど、
どのMSDNライブラリを入れたのか?
フィルタが設定されていないか?
これ入れた?
URLリンク(www.microsoft.com)
379:デフォルトの名無しさん
08/03/30 21:49:59
>>374
問題が分ってきた
使いにくい理由は、SyncRootをコンテナが持っているからで
外部から渡せば十分使い物になりそうな感じがするんだけどな。
380:デフォルトの名無しさん
08/03/30 22:36:06
>>377-378
VS2008ExpressJPNX1428694ってDVDでVCSやVCとかも入った物から入れました。
>>378のサイズを考えると上記のDVDには一部しか入っていないようですです。
ありがとうございます。
しかし2464.6 MBはADSLには辛い・・・。
381:デフォルトの名無しさん
08/03/30 23:32:42
>>358
IList<>とIDictionary<>のインデクサの汎用ラッパー作ってみた
public static class Indexer {
public static DictionaryIndexer<TKey, TValue> GetIndexer<TKey, TValue>(this IDictionary<TKey, TValue> dict) { return new DictionaryIndexer<TKey, TValue>(dict); }
public static ListIndexer<T> GetIndexer<T>(this IList<T> list) { return new ListIndexer<T>(list); }
}
public sealed class DictionaryIndexer<TKey, TValue> {
private IDictionary<TKey, TValue> dict;
internal DictionaryIndexer(IDictionary<TKey, TValue> dict) { this.dict = dict; }
public TValue this[TKey key] { get { return dict[key]; } set { dict[key] = value; } }
}
public sealed class ListIndexer<T> {
private IList<T> list;
internal ListIndexer(IList<T> list) { this.list = list; }
public T this[int index] { get { return list[index]; } set { list[index] = value; } }
}
382:デフォルトの名無しさん
08/03/30 23:40:27
C#+ASP.NETの学習で何か良書はありませんでしょうか?
(値段、初心者向け問わず、なるべく内容の濃いもの)
383:デフォルトの名無しさん
08/03/31 15:40:49
C#で
URLリンク(www2s.biglobe.ne.jp)
のような処理を行いたいのですがどうすればよいのでしょうか?
ヒントでも構いませんのでご教授いただければ幸いです。
384:デフォルトの名無しさん
08/03/31 15:49:26
>>383
シェル拡張したいってことかな?
↓こんな話が。
URLリンク(blogs.wankuma.com)
385:デフォルトの名無しさん
08/03/31 16:34:10
>>384
シェル拡張ではない気がします......
キーボードフックでF2キーを監視しているのでしょうか?
386:デフォルトの名無しさん
08/03/31 16:40:49
普通にサブクラス化してるだけじゃないの?
387:デフォルトの名無しさん
08/03/31 17:12:17
配列の中にある数字をすべて足すにはどうすればいいですか?
ちなみに配列は一次配列で内容はint型の整数です。
388:デフォルトの名無しさん
08/03/31 17:20:23
var arr = new { 1, 2, 3 };
var total = arr.Sum();
.NET 3.0かそれ以前なら普通にループ。
389:デフォルトの名無しさん
08/03/31 18:20:39
>>385
見るからにシェル拡張に見えるよ
390:デフォルトの名無しさん
08/03/31 19:13:52
>>388
new[]だろ?
391:デフォルトの名無しさん
08/03/31 20:45:58
C++から移行してきたんですが、C++用のDLLってC#で使えますか?
MFCに依存しないWin32 DLLです
392:デフォルトの名無しさん
08/03/31 20:49:51
C++特有の機能を使っていないただの関数ならできる。
あとはCOMになっているやつもいける。
393:デフォルトの名無しさん
08/03/31 20:52:06
>>389
どうもありがとうございます。
シェル拡張部分をCやC++で書いて処理部分をC#で書く、と言う形になるのでしょうか?
394:デフォルトの名無しさん
08/03/31 20:53:57
>>392
てことは、クラスとかは無理ってことでしょうか
395:デフォルトの名無しさん
08/03/31 20:58:54
C++/CLIつかえばいいよ
396:デフォルトの名無しさん
08/03/31 21:07:27
IDisposable実装してDisposeしたいのですが、メンバのすべてを
自分で明示的にクリアしなければならないですか?
たとえば、プロパティ用の一時変数とかも含めて。
public List<int> hoge;
private string _piyo;
private int _fuga;
↑がある場合は、↓みたいに全てクリアが必要なのでしょうか?
hoge = null;
_piyo = null;
_huga = 0;
397:デフォルトの名無しさん
08/03/31 21:26:14
unmanagedなリソースだけでいい
398:デフォルトの名無しさん
08/03/31 21:37:07
別にIDisposable実装したからってGCに特別な影響があるわけじゃないよ
使い終わったら実行してほしい普通のメソッドを実装するだけ
399:デフォルトの名無しさん
08/03/31 21:39:58
フィールドにDisposeメソッド持っているやつがいたら
そいつは呼んでおけ。
400:396
08/03/31 22:02:30
>>397-399
はい、わかりましたー。
401:デフォルトの名無しさん
08/03/31 22:08:03
>>393
というか要するに複数バージョンのCLRが同一プロセスで動けないのが
問題なわけさ。エクスプローラは単一プロセスにシェル拡張読み込む
ので別バージョンのCLR使うシェル拡張読み込んだ瞬間クラッシュしちまう
それが解決出来るのならなんでもいい。といってもC++ネイチブ使ってアウト
プロセスにしちまうくらいしか思い付かないがまあ確かに出来そう。
402:デフォルトの名無しさん
08/03/31 22:37:24
MSDN引きながらちょろちょろ半分コピペしながら書いてるけど
量が多すぎてC# .Net Frameworkがわかった気がしない・・・。
しかも、なにかやりたいことがあって、それが可能か不可能か
を調べるのに、MSDNに記載されている箇所を正しく見つける
ことができずに、ぐぐって見つけたどこかの海外のフォーラム
とかブログの記事なんかで推測する始末・・・。
403:デフォルトの名無しさん
08/04/01 00:03:34
>>402
量が少なく過ぎよりははるかにマシだから。
404:デフォルトの名無しさん
08/04/01 00:07:43
どのみち外部参照するなら量がすくないほうが無駄時間へって親切
405:デフォルトの名無しさん
08/04/01 00:10:25
MSDNって日本語で読むと混乱するよなw
406:デフォルトの名無しさん
08/04/01 00:12:41
>>404
WPFの適当なドキュメントを見てみろ
今までなんだかんだいって頼りにしてたんだなと痛感する
407:デフォルトの名無しさん
08/04/01 00:13:40
MidPointRoundingの説明なんて誤訳に近いよな。
408:デフォルトの名無しさん
08/04/01 00:14:10
外部でさがすんだろ?
ならないほうがいいじゃん
409:デフォルトの名無しさん
08/04/01 00:19:46
英語読めね
410:デフォルトの名無しさん
08/04/01 00:21:52
勉強するだけでOK
411:デフォルトの名無しさん
08/04/01 00:25:28
いやMSDNを超軽くしてくれればそれだけでいい・・・。あの重さは凶悪だろ・・・。
あれだけで引く気がうせる。
412:デフォルトの名無しさん
08/04/01 00:31:23
ローカルな MSDN はいいんだが、
ネット上の MSDN は最悪だな。
413:デフォルトの名無しさん
08/04/01 00:33:37
まちがって最初にネット検索に設定してからローカルのMSDNをみることができない
だれか助けて><
414:デフォルトの名無しさん
08/04/01 00:43:38
メモリ1Gしか積んでないからかもしれないけど、
ローカルでもSystem.Windows.Forms名前空間みたいに
でかいページを表示しようとするときと移動するときは重い
415:デフォルトの名無しさん
08/04/01 00:49:44
MSDNライブラリのためにPCを買い換えなければならんとは。くちおしや。
416:デフォルトの名無しさん
08/04/01 09:05:42
typedefはないの?
417:デフォルトの名無しさん
08/04/01 09:34:04
要らないの
418:デフォルトの名無しさん
08/04/01 09:50:39
listview+= mouseclickはアイテムが存在しない所では発生しないみたいですが、
これをlistview内であれば発生するようにしたい場合はどうしたら良いでしょうか?
419:418
08/04/01 09:54:13
mousedownか、コントロールとコンポーネントの違いすら理解していなかったorz
420:デフォルトの名無しさん
08/04/01 16:34:24
DataTable.PrimaryKeyを設定したものをWriteXmlした時にファイルの内容を見てみると
プライマリーキーらしい情報が見つからないのですがこれは先頭にあるカラムが自動的に
プライマリーとして扱われるという認識で合っていますか?
421:デフォルトの名無しさん
08/04/01 16:58:56
合ってない。
プライマリキーの情報を書き込みたいなら XmlWriteMode.WriteSchema が必要。
422:デフォルトの名無しさん
08/04/01 17:01:03
クラスなんかC++同士でも怪しいだろ
423:デフォルトの名無しさん
08/04/01 19:28:25
>>406
同感、なんだかんだいってもMS頑張ってるよ、もっともっと頑張って欲しいが
WPFにしてもLINQにしても、めちゃめちゃ使えるのに、リバースエンジェニアリング的なことまでやらないと理解できないのはあまりに寂しい。
>>393
マネージドコードが使えるシェル拡張が強く欲しいよな
しかし、現状では素直にComで作っとけ。
424:デフォルトの名無しさん
08/04/01 20:53:24
listboxでアイテム削除を繰り返しているとインデックスがずれるらしいのですが、どうすれば良いですか?
たぶんこんな感じにずれてます。
index 値
1 AAA
2 BBB
3 CCC
2番を消すと
1 AAA
2 CCC
425:デフォルトの名無しさん
08/04/01 21:25:35
どうと言われてもそういうものだから仕方がない。
何をしたいのか具体的に書いてくれないと、書きようがない。
ヒントとしてはItemsに設定できるのはObjectで、
SelectedItem系でそのObjectが取得できるってこと。
426:デフォルトの名無しさん
08/04/01 21:56:48
わかりました。
ありがとうございました。
427:デフォルトの名無しさん
08/04/01 22:16:12
やっぱり分かりませんでした。
自己定義のクラスのオブジェクトを渡すと、クラス名が表示されてしまいます。
表示名を設定する方法を教えて下さい。
428:デフォルトの名無しさん
08/04/01 22:18:18
自己解決しました。
429:デフォルトの名無しさん
08/04/01 22:31:13
菅直人「1+1は、いったい何なんですか?」
小泉 「2です」
菅直人「ですから、1+1なんですよ。質問に答えてください」
小泉 「2ですね」
菅直人「全く質問に答えていない。国民が聞きたいのは1+1なんですよ!」
小泉 「どうあっても2です」
菅直人「全く説明になっていません」
小泉 「誰が何と言おうと2です」
菅直人「うまく逃げましたね。あなたはいつもそうだ」
小泉 「……?」
菅直人「あまり国民をなめないで頂きたい!」
小泉 「ですからねぇ・・・原則として、1+1は2、
これは揺らがない、私はずっとそうお答えしています」
菅直人「いいでしょう、最後に私は、小泉総理は1+1について
国民をあざむいたと、そう申し上げて答弁を終了します」
430:デフォルトの名無しさん
08/04/01 22:35:43
コピペ君って馬鹿だな、まで読んだ。
431:デフォルトの名無しさん
08/04/01 22:53:45
updateで古い物を上にしてソートしたいのですがキャストに失敗してしまいます。
order.Field<DateTime>("update")でフィールドとDateTimeとしてソートしてくれる
のではないのでしょうか?。updateにはDateTime.Now.toString();が入っています。
EnumerableRowCollection<DataRow> query = from order in table.AsEnumerable()
orderby order.Field<DateTime>("update")
select order;
>>421
ありがとうございます。
432:デフォルトの名無しさん
08/04/01 23:23:16
列updateはstring型じゃないのか?
だとすれば、こうだろ
order.Field<string>("update")
433:431
08/04/01 23:32:17
日付としてソートしたかったのですがDateTime.Nowの形ではだめなんですね
カラムの設定を指定したらいけそうです。
434:デフォルトの名無しさん
08/04/02 03:07:56
最近C#の入門書を購入したのですが、やはり内容を丸暗記したほうがいいのでしょうか?(猫でもわかるC#プログラミングという本で400ページくらいのものです)
グーグルで検索してみると、暗記しろと書いてあるところもあれば
必要最低限のところだけ覚えればいいと書いてあるところもあり
どうしたものかと右往左往しています
もし仮にこの本を丸暗記したとして次のステップアップはどのようにすればいいのでしょうか?
435:デフォルトの名無しさん
08/04/02 03:42:13
猫プログラミングに載ってるぐらいの初歩的な内容は覚えておいて損はない
とは言えると思うけど、余程暇で無い限り丸暗記する必要はない。
(こんな機能があるってだけ覚えておけば、必要な時に思い出したり調べることが出来る)
次のステップは・・何を作りたいかによって全然違うから何とも言えない。
436:434
08/04/02 04:28:06
>>435
ありがとうございます
本に書いてあることさらっと全部やってみて、大事そうなところをあとから復習してみようと思います
437:デフォルトの名無しさん
08/04/02 10:47:50
よく使うものはその気がなくても気が付いたら覚えている。
けど大事なところは思い出せないんだけどね。
438:デフォルトの名無しさん
08/04/02 11:22:19
MessageBoxのボタンを英語で表示する方法って無いでしょうか
キャンセル→Cancel
みたいな
FormのLanguageを英語にしてみたけど日本語のままだったorz
439:デフォルトの名無しさん
08/04/02 11:29:16
>>438
CurrentUICultureを英語にしてみるとか。
440:デフォルトの名無しさん
08/04/02 11:37:46
リンクではないブラウザに表示されている画像をD&Dする方法はあるのでしょうか?
DragEnterを書き換えないと無理だとハードルが高すぎるのですが・・・
441:デフォルトの名無しさん
08/04/02 12:15:48
>>440
ファイルパスが含まれてるならキャッシュから持ってこれるかもしれない。
DeviceIndependentBitmapとか持ってたらそれから作れるな。面倒だけど。
DragEnterの書きかえって何?
442:デフォルトの名無しさん
08/04/02 12:31:43
>>436
っていうか今時のプログラミング関係の本の読み方は基本は「乱読」だと思うよ。
一冊の本を熟読なんていう受験勉強スタイルは時間のムダだと思う。
これ一冊読んでおけばOK、なんて網羅的は本はないし、
書くほうも恐らく精読されることを想定して書いてない。
あと個人的意見として、「猫でも~」の著者の本はウンコだと思う。
443:デフォルトの名無しさん
08/04/02 12:33:43
>>441
それがブラウザ上の画像からD&DをしようとするとDragEnterイベントが起きないのです。
こういう場合はDragEnterをオーバーライド?とかしないといけないのでしょう?。
444:デフォルトの名無しさん
08/04/02 12:45:08
>>443
ドラッグできないものならドロップ先でなにしようがD&Dできない。
ドラッグできるものならドラッグ元が制限かけない限りDragEnterは発生する。
何をドラッグさせるかはドラッグ元次第。
まずドラッグできてるのかってところから確認。
445:デフォルトの名無しさん
08/04/02 14:40:19
ていうかブラウザから画像D&D出来るよ
446:デフォルトの名無しさん
08/04/02 15:16:00
HttpWebRequestでHTMLを取得・解析するプログラムを作っているのですが、
あるサーバーのHTTPヘッダーが
本来CRLFでなければならない部分がLFLFになっているらしく、
アクセスすると「サーバーによってプロトコル違反が発生しました. Section=ResponseStatusLine」
というエラーが出て落ちてしまいます
これを回避するにはどうしたらいいでしょうか?
よろしくお願い致します。