トップページ⇒tech
1001コメント285KB

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

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

前スレ

ふらっとC#,C♯,C#(初心者用) Part25
http://pc11.2ch.net/test/read.cgi/tech/1204104280/
0002デフォルトの名無しさん2008/03/23(日) 11:08:00
参考サイト。まずはここで検索してから。(次のスレ立てる人は追加していただけるとありがたいです)
http://google.com/
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/
0003デフォルトの名無しさん2008/03/23(日) 11:08:46
>>950を踏んだ人は新スレを立てて下さい。
>>950が無理な場合、話し合って新スレ立てる人を決めて下さい。


誰も建てないので立てました。
0004デフォルトの名無しさん2008/03/23(日) 11:09:40
C#, C♯, C#相談室 Part45
http://pc11.2ch.net/test/read.cgi/tech/1200911737/

C♯, C#相談室 Part34
http://pc11.2ch.net/test/read.cgi/tech/1162467959/

【新GUI FW】WPF(XAML,AVALON,.NET3.0)【重い?】
http://pc11.2ch.net/test/read.cgi/tech/1162950198/

Windows Live プログラミング
http://pc11.2ch.net/test/read.cgi/tech/1188112572/

初心者のためのプログラミング言語ガイド Part7
http://pc11.2ch.net/test/read.cgi/tech/1200807067/
0005デフォルトの名無しさん2008/03/23(日) 11:13:44
このスレの住人なら知っていますね、あの糞開発ツールのことを

・自分のプログラムのバグなのかコンパイラのバグなのかわからない
・他の仕事に応用できない糞開発ツールの独自世界を必死に学習している
・テキストエディタで書いたほうが効率的なのに糞UIツールを懸命に使っている
・糞開発ツールを批判すると「性格が悪いから糞ツールを批判するんだ」と言われる

糞だけど、政治的な理由で無理やり使わされているんですよね。
もう、あんな厨の作った糞ツールを我慢して使うのはやめましょう。

・糞開発ツールを部下に押し付ける上司の命令は無視しましょう。
 上司は糞開発ツールが使われる実績を作ることであの会社のごきげんをとっているのです。
・糞開発ツールを使わせる上司の下では働けません、と上司の上司に直訴しましょう。
・あの糞開発ツール提供会社には「おたくの糞開発ツールは話にならない」と突き放しましょう。
 バグレポートなどしてはいけません。改善要求などもってのほかです。
 あの会社はあなたたちのことをテスター/モルモットとしか思っていません。
・あの会議で「糞開発ツールを使ったら生産性がxx%アップしました」
 なんて話が出たら力強く机を叩き、会議室を出ましょう。
 あの人たちは糞開発ツールをマンセーすることで立場を確保しているのです。

糞な開発ツールを糞だと言える、そんな当たり前の環境をみんなの力で取り戻しましょう。
0006デフォルトの名無しさん2008/03/23(日) 11:43:10
俺はあの開発ツール使ったら背が5cm伸びて
彼女もできました。宝くじにも当たってびっくり
今更ながらにあのツールのすごいパワーを感じてます
0007デフォルトの名無しさん2008/03/23(日) 11:57:18
>>5
eclipse にだって良い所は沢山あるんだぞ、そんなに悪く言うな
0008デフォルトの名無しさん2008/03/23(日) 11:57:29
俺は糞開発ツール使ったら欝病になって
離婚しました。会社も解雇されてびっくり
今更ながらに糞開発ツールのすごいネガティブパワーを感じてます
0009デフォルトの名無しさん2008/03/23(日) 12:05:24
なんだこの流れw
0010デフォルトの名無しさん2008/03/23(日) 12:10:26
>>3 乙です
次のスレ建てから、それは 1 に書いておきませんか?

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

それと、スレの流れは速い訳では無いので 980 でもいいかと。
0011デフォルトの名無しさん2008/03/23(日) 13:40:11
C# 4.0の情報ってない?
0012デフォルトの名無しさん2008/03/23(日) 13:43:56
>>11
http://blogs.msdn.com/charlie/archive/tags/Future+Focus/default.aspx
0013デフォルトの名無しさん2008/03/23(日) 13:57:21
仕様追加じゃなくてVBみたいに仕様変更されるようになることはないよね?
0014デフォルトの名無しさん2008/03/23(日) 14:02:27
早く言語仕様をくれ
妄想してハァハァしたい
0015デフォルトの名無しさん2008/03/23(日) 14:03:37
消極的なDLRサポートじゃね
0016デフォルトの名無しさん2008/03/23(日) 14:06:20
ヘジがそんなつまらないことをするはずがない
0017デフォルトの名無しさん2008/03/23(日) 14:08:12
      \ │ /
       / ̄\
     ─( ゚ ∀ ゚ )─
       \_/
      / │ \
    ○○○   ○○○
   ○,,・ω・○  ○・ω・,,○
    ○○○   ○○○ o
 o〜(,_uuノ    とuu_,)ノ

     FREE TIBET
0018デフォルトの名無しさん2008/03/23(日) 14:22:14
>>13
アセンブリ単位ならバージョン混在可能だし、それを想定してコードを書きたいところ。
ヤバイ仕様は、拡張すれば当然出現するし、しかしそれを放置しないでサクサク修正して欲しいな。
どこかのタイミングでdelegateは廃棄してラムダ式で統一して欲しいとか、今でも思うし。
0019デフォルトの名無しさん2008/03/23(日) 14:26:36
Expression TreeはなかったことにしてDLRに統合してほしい
0020デフォルトの名無しさん2008/03/23(日) 14:38:54
互換を維持するあまりC++の様になったら悲惨だからな
0021デフォルトの名無しさん2008/03/23(日) 14:40:47
別に匿名メソッドはあっても害はないんじゃないのか
0022デフォルトの名無しさん2008/03/23(日) 14:46:58
というか後で無かったことにするためにあんな面倒な記述にしたとしか思えない
0023デフォルトの名無しさん2008/03/23(日) 14:47:58
同じ機能を持つ別のものが複数個あるのは、コードを書くときに混乱に繋がるから良くないと思うな。
既に憶えている人には良いが、新しくC#を憶える人がC#の歴史を勉強しないとならないという事態になってしまう。
それは良くない、気付けば使える人間はオッサンばっかりという事態に陥るから。
0024デフォルトの名無しさん2008/03/23(日) 14:53:39
>>22
ヘジたんの関数型に対する知識が微妙だっただけでは、匿名でないdelegateにしても
コンテナになっていて複数個のメソッドが登録できるとか
実用的な機能はコレだって言われれば至極なっとくできるが、美しくは無いような。
この理屈不要実用一点張りがC#のいいところだと思うんで。
0025デフォルトの名無しさん2008/03/23(日) 15:01:11
delegateがコンテナである必要なんかあるのかね
delegateがコンテナであっても別に問題ないというのはすごいことなような気はするが
0026デフォルトの名無しさん2008/03/23(日) 15:03:13
確かにマルチキャストはいらない気がするな
イベントの後ろにだけ別途コンテナ用意すればいい
0027デフォルトの名無しさん2008/03/23(日) 15:04:13
>>25
何回でもコード書きやがれ、使いやがれ、頭で考えるな!!
0028デフォルトの名無しさん2008/03/23(日) 15:07:50
イベントであっても2つ以上メソッドを登録したことは無いな
0029デフォルトの名無しさん2008/03/23(日) 15:12:31
自分でデリゲートを結合することなんて滅多にないし
イベントハンドラを登録・結合するコードはどうせコンパイラが自動生成するんだから
全くメリットを感じない
0030デフォルトの名無しさん2008/03/23(日) 15:16:04
タスクシステムを作る場合に楽じゃない?
効率はともかく。
0031デフォルトの名無しさん2008/03/23(日) 15:18:06
使い込みが足らないから理解が迷走するんだよ、例えばフォームのクローズイベントをキャッチしたいコントロールは一体何個あるよ?
0032デフォルトの名無しさん2008/03/23(日) 15:20:27
デリゲートとイベントをごっちゃにしてはいけない
コンテナを別にすればいいだけのこと
0033デフォルトの名無しさん2008/03/23(日) 15:21:45
>>32
そんな事はあとから考えればいいの、今必要なのは何か、これが一番大事。
0034デフォルトの名無しさん2008/03/23(日) 15:29:36
フォームのクローズイベントをキャッチするために
Closedにいくつも+=するなんてことはないだろう
一個のメソッドを書いて、その中に必要な処理を書いていくだろう
0035デフォルトの名無しさん2008/03/23(日) 15:32:56
イベントの呼び出し対象が複数指定できるのはいいけど,
その実装のためにデリゲート自体にコンテナを持たせる必要はない
コンパイラが生成するイベントの実装コードをちょっと変えればコンテナは分離できる
0036デフォルトの名無しさん2008/03/23(日) 15:33:14
>>34
登録されるコントロールが自ら登録するんだよ、アホ
0037デフォルトの名無しさん2008/03/23(日) 15:40:00
>>36
Framework内部のことであれば好きなように実装すればいいだろう
Formが子Controlの仮想OnClosedメソッドでも呼び出すのが自然だと思うがね
Controlは木構造でありAddしたときに親Formがあるかどうかはわからんのだし
0038デフォルトの名無しさん2008/03/23(日) 15:41:53
>>37
イベントとしてクローズを挙げたのは一例に過ぎないぞ
大体だ、何か有るたびにFormにコード書きまくらなければならない、そのコーディングの非効率をどう思うよ?
0039デフォルトの名無しさん2008/03/23(日) 15:45:18
>>38
Frameworkを使う立場の俺は、イベントにメソッドをIDEを使って登録し
Formにコードを書きまくっているが特に何の問題も感じない
ややこしくなれば登録したメソッドから別クラスのメソッドを呼び出すけども
0040デフォルトの名無しさん2008/03/23(日) 15:50:34
マルチキャストが必要だからってデリゲート自体がマルチキャストである必要はないんだよ
そもそもその辺を分離するための機能がイベントなのに
0041デフォルトの名無しさん2008/03/23(日) 16:09:14
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/030cmdargs/cmdargs.html
このページのコード(csargs1.cs)で引数を表示させるプログラムをビルドしてみたのですが、
引数に <"LD"> と入力すると「構文が間違っています」と表示されます。
そのまま引数に<"LD">を文字列として渡すためにはどうすれば良いでしょうか。
どなたか教えてください。よろしくお願いします。
0042デフォルトの名無しさん2008/03/23(日) 16:18:58
そんなことはコマンドプロンプトスレかなんかで聞いてくれ
0043デフォルトの名無しさん2008/03/23(日) 16:20:59
"<\"LD\">" と入力する、コマンドプロンプトの使い方であってC#の問題ではないです。
0044デフォルトの名無しさん2008/03/23(日) 16:25:43
>>42-43
速レスthxです
コマンドプロンプトの構文なんですね、すみませんでした。
>>41で上げた引数はエラーが起こる例で、あるアプリケーションから
このプログラムに引数を渡したいので、文字列は変更できないんです。
後出しになってしまってごめんなさいorz
0045デフォルトの名無しさん2008/03/23(日) 16:27:43
そのアプリケーションから渡す時はエラーにはならないだろう
004641=442008/03/23(日) 16:33:57
再ビルドして試行したら出来ましたorz
恥ずかしい><;
>>42-43,>>45さん
親切に教えて下さってありがとうございました!
0047デフォルトの名無しさん2008/03/23(日) 16:35:51
>>46 ここは、そのための初心者用
0048デフォルトの名無しさん2008/03/23(日) 16:38:58
>>37>>40
さすがにこのあたりの意見は暴論にしか聞こえないね。
経験が足りないか知識が足りないんだろうけど。
0049デフォルトの名無しさん2008/03/23(日) 16:43:07
自分がエキスパートだと信じて疑っていない自信満々の人なんだよ
「C#, C♯, C#相談室」にいってドヒンシュク買ってこいって思うよ。
0050デフォルトの名無しさん2008/03/23(日) 18:25:09
見てる人一緒だ
0051デフォルトの名無しさん2008/03/23(日) 19:24:06
一枚の写真から中国のうそを見破る
http://jp.youtube.com/watch?v=obbFja9-sVY&feature=related
0052デフォルトの名無しさん2008/03/23(日) 21:00:16
コピペ君って馬鹿だな、まで読んだ。
0053デフォルトの名無しさん2008/03/23(日) 21:38:39
まあとにかく、マルチキャストデリゲートはデリゲートをややこしくするな
0054デフォルトの名無しさん2008/03/23(日) 21:44:10
そうか?
0055デフォルトの名無しさん2008/03/23(日) 22:02:06
WPFのルーティングイベントなんかはマルチキャスト使わない実装になってるね
0056デフォルトの名無しさん2008/03/23(日) 22:48:17
救いようのないバカがいるな
0057デフォルトの名無しさん2008/03/23(日) 23:33:37
俺はデリゲートってマルチスレッド対応でしか使ってないわ
0058デフォルトの名無しさん2008/03/24(月) 01:51:22
例外について質問です。
プログラム自身以外が原因で発生する例外はいろんな種類があっていいと思うんですが
コードのバグに起因する例外って細分化する必要があるんでしょうか?
例えばパラメータが異常,switchで本来ありえないdefaultに到達してしまった,
foo()を呼ぶ前にbar()を呼んでしまった、といったバグにそれぞれ別の例外を割り当てて
catchしたりしなかったり、catchした時に処理の内容を変えるといったことはありえるんでしょうか。
それともバグと外的な要因で発生する例外の種類を分けること自体無意味ですか?

文法的な使い方は一応理解したつもりなんですが、
どこでどんな例外をthrowするべきかというのがいまいちよくわかりません。
0059デフォルトの名無しさん2008/03/24(月) 02:49:51
dataGridViewで
行選択したときに送られるイベントって何ですか?
0060デフォルトの名無しさん2008/03/24(月) 03:38:20
>>58
論理的に有り得ない状況(e.g. コーディングミス、仕様外の利用)を
検出するのが目的ならアサーション使え
cf. System.Diagnostics.Debugクラス
0061602008/03/24(月) 03:47:49
補足
仕様外の利用ってのはクラスなどの内部で閉じてる場合ね
外部に公開されるメンバなら例外投げる方が適切
0062デフォルトの名無しさん2008/03/24(月) 04:02:55
内部的にバグを検出するチェックをすべてDebug.Assertにしたとしてリリース後はどうしてる?
バグを見つけるためというよりも万一バグった後の処理を続行させない為という意味合いの何か良い例外ってあるのかな。
自分そこらへん結構いい加減だw
0063デフォルトの名無しさん2008/03/24(月) 04:31:11
      \ │ /
       / ̄\
     ─( ゚ ∀ ゚ )─
       \_/
      / │ \
    ○○○   ○○○
   ○,,・ω・○  ○・ω・,,○
    ○○○   ○○○ o
 o〜(,_uuノ    とuu_,)ノ

     FREE TIBET
0064デフォルトの名無しさん2008/03/24(月) 08:08:46
コピペ君って馬鹿だな、まで読んだ。
0065デフォルトの名無しさん2008/03/24(月) 10:49:33
とりあえずInvalidOperationExceptionが定番じゃね
0066デフォルトの名無しさん2008/03/24(月) 15:18:05
>>65
InvalidOperationExceptionは、不当な操作では?
その操作が出来る状態になっていないのに、操作した場合の例外。

>>59
誰もレスつけないので、自分も知らないのですが、こんなやり方をしています。
RowEnter で操作開始を検出して、各種プロパティーをみるという手を良く使っています。
SelectedCells を読めばいけるんじゃないかなと思のですが・・・今で試せる環境がないので試してません。
RowEnter タイミングが微妙なので、類似の別のイベントの方が良いかもしれません。
0067デフォルトの名無しさん2008/03/24(月) 15:20:31
>>66
それを不当な操作というんじゃないのか?
0068デフォルトの名無しさん2008/03/24(月) 15:22:13
>>67
内部的バグに対する例外ではないよと言ったつもりなのですが・・・
0069デフォルトの名無しさん2008/03/24(月) 15:53:14
まあ例外は適当でいいよというのがC#の思想なのだろうから
適当でいいんだと思うがな
catchされないような例外に何を投げようと関係ないんじゃないか?
0070デフォルトの名無しさん2008/03/24(月) 16:02:07
バカ
0071デフォルトの名無しさん2008/03/24(月) 16:08:33
DirectXだとInvalidOperationExceptionは本当に適当に飛んでくるよw
0072デフォルトの名無しさん2008/03/24(月) 16:18:35
使い方が間違っているなら飛んでくるのは当然じゃね?
0073デフォルトの名無しさん2008/03/24(月) 16:50:22
Nullable<bool>をifの条件に使うとき,if (value == true)とするのが適切?
この書き方好きじゃないんだけどboolにキャストしたりValueプロパティにアクセスすると
nullのときに例外が発生する
0074デフォルトの名無しさん2008/03/24(月) 16:51:34
Javaはガチガチすぎて
C#はむちちゅじょに過ぎる
0075デフォルトの名無しさん2008/03/24(月) 17:05:04
ガチムチ兄貴Java
0076デフォルトの名無しさん2008/03/24(月) 17:06:44
>>73
if (value.GetValueOrDefault(false))
とか
if( value ?? false)
で良いんじゃない?
0077デフォルトの名無しさん2008/03/24(月) 17:13:37
>>73
Nullable使っててキャスト時に例外がとんでくる?
使い方を根本的に間違ってねぇかそれ・・・。
0078デフォルトの名無しさん2008/03/24(月) 17:15:16
nullのときにキャストしたら例外飛ぶだろ…
0079デフォルトの名無しさん2008/03/24(月) 20:00:16
>>59>>66
SelectionChangedイベントでSelectedRowsを読む

>>62
一部または全部をTrace.Assertにすれば
0080デフォルトの名無しさん2008/03/24(月) 20:08:33
>>76
value??falseいいね
0081デフォルトの名無しさん2008/03/24(月) 21:43:58
固定長でテキストファイルを書き出したいのですが、どうすれば良いのでしょうか?
例えばシフトJISで最初の40バイト目までが項目A、41バイト目から項目Bというような感じです。
string.Format("{0,40}{1}",a,b)
として書き出しても、全角文字が混じるとその分だけずれてしまいます。

1文字ずつ全角か半角かチェックしながらカウントして、埋める空白の文字数を計算して出すしかないのでしょうか?
0082デフォルトの名無しさん2008/03/24(月) 21:49:08
Encoder
0083812008/03/24(月) 22:18:30
>>82
シフトJISのEncoderを使ってバイト数を調べて、空白は自分で補うということでしょうか。
もう少し調べてみます。ありがとうございました。
0084デフォルトの名無しさん2008/03/24(月) 22:22:39
固定長とかキモイ
0085デフォルトの名無しさん2008/03/25(火) 09:54:23
string a = "http://192.168.0.1/"001".txt";
webBrowser1.Navigate(new Uri(a));

data1 にはランダムな値が入る場合
http://192.168.0.3/"data1".txt
の用にしてdata1によって違うページを開かせたい場合はどのように記述すればいいのでしょうか?
0086デフォルトの名無しさん2008/03/25(火) 09:57:00
最後のところ入力ミスです><
×192.168.0.3
○192.168.0.1
0087デフォルトの名無しさん2008/03/25(火) 10:14:47
多分 String.Format の出番
0088デフォルトの名無しさん2008/03/25(火) 10:22:14
string a = "http://192.168.0.1/" + data1 + ".txt";
webBrowser1.Navigate(new Uri(a));

でいいんじゃないの?
0089デフォルトの名無しさん2008/03/25(火) 10:28:33
>>87-88
有り難う御座います。>>88の方法で出来ました。
0090デフォルトの名無しさん2008/03/25(火) 10:31:10
あ、001みたいに0を入れたいわけか
string a = ("http://192.168.0.1/{0,D3}.txt",data1);
0091デフォルトの名無しさん2008/03/25(火) 11:58:07
>string a = "http://192.168.0.1/" + data1 + ".txt";
フォーマットプロバイダ通さないやり方がちょっとキモイな
0092デフォルトの名無しさん2008/03/25(火) 11:59:28
C#も便利表記が増えすぎてスクリプト言語並にわけがわからなくなりつつあるな
0093デフォルトの名無しさん2008/03/25(火) 12:03:15
5年後VBに統合されVB#になります ^^)
0094デフォルトの名無しさん2008/03/25(火) 12:09:37
その前にまずWebインストールさせろ!
1Gなんてダウンロードしたくない
0095デフォルトの名無しさん2008/03/25(火) 12:10:48
>5年後VBに統合されVB#になります ^^)
VBのコードも多いから、混合して書ける機能があると大助かりというのが実あったりするけどな
class X
{
 void F()
 {
  #lang VB
  ・・・・
  #endlang

 }
}
#lang VB
・・・・
#endlang
こんな感じで、要望してみるかな。
0096デフォルトの名無しさん2008/03/25(火) 12:25:14
>>90
こんな表記あんの?
0097デフォルトの名無しさん2008/03/25(火) 12:29:42
形式指定だっけ?Cで言うprintfみたいなやつ
0098デフォルトの名無しさん2008/03/25(火) 12:30:16
俺の環境じゃコンパイル通らんぞ
0099デフォルトの名無しさん2008/03/25(火) 12:30:26
VBみたいな構文には違和感しか感じないんだよな。
別に個人でやってるだけだからどうでもいいんだが、統合されたら他の言語に移るしかないな
0100デフォルトの名無しさん2008/03/25(火) 12:32:32
うん。VBはまだ慣れない。あの構文はきもすぐる
0101デフォルトの名無しさん2008/03/25(火) 12:33:02
>>96
無いよ
string.Formatを忘れてるだけだろ
0102デフォルトの名無しさん2008/03/25(火) 12:33:22
string a = string.Format( "http://192.168.0.1/{0:D3}.txt" , 12 );
だな、その場で書いたなw
0103デフォルトの名無しさん2008/03/25(火) 12:36:03
>>99-100
さようなら、VB統合と言わず、今すぐそのままJavaへなり移行されてくださいw
0104デフォルトの名無しさん2008/03/25(火) 12:36:39
VB厨が暗躍しているな
0105デフォルトの名無しさん2008/03/25(火) 12:42:59
VB チューハイ
C# 水割り
C++ ロック
C ストレート
0106デフォルトの名無しさん2008/03/25(火) 12:43:27
構文は慣れればVBの方が読みやすいと俺は思うけどね。
まあ改行=行の終わり、とか細かい点で気持ち悪い点は確かにいくつかあるけど。
0107デフォルトの名無しさん2008/03/25(火) 12:44:16
変数名の後に型名を書く方が自然な気がする
VBの方が好きな点はそれだけ
0108デフォルトの名無しさん2008/03/25(火) 12:46:13
もともとnewするときに型名を2回書くなんて不合理以外の何者でもなかったからな
varが出来て状況はだいぶ改善したけど
0109デフォルトの名無しさん2008/03/25(火) 12:47:30
今0から作り直すとしたら
var a as string = "a"とか
var a : string = "a"みたいになりそうだな
0110デフォルトの名無しさん2008/03/25(火) 12:47:35
>>107 どうぞ、C# 3.0です。
var hinsuumei = new Katamei();
0111デフォルトの名無しさん2008/03/25(火) 12:48:10
C# 4.0からは変数名から型名を推論する機能がつきます
var font = new;
0112デフォルトの名無しさん2008/03/25(火) 13:06:44
>>111
ちょっと欲しい気はするな、それだと型の推論のしようがないが
var = [email protected] new ;
使うときは
[email protected] or [email protected] or instance1@Font or instance1
衝突がなければ通るとか、オブジェクト指向になって以来ハンガリアン記法が役立たずになっているが
これなら型名が増えても困る事はないし、分りきっている場所で不必要に型名を書いてかえって読みずらい事にもならないような……気がする。
0113デフォルトの名無しさん2008/03/25(火) 13:11:28
使い方で推論すればおk
コンパイルエラーとする下限の確率をコンパイラのパラメータで指定する
0114デフォルトの名無しさん2008/03/25(火) 13:13:48
キチガイこえー
0115デフォルトの名無しさん2008/03/25(火) 13:21:04
C#でシェル拡張書いてみたいんだけど参考になる記事とか無い?
0116デフォルトの名無しさん2008/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>();
 ・・・・
}

こういうリストのリストを使うんですが、これを単なるリストに展開するにはどうしたらいいのでしょうか?
0117デフォルトの名無しさん2008/03/25(火) 13:33:06
list2.SelectMany(hoo=>hoo.list).ToList()
2.0なら2重のループで新しく作ったリストに自分で追加していく
0118デフォルトの名無しさん2008/03/25(火) 13:37:14
>>115
高度な話題になるから、ソレらしい所に行くべし
きわどい問題も累積している。
0119デフォルトの名無しさん2008/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("数字が重複していますカエレ");
0120デフォルトの名無しさん2008/03/25(火) 18:43:14
C#ってboolを数値で扱えないんだ・・・
0121デフォルトの名無しさん2008/03/25(火) 19:06:46
>>119
自分が入力した値でどこを通るか辿っていったらわかるだろ
とりあえず整形しなさい
0122デフォルトの名無しさん2008/03/25(火) 19:11:45
>>119
当たり前じゃん。bが一番大きかったらc>bを満たすはずがない
0123デフォルトの名無しさん2008/03/25(火) 19:14:13
>>119
if文をちゃんと理解してる?
0124デフォルトの名無しさん2008/03/25(火) 19:26:09
それより START: が気になる
goto START; とかやるつもりなんだろうか
0125デフォルトの名無しさん2008/03/25(火) 20:19:25
>>120 C#でなくてもboolと宣言しておいて数値の意味でぶち込むとかヤメロ馬鹿
>>119 そのコード、コンパイル通らない。
0126デフォルトの名無しさん2008/03/25(火) 20:21:04
.tonumeric()でも定義してろ
0127デフォルトの名無しさん2008/03/25(火) 20:34:17
List<int>に突っ込んで.Sort()で済むだろ。
0128デフォルトの名無しさん2008/03/25(火) 20:34:38
指定した位置(ウィンドウ外の場合も)にコンテキストメニューを表示したいのですがどうすればいいのでしょうか?
0129デフォルトの名無しさん2008/03/25(火) 20:39:35
Showのオーバーロードを調べる作業に戻るんだ
0130デフォルトの名無しさん2008/03/25(火) 20:49:08
どうもありがとうございます。
http://www.labasp.net/CsharpNote/mControl/ContextMenuStrip/101_110.html#104
で見つけました。
もうひとつ質問があるのですが、これはウィンドウ外でも表示出来るのでしょうか?
0131デフォルトの名無しさん2008/03/25(火) 20:57:30
聞く前に試せ。な。
0132デフォルトの名無しさん2008/03/25(火) 20:59:40
すいません。今はその環境が無いもので...
0133デフォルトの名無しさん2008/03/25(火) 21:29:42
知るか
0134デフォルトの名無しさん2008/03/25(火) 21:31:59
環境がないなら今聞く必要もないな?
0135デフォルトの名無しさん2008/03/25(火) 21:34:27
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.toolstripdropdown.show(VS.80).aspx
ここに書いてありました。どうもすみませんでした。
0136デフォルトの名無しさん2008/03/25(火) 21:37:40
>>127
彼は別にソートしたいんじゃなくて、勉強したいんだろ

>>119
意図したとおりにならなかったら
デバッガで1ステップずつ実行して違う場所を探せばいい
その時点の変数の値も確認できる
0137デフォルトの名無しさん2008/03/25(火) 21:58:32
ちょっと質問です。。。
PixtureBoxに点(1ドット)を打ちたいのですが、方法が分かりません。
ご教授いただけると幸いです。
01381372008/03/25(火) 22:02:41
すみません説明がおかしかったです。
PictureBoxで描写しているBitmapにです。
Graphicsに落として、線を引いたりはできるのですが、指定した一点にだけ描写する方法が分かりませんm(_ _)m
0139デフォルトの名無しさん2008/03/25(火) 22:18:48
>>137
Bitmap.setpixel()
0140デフォルトの名無しさん2008/03/25(火) 22:20:34
縦横1pxの四角形を描くって手もあるな
01411372008/03/25(火) 23:12:37
>>139-140
できました。ありがとうございます。
Bitmapにあったんですね(^^;
JavaのノリでいたのでGraphicsにあるものだと思い込んでました。。。

縦横1pxの四角形を描こうとすると、縦横2pxの四角形になってしまいました。。。orz
0142デフォルトの名無しさん2008/03/25(火) 23:54:29
Stack<Hoge> hoges;で
中身を取り出したときに確実に葬り去るにはどうすればいいの?
0143デフォルトの名無しさん2008/03/25(火) 23:55:40
なんか日本語でおkな質問が最近多いような。。
0144デフォルトの名無しさん2008/03/26(水) 00:17:41
メモリをゼロクリアすれば確実だろう。だがちょっと待って欲しい。ここではデータ取り出しをしている。
それらを考えると放射線でメモリをROMとして焼き付けるのが一番ではないだろうか?
0145デフォルトの名無しさん2008/03/26(水) 00:30:46
hoges.pop().Dispose();
0146デフォルトの名無しさん2008/03/26(水) 02:07:20
>>142
>葬り去る
この意味を書け、何をしたいのかハッキリさせろ、話はそれからだ。
0147デフォルトの名無しさん2008/03/26(水) 03:13:02
staticクラスおよびそのクラスのstaticメソッドや
staticでないクラスのstaticメソッドはプログラム内
で全く使われてなくてもメモリ上に読み込まれる?
0148デフォルトの名無しさん2008/03/26(水) 08:51:02
>>146
ゆとりか
0149デフォルトの名無しさん2008/03/26(水) 09:06:39
>>148
146じゃないけど、142がどの程度C#とStackのことをわかってるのかがわからない以上、
俺も何をしたいのかわからない。
ひょっとするとhoges.Peek()にしか気づいておらず、スタックから消す方法を聞きたいのかもしれない。
hoges.Pop().Hoge()とかのように、そのまま使ってしまいDispose()を呼び出せないと思いこんでいるのかもしれない。
いろいろ考えられる。
0150デフォルトの名無しさん2008/03/26(水) 10:24:07
>>148
オブジェクトの破棄の意味と仮にエスパーしても何段階かあるぜ、どれなんだい?役立たずの爺さんよぉ。
0151デフォルトの名無しさん2008/03/26(水) 10:32:25
>>147
JITの勝手、作る側は意識しない。
今現在どうなっているのかというなら、アセンブリ単位で読み込まれているようだ。
用語の意味や詳細がわからないなら以下を読め、ただしプログラム初学者には難易度は高いぞ。
http://www.atmarkit.co.jp/fdotnet/technology/idnfw11_index/index.html
0152デフォルトの名無しさん2008/03/26(水) 10:45:34
>>147
メモリ上に読み込まれるのと、型として評価されるのと、
特定のメソッドがJITでコンパイルされるタイミングはどれも違う。
型として評価されるタイミングならスタティックイニシャライザに
WriteLineを仕込んでみると近似できると思うよ。
0153デフォルトの名無しさん2008/03/26(水) 11:41:00
C++でStack.Popが例外安全に作る方法が無いというのが
C#でどのように克服されてるかという話かもしれない
0154デフォルトの名無しさん2008/03/26(水) 11:54:34
克服もなにも例外が非安全になる言語はC++だけだ、そもそも例外の実装に失敗している
C++では、例外を使わないという事を検討すべきだな、故障中と書かれた蛇口をひねるような真似はすべきでない。
この話題は、もはやスレ違いだ 147 は死ねって事でFA。
0155デフォルトの名無しさん2008/03/26(水) 12:04:22
>>147
使われる前には読み込まれていなければならない
具体的なタイミングは実装依存だったと思う
0156デフォルトの名無しさん2008/03/26(水) 12:05:16
いやいやC#だって基本保証すらないメソッドを作れる。
作るほうが難しいけど。
C++はただなんでも値渡しでコピーするから
例外投げないメソッドが作りづらいだけじゃないか、それが致命的なんだけど。
01571552008/03/26(水) 12:07:03
メソッドのことだったのか
>>155は変数の中身のことだから忘れてくれ
01581192008/03/26(水) 13:10:19
20行目と22行目の下にgoto文入れたら解決しました。
ついでにもうひとつ質問ですがデバッガはどこを押せばできますか?
使ってるソフトはMicrosoft Visual C# 2008です。
おしえてください
0159デフォルトの名無しさん2008/03/26(水) 13:16:24
こんなコードにgoto文使うなよ
0160デフォルトの名無しさん2008/03/26(水) 13:18:56
switchと多重ループ抜けるとき以外はgoto使用禁止
デバッグは止めたいところにカーソル置いてF9を押してブレークポイントを追加してからF5
0161デフォルトの名無しさん2008/03/26(水) 13:19:54
このコードでごとぅって思考放棄じゃね?
0162デフォルトの名無しさん2008/03/26(水) 13:25:15
どこの初心者サイトや入門書でもgotoをはじめに教えるなんてありえないけど
goto使いまくるような言語から入った人なのかな
0163デフォルトの名無しさん2008/03/26(水) 13:28:14
gotoは大域gotoじゃなきゃ別に危険じゃないんだぞ
0164デフォルトの名無しさん2008/03/26(水) 13:31:44
昨今、危険かどうかというより可読性の問題が大きい。
0165デフォルトの名無しさん2008/03/26(水) 13:35:50
gotoはスパゲッティーコードの元。
0166デフォルトの名無しさん2008/03/26(水) 13:36:41
上向きのgotoはコンパイルエラーでもいいと思う
0167デフォルトの名無しさん2008/03/26(水) 13:36:49
>>158,119
考えられるケースを書き出してからコード書き始めると漏れがなくなる。

abc
123
132
213
231
312
321

あと重複チェックは先頭でやってしまったほうがいいな。
正しくない入力データはなるべく早く排除しておいたほうがいい。
というのを踏まえてgoto抜きで書き直してみ。
別に使っちゃいけないわけじゃないがこのケースで使う必要は0。

それからgotoネタは他所でやった方がレスの共通化が図れて効率的。
0168デフォルトの名無しさん2008/03/26(水) 13:37:12
goto使いまくる言語ってどんなだよ
スクリプト系か
0169デフォルトの名無しさん2008/03/26(水) 13:37:16
一つの関数を巨大にしない限り
gotoでスパゲッティになることもない
問題なのは巨大な関数の方でgotoじゃない
0170デフォルトの名無しさん2008/03/26(水) 13:42:31
>>168
HSPとかかなぁ。よく知らないけど。
0171デフォルトの名無しさん2008/03/26(水) 13:42:52
あーHSPはgoto使いまくるね
0172デフォルトの名無しさん2008/03/26(水) 13:43:39
gotoを使うべきところはあるが、どう見ても>>119は使うべきでない所だろ。
スパゲティとかいうレベルじゃなく場当たり的に回避してるだけだ
0173デフォルトの名無しさん2008/03/26(水) 13:45:43
複雑なifとか多重ループはわかりにくいから
避けられるなら避けるべきだ
0174デフォルトの名無しさん2008/03/26(水) 13:59:25
このスレには、チームで開発しててコードの書き方に異様にこだわる人がいる。
チームのメンバとか、他社へ納品するとか、他人が見る可能性がある場合は、
そういうことに気をつける必要はある。

だが、個人で書いてて誰にも見せないなら、どんな書き方をしようが個人の自由。
気にするな。

でもgotoは、COBOLとRPGでreturnとかcontinueとかbreakとかがなくて
仕方なく使ってたのが最後だな。
0175デフォルトの名無しさん2008/03/26(水) 14:08:13
ラベル付きbreakがあれば下向きgotoやめてもいいな。
0176デフォルトの名無しさん2008/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
}
0177デフォルトの名無しさん2008/03/26(水) 15:39:32
DateTime.Now.Hour
つかDateTime構造体をちゃんと調べれ
0178デフォルトの名無しさん2008/03/26(水) 15:41:31
>>174
どうみても>>119は初心者なんだから個人の自由とかの議論の前にみんなが指摘してやってるだけだと思うよ。
0179デフォルトの名無しさん2008/03/26(水) 15:51:03
C#でgetchar();に相当する物ってなんでしょうか?
C言語で入力を待って実行するのに便利だったのですが。
0180デフォルトの名無しさん2008/03/26(水) 15:51:48
>>177
ありがとうございます。
0181デフォルトの名無しさん2008/03/26(水) 15:53:35
Console.Read()
0182デフォルトの名無しさん2008/03/26(水) 15:54:34
>>179
http://msdn.microsoft.com/library/ja/vclib/html/vclrfrun-timeroutinesnetframeworkequivalents.asp
0183デフォルトの名無しさん2008/03/26(水) 15:58:27
>>181-182
thx
0184デフォルトの名無しさん2008/03/26(水) 17:08:51
Enum型のみを指定できるジェネリッククラスを作ろうと思ったのですが、whereでEnumを指定できないため、
Where T : Typeとしました。
このとき、TがEnumから派生したものでない場合、例外を投げるにはどの例外を投げたらいいでしょうか?
ArgumentExceptionにメッセージでEnumを継承してないからだめって書いて投げてもいいのでしょうか?
0185デフォルトの名無しさん2008/03/26(水) 17:13:50
where T : structだろ
例外はなんでもいいんじゃね
どうせ実行時には発生しちゃいけないはずなんだから
01861842008/03/26(水) 17:14:26
すいません、where T : Typeは余計でしたので、無視してください orz
whereは指定していませんが、上記の場合、どの例外を投げるのが適切なのでしょうか?
0187デフォルトの名無しさん2008/03/26(水) 17:42:29
みんなが作った
Windows コントロール ライブラリ
見れるところってありますか?
0188デフォルトの名無しさん2008/03/26(水) 17:49:20
>>186
where T : structにしといたほうがいい
TEnumのほうがいいかも
ArgumentExceptionはメソッドの引数の例外だからExceptionかその直接の派生クラス作って投げたら

>>187
codeplexとかcodeprojectとか
0189デフォルトの名無しさん2008/03/26(水) 18:04:48
>>185
コンパイルエラーにできないということはそういう使い方をするなということなんでしょうかね…

>>188
TypeLoadExceptionというものを見つけたんですが、これはまた別物なんでしょうか?

それと、お二方のご指摘通り、where T : structを指定しました。
ありがとうございます。
0190デフォルトの名無しさん2008/03/26(水) 20:05:00
private List<string> GetList()
{
List<string> list = new List<string>();
return list;
}


List<string> list = GetList();にするとnullが返って来てエラーとなります。
こういうものなのですかね?。
0191デフォルトの名無しさん2008/03/26(水) 20:16:07
>>190
ちょw
0192デフォルトの名無しさん2008/03/26(水) 20:17:07
>>190
それはおかしい
そのコードでnullが返ることは無い
0193デフォルトの名無しさん2008/03/26(水) 20:17:48
>>156
>例外投げないメソッドが作りづらいだけじゃないか
具体的に例外安全とならない例をひとつ挙げてみてもらえないか?
不可能だと思ったので、すこし興味深い。
0194デフォルトの名無しさん2008/03/26(水) 20:19:01
>>190
クリーン再インストールすると治るんじゃないかなw
0195デフォルトの名無しさん2008/03/26(水) 20:22:40
C#で作っているプログラム aaa.exe から
別のプログラム bbb.exe 上の
ボタンを自動で押したいのですが、どうやればいいのでしょうか?
0196デフォルトの名無しさん2008/03/26(水) 20:25:44
>>195
セキュリティー上の重大な問題を引起こす、その種の操作は一般にはできない。
無理すればできるが、かなり高度な話題、相互運用でググれ。
0197デフォルトの名無しさん2008/03/26(水) 20:31:34
>>195
bbb.exe側のソースをいじれるなら .NETリモート処理で対応する。
できないなら>>196のいうとおりAPIいじくるしかない。
01981902008/03/26(水) 20:40:43
やはりおかしいですよね・・・。私も不思議だったので投げてみました。
家族の夕食を作って食べてから出直してきます。

みなさん、ありがとう。
0199デフォルトの名無しさん2008/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でなくても問題ないみたいですが…。
0200デフォルトの名無しさん2008/03/26(水) 20:58:39
>>196>>197
bbb.exeはいじれないです。
APIでいじる方法のキーワードとなりそうなググり方でも教えていただけると嬉しいです
0201デフォルトの名無しさん2008/03/26(水) 21:02:33
>>199
フォームアプリケーションでは、
ウィザードが生成するコードの中でインスタンスを作っている。
コンソールアプリケーションでは、自分でインスタンスを作らないといけない。
static void Main(string[] args)
{
Program p = new Program;
Console.WriteLine(p.f());
}
0202デフォルトの名無しさん2008/03/26(水) 21:08:47
>>201
ありがとうございました!
Mainのあるクラスですらインスタンスを作らなくちゃいけないんですね。
たしかにstaticなのはMainだけだからそうなんだろうけど自分自身を作るみたいで変な感じ^^;
0203デフォルトの名無しさん2008/03/26(水) 21:16:13
そういえばVS2003以前はフォームのクラスの中にMainがあったよな
当時は何の疑問も感じずに使ってたけどProgram.csに慣れると
コンポーネントの中にエントリポイントがあるっておかしいだろ普通に考えて
0204デフォルトの名無しさん2008/03/26(水) 21:20:44
>>200
http://www.microsoft.com/japan/msdn/net/bda/cominterop.aspx
APIの使い方が分らないというならキッパリ諦めた方がいい。
0205デフォルトの名無しさん2008/03/26(水) 21:44:19
>>200
FindWindow系で対象のボタンのウインドウハンドルを探して
クリックしたメッセージを送るか、マウス操作をエミュレート
0206デフォルトの名無しさん2008/03/26(水) 22:06:39
>>204>>205
対称となるウィンドウ(ボタン)は固定なので、SendMessageくらいで出来ると嬉しいです。
Spy++のように座標が取得できればマウス動かしてやろうかな
などと考えております
0207デフォルトの名無しさん2008/03/26(水) 22:21:50
>>206
ならDllImportAttributeあたりを調べてみるといい
0208デフォルトの名無しさん2008/03/26(水) 22:33:49
>>206
対象のウィンドウのウィンドウハンドル取得後、
GetWindowRectで対象ウィンドウの現在位置を取得して、
対象ウィンドウの左上座標からの相対位置から、スクリーン座標を求めた後に、
WindowFromPointでボタンのウィンドウハンドルを取得し、
SendMessageでキーのアップダウンメッセージなりマウスのアップダウン(クリック)メッセージなりを
送ればいいとおもわれ
0209デフォルトの名無しさん2008/03/26(水) 22:37:07
BOTでも作るの?
0210デフォルトの名無しさん2008/03/26(水) 22:38:14
BOTなんてやるならクライアントをエミュレートした方が早いだろ。
0211デフォルトの名無しさん2008/03/26(水) 22:44:30
つか、このレベルの事をやりたいのなら、ここじゃなくてふさわしいスレッドへ行けよ
さらに言うなら、この程度自力でなんとかしやがれ。
0212デフォルトの名無しさん2008/03/27(木) 00:08:19
C#というのは、名前とは違い、CとC++のどちらにも互換性が無いのだろう。
ANSIの標準ライブラリは、何一つC#では使えないんだろうな。
それなら、VB.NETのほうが良いのでは。
VBを知らない人のための言語のように思えるが。
0213デフォルトの名無しさん2008/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; }
}
のほうがシンメトリックだし。
0214デフォルトの名無しさん2008/03/27(木) 00:33:21
>>213
ヘジたんの御心のままです
0215デフォルトの名無しさん2008/03/27(木) 00:39:46
わざわざ、public書く必要もないが、禁止するほどのことでもないな。
0216デフォルトの名無しさん2008/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でメールを書く場合には何かルールがあるのでしょうか?
0217デフォルトの名無しさん2008/03/27(木) 02:52:38
初めてプログラムを学ぶ者です。
C#を使えるようにしたいのですが、
どのように勉強するのが効率的なのでしょうか?

一応、15日ほど前にC#の絵本というのを買って
Micro Soft Visual Studio C# 2005 Express Edition
というツールを使いながら読み進めているのですが、
サンプルプログラムに省略されている部分が多くてよくわからないのです。
0218デフォルトの名無しさん2008/03/27(木) 08:47:31
TreeNode[] tn = treeView.Nodes.Find(key, true);

これってつまり重複したキーが使えるという事なのでしょうか?
今まで気づかなかったorz
0219デフォルトの名無しさん2008/03/27(木) 09:05:21
テトリスを作ってみたいのですが少し調べてみたらXNAとDirectXと2つあるようです。
どちらで作ればよいのでしょうか?
0220デフォルトの名無しさん2008/03/27(木) 09:27:17
XNA・・・xbox360でも動く、資料少ない。将来性あるのか謎。
      PCだと、XNAランタイムみたいなの入れてないと動かないPO
DirectX・・・資料多い。ややめんどくさいかも。PCだけだとこっちの方が動く環境多い
0221デフォルトの名無しさん2008/03/27(木) 09:28:00
テトリスレベルならGDIでいいんじゃね
0222デフォルトの名無しさん2008/03/27(木) 09:29:56
C#でDirectXつかう利点あるの?
C++つかったほうが
0223デフォルトの名無しさん2008/03/27(木) 09:36:15
とりあえず何か作ってみたいのです。
0224デフォルトの名無しさん2008/03/27(木) 09:45:54
>>223
じゃあどっちでも良いじゃん
0225デフォルトの名無しさん2008/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に触ってみようとしてるやつが思った、
間違ってるとこがあるかもしれない戯れ言
0226デフォルトの名無しさん2008/03/27(木) 10:07:06
これ嫁
http://www.amazon.co.jp/%E3%82%B2%E3%83%BC%E3%83%A0%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-Game-Developer-%E8%B5%A4%E5%9D%82-%E7%8E%B2%E9%9F%B3/dp/4797334800
0227デフォルトの名無しさん2008/03/27(木) 10:40:13
最終的にはGDI関係をDirectXの上に乗ったライブラリとして実装しようという流れは変わらないみたいだし
そうすると、セキュリティーの関係上DirectXがマネージドでないと都合が悪いので
どういう形になるにせよ、DirectXがマネージドになるのは時間の問題かと。
現在のDirectXがマネージドDirectXラッパーになるのでは。
0228デフォルトの名無しさん2008/03/27(木) 11:10:35
C#の資格試験はどういうものがありますか
0229デフォルトの名無しさん2008/03/27(木) 11:46:06
ToolStripMenuItemの1つ上にあるToolStripMenuItemはどうやったら調べられますか?
02302292008/03/27(木) 11:49:17
OwnerItemでした
0231デフォルトの名無しさん2008/03/27(木) 13:37:42
>>228
MCTS,MCPD
0232デフォルトの名無しさん2008/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");
}
}
}
0233デフォルトの名無しさん2008/03/27(木) 14:15:17
> for (int a = 1; a == 9; ++a)
a == 9 が true の間だけループを回す、って意味だが。
0234デフォルトの名無しさん2008/03/27(木) 14:16:48
>>225
DInputゲームパッドから入力とるだけならC#+Marshalingで直さわりしても
正直一日仕事レベルなのだが意外に知られてないっつーか

キーマップやら無理ない設計やら面倒くさいもの(しかしあまり使われない)が
ややこしいのは確かなんだが
0235デフォルトの名無しさん2008/03/27(木) 14:38:42
XNA使って箱で動かないものを書いてどうする
0236デフォルトの名無しさん2008/03/27(木) 14:42:08
SlimDXおすすめ
プライベート配置できるし
0237デフォルトの名無しさん2008/03/27(木) 14:42:11
>>227
そもそも、DirectX自体がWPFとXNAに二分されて
フェードアウトするんじゃないか?
DirectShowなんか、既にWindows SDKに移住したし。
0238デフォルトの名無しさん2008/03/27(木) 15:04:57
>>235
んなもん #if で終了だろ
0239デフォルトの名無しさん2008/03/27(木) 16:36:39
型の使い分けについて教えて下さい。
int やlongの場合、intを使わずに全てlongで良いような気がするのですが、なぜintが存在しているのでしょうか?
素人考えだと、intで良い物はむやみにlongにするより、処理が早くてすむ、メモリの節約になる。
などの理由があるのかなと予想しているのですが。
0240デフォルトの名無しさん2008/03/27(木) 16:43:01
>>239
>処理が早くてすむ、メモリの節約になる。

正解。
0241デフォルトの名無しさん2008/03/27(木) 16:44:58
そうだよ?
誰もA1ノートなんて買わないだろ?使わないんだから
0242デフォルトの名無しさん2008/03/27(木) 16:53:21
longよりintが先に存在したから
0243デフォルトの名無しさん2008/03/27(木) 17:09:39
>>240-242
ありがとうございます。すっきりしました。
0244デフォルトの名無しさん2008/03/27(木) 17:12:31
>>237
Direct3Dに関しては、WPFのブラシの一つとして実装されるのが一番綺麗だろうな。
逆にDirect3DのテクスチャとしてWPFがまた利用可能で、無限入れ子になってくれば汎用性も高そうな気がする。
消滅に関しては今更感があるので難しいかと。
0245デフォルトの名無しさん2008/03/27(木) 17:15:00
>>239
現状だとCPUが32ビットで、複数回に分けて計算されるので
long だと、マルチスレッドではいちいちlockしないといけないのが面倒くさいという実務上の都合もあるな。
0246デフォルトの名無しさん2008/03/27(木) 17:15:14
WPFのもっと低レベルな描画方法は欲しい
0247デフォルトの名無しさん2008/03/27(木) 18:39:55
>>245
thx 参考になります。
0248デフォルトの名無しさん2008/03/27(木) 19:12:38
tryの中で冷害が起きるとFにみちりりんの中は実行されるですか?
0249デフォルトの名無しさん2008/03/27(木) 19:15:42
それ面白いと思って書いてるのかな。
ちっとも面白くないが、君が「オカシイ」奴だということだけはよくわかるよ
0250デフォルトの名無しさん2008/03/27(木) 19:33:52
オーバーロードがないと叱られるのですが、どうしたら良いですか?

ToolStripItem.MouseUp += new EventHandler(fff);

private void fff(object sender, MouseEventArgs e)
{

}
0251デフォルトの名無しさん2008/03/27(木) 19:36:16
ToolStripItem.MouseUp += new MouseEventHandler(fff);
または
ToolStripItem.MouseUp += fff;
0252デフォルトの名無しさん2008/03/27(木) 19:41:18
>>251
ありがとうございます。

EventHandlerで全て処理するのかと思い込んでいました。
指摘されて電気が走りました・・・。
0253デフォルトの名無しさん2008/03/27(木) 21:05:38
foreachの中で要素を消すのは違法ですか?
0254デフォルトの名無しさん2008/03/27(木) 21:11:05
ダメ。ゼッタイ。
0255デフォルトの名無しさん2008/03/27(木) 21:13:35
消すのイクナイ。
0256デフォルトの名無しさん2008/03/27(木) 21:32:27
てかコンパイルエラー吐くだろ。設定で無視できるのか?
0257デフォルトの名無しさん2008/03/27(木) 23:07:13
SplitContainerでdockをfillにしてフォームのサイズを変更するとラインの位置が比率?で
変わりますがこれをどちらかだけ固定する方法はないのでしょうか?
02582572008/03/27(木) 23:08:40
ありました・・・
今度は30秒待ってから書きますorz
0259デフォルトの名無しさん2008/03/27(木) 23:36:55
フォームが非アクティブの時にもキー入力を取得したいのですがどうしたらいいんでしょうか?
0260デフォルトの名無しさん2008/03/27(木) 23:38:15
ほっく
0261デフォルトの名無しさん2008/03/28(金) 00:01:05
ttp://homepage3.nifty.com/midori_no_bike/CS/userIO.html
ここの「ホットキーを登録する」をコピペしたら動きました。
これから理解したいと思います。
0262デフォルトの名無しさん2008/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;
  }
0263つづき2008/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());
  }
}
0264デフォルトの名無しさん2008/03/28(金) 02:36:54
プラスとして、恐らく上のままでは一旦
Cons a = new Cons(10,"abc");
などとして作った後、
a.car="foo";
とするとエラーになると思うのですが、解決策はあるでしょうか?
0265デフォルトの名無しさん2008/03/28(金) 02:46:24
>>264
この2つを直せば動く。
1. ジェネリッククラス内にエントリポイントMainは置けない。
2. ジェネリッククラスを使うときには、Cons<int, string>のように
ジェネリックの引数を指定しないといけない。
0266デフォルトの名無しさん2008/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> が作られたりはする。
0267デフォルトの名無しさん2008/03/28(金) 03:05:29
すみません、少し質問の仕方が悪かったですね。

・任意のデータ型を内包できるリスト構造を作れるか
・そのリストの要素をまた別の任意の型へ変換できるものが作れるか

この2点が知りたいです。
そんなに柔軟な型にこだわるならスクリプト言語でもいじってろと思うかもしれませんが・・・
0268デフォルトの名無しさん2008/03/28(金) 03:07:09
>>266
なるほど、結構しんどくなってくるんですね・・・
0269デフォルトの名無しさん2008/03/28(金) 03:22:08
自己解決しました。普通にobject型使えば一発でした。
吊ってきます。
0270デフォルトの名無しさん2008/03/28(金) 06:42:43
>>268
横やりだけど、これって関数型言語のような事をしたいという意味に取れたのですが
もしそうだとしたら、プロパティーに set をつけること事態がよろしくないのでは?
と思ったりしたのですが・・・・
やるとすれば、たとえば string クラスや DateTime クラスのように
一回設定したら変更できないタイプのクラスに設計するのが美しいような予感がします。
0271デフォルトの名無しさん2008/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());
 }
}
0272デフォルトの名無しさん2008/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 ) ; }
コンパイルしていないのでまだあるかも知れない。
0273デフォルトの名無しさん2008/03/28(金) 08:27:11
public T Left { ... }
↓
public T Left { get { ... } }

pair.left
↓
pair.Left

あとはMainもおかしい
aはint
0274デフォルトの名無しさん2008/03/28(金) 09:06:50
>>269
ジェネリックスはもともと関数型言語由来だから相性は悪くないはず
object などと妥協せずとことんやりこんでみる事をお勧めする。
0275デフォルトの名無しさん2008/03/28(金) 10:39:38
lock(x)
{
}

を有効にするにはxオブジェクトを private static で修飾する、ということであってますか?
0276デフォルトの名無しさん2008/03/28(金) 11:00:31
static が付くとは限らないんじゃないか
readonly をつけることは結構あるかも
0277デフォルトの名無しさん2008/03/28(金) 12:31:07
>>275
日本語書け。

「有効にする」とはどういう意味?
あるいは、「有効にする」というからには「無効」という状態があるんだろうが
「lock(x)が無効」とは具体的にどんな事態のことを指してるの?
0278デフォルトの名無しさん2008/03/28(金) 13:06:03
>>275
MSDNでlockのところ読んどけ
0279デフォルトの名無しさん2008/03/28(金) 13:53:17
>>276
おぃ、なんちゅートンデモアドバイスを与えいるんだ?
0280デフォルトの名無しさん2008/03/28(金) 19:04:42
Test
0281デフォルトの名無しさん2008/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;
}

こういう書き方ってきもいかな?
0282デフォルトの名無しさん2008/03/28(金) 20:09:46
うん
0283デフォルトの名無しさん2008/03/28(金) 20:12:14
foreachで回す必要なし
0284デフォルトの名無しさん2008/03/28(金) 20:14:15
メソッド名がきもいです
0285デフォルトの名無しさん2008/03/28(金) 20:19:08
つーか、メソッドにする必要なくね?
0286デフォルトの名無しさん2008/03/28(金) 20:25:14
list_newsがList<string[]>なら、
list_news.Find(x => x[0] == url)
ですむんじゃまいか。
0287デフォルトの名無しさん2008/03/28(金) 20:29:21
List_まではいいけど、GetItemがものすごく嫌だな
たぶん.NetFrameworkの上でなければ全然気にならないんだろうけどwww
0288デフォルトの名無しさん2008/03/28(金) 20:36:40
TransparencyKeyで透過色を指定した後、
やっぱり透過をやめたい場合はどうすればいいんでしょうか??
02892812008/03/28(金) 21:11:32
みなさん、ありがとうございます
メソッド名がきもいのは許して・・・

>>286
こういう書き方ができるのですね
勉強になります
0290デフォルトの名無しさん2008/03/29(土) 13:05:15
基底クラス内で宣言したクラスや構造体に
派生クラスからメンバを追加する方法ってありますか?
0291デフォルトの名無しさん2008/03/29(土) 13:12:43
意味が分からん
具体的に何がしたい
0292デフォルトの名無しさん2008/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() { } }
}
こういうことか?
0293デフォルトの名無しさん2008/03/29(土) 14:13:59
たぶん例えばListViewItemを継承したクラスで、ListViewSubItemを継承したいとかそんなことだと予想。

最近何通りにも解釈できる短い日本語だけで、何も具体的に書かないのが多いな。
しかもそれに対して、こうでしたって書き込みがない。
釣りか?
0294デフォルトの名無しさん2008/03/29(土) 14:26:27
釣りではないでしょ。
むしろこういうタイプの「彼」は、「俺様の意図が理解できないなら黙ってろよこの煽り厨房が」
ぐらいのことをリアルで思ってように感じられる。
0295デフォルトの名無しさん2008/03/29(土) 14:28:16
お前ら偉そうだなっ!










これからも宜しくお願いしますm(_._)m

飛び入りです
0296デフォルトの名無しさん2008/03/29(土) 14:38:30
お前ら偉そうだなっ!










これからも宜しくお願いしますm(_._)m

通りすがりです
0297デフォルトの名無しさん2008/03/29(土) 14:55:22
若い人は特に言葉使いとか礼を述べる習慣がありませんからね
そういう教育をしてこなかった世代にも誤りがあります
0298デフォルトの名無しさん2008/03/29(土) 15:05:13
>>297
礼儀の問題か。
説明能力の問題だろう。
まあ君の場合は理解力の問題でもある。
0299デフォルトの名無しさん2008/03/29(土) 15:08:51
>>298
1から1000まで書かないと理解して貰えませんでしたか、とても残念です。
0300デフォルトの名無しさん2008/03/29(土) 15:18:21
どんな幸せ回路内蔵してんだろコイツ
0301デフォルトの名無しさん2008/03/29(土) 15:49:20
ただのバカですな、そのままの意味で理解するなら不可能とだけ答えて終わりにしておきませう。
きっと彼の想像するお望みの機能はあっさり実装できると思われますが。
0302デフォルトの名無しさん2008/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());
}
}
}
0303デフォルトの名無しさん2008/03/29(土) 16:12:04
c<=a  ←これがおかしい
0304デフォルトの名無しさん2008/03/29(土) 16:24:42
なんでエラーメッセージを読みすらしないんだろう?
0305デフォルトの名無しさん2008/03/29(土) 16:26:39
エラーメッセージよんでもわかりませんでした。
あと直す箇所はどうやってなおしたらいいかおしえてください
0306デフォルトの名無しさん2008/03/29(土) 16:28:39
>>305
では、ここに来る前に入門書を購入してしばらくやってください。
ちょっと迷惑にもほどがありますね。
0307デフォルトの名無しさん2008/03/29(土) 16:29:03
どう見てもs/a[c]/b[c]/だろ。
c=<aはおかしいがc<=aは正しい
aは配列じゃない云々言われたはずだが、どうして分からないとか言えるんだ?
0308デフォルトの名無しさん2008/03/29(土) 16:31:13
すいません、もっとよく勉強してから来ます
0309デフォルトの名無しさん2008/03/29(土) 16:32:32
DataSetを利用している人って多いい?
0310デフォルトの名無しさん2008/03/29(土) 16:34:54
趣味の人は使わないと思うよ、実務系のひとなら大抵使っているかと。
0311デフォルトの名無しさん2008/03/29(土) 17:18:12
TransparencyKeyで透過色を指定した後、
やっぱり透過をやめたい場合はどうすればいいんでしょうか??
0312デフォルトの名無しさん2008/03/29(土) 17:56:25
C#で作成したアプリケーションをスタートアップに登録しても起動しないんですが、何が悪いんでしょうか?
OS起動後に実行すれば問題なく実行できます。
環境は
OS:WindowsXPSP2
IDE:Visualstudio2005pro
.netframework2
です。
0313デフォルトの名無しさん2008/03/29(土) 18:05:51
>>312
当方まったく同じ環境ですが、問題なく起動しています。
別に原因があるんじゃないですかね?
0314デフォルトの名無しさん2008/03/29(土) 18:07:40
他ユーザの場所に登録したんじゃないの?
0315デフォルトの名無しさん2008/03/29(土) 18:12:23
>>311
Color.Empty でも指定すれば良いんじゃね
0316デフォルトの名無しさん2008/03/29(土) 18:33:44
>>310
今までデータ管理は自分でやっていたから気にしてなかったのですがさっき自分が使いやすいように
固めて扱ってみたらわりと便利そうな感じです。これから設定などはこれを利用してみようと思います。
0317デフォルトの名無しさん2008/03/29(土) 18:35:25
>>316
これからやるなら、せっかくだからLINQ攻めてみたらどうだい?
0318デフォルトの名無しさん2008/03/29(土) 18:42:43
スレチすいません。
Visual Studio 2005のヘルプのようなヘルプを作りたいのですがどうすればいいのでしょう?
0319デフォルトの名無しさん2008/03/29(土) 19:02:12
ウィンドウの最小サイズってどのくらいなんでしょう?
30*30に設定してもならないですし、
フォームにラベル貼ってAutoSizeで大きく表示したあと、そのラベルを30*30くらいまで下げると縦長のウィンドウになっちゃうし…。
0320デフォルトの名無しさん2008/03/29(土) 19:11:13
>>316
sqlとの付き合いも長いからある程度は使えると思うのですがまだ利用のイメージが
わかないのです。あると便利なのはわかるのですがそれを有効に使うには結局、
メモリ以上に大量のデーターベースをおいて置かないといけないって事ですよね?。
0321デフォルトの名無しさん2008/03/29(土) 19:25:40
>>319
SystemInformation.MinimizedWindowSize
SystemInformation.MinWindowTrackSize
この辺じゃね?
0322デフォルトの名無しさん2008/03/29(土) 20:01:01
>>320
そんな激しいもんじゃないよ、テーブルの定義がclassのフィールドもしくはプロパティーになって
その配列(シーケンスとよばれている)がテーブル
それに対してクエリを発行しましょうという物。
その テーブルの定義 == class に Sql やら XML やら、自作DBを関連付けて統一的に取り扱えるようにしましょうという物。
0323デフォルトの名無しさん2008/03/29(土) 20:01:18
>>321
てことは30*30とかには変更できないって事ですね。
でもラベルのAutoSizeに合わせるとバグるのはなんでなんだろ
0324デフォルトの名無しさん2008/03/29(土) 22:24:58
>>318
NDocは更新が止まっていた気がするので今だとSandcastle?
0325デフォルトの名無しさん2008/03/29(土) 22:38:15
>>318
どこかで見かけたなと思って、スタートメニューの中をのぞいていたら HTML Help Workshop というのがあって
ためしにチョコチョコっと作ったらできた。
初代VS,2002,2003,2005,2008のどれかについてきたものだと思う、調べてみるといいかも。
0326デフォルトの名無しさん2008/03/29(土) 22:52:17
Officeについていたりもするよ
0327デフォルトの名無しさん2008/03/29(土) 22:57:05
チェックボックスやラジオボタンの状態を保存するのってどうすればいいのでしょうか?
誰か、暇だったら教えて下さい><
0328デフォルトの名無しさん2008/03/29(土) 22:58:04
>>327
プロパティー読み出して適当な変数に保存しておればいいかと。
Checkedという名前だった・・・はず
0329デフォルトの名無しさん2008/03/29(土) 23:11:32
>>328
ありがとうございます。明日起きたらやってみますzzz
0330デフォルトの名無しさん2008/03/29(土) 23:12:05
Sandcastleだな。
0331デフォルトの名無しさん2008/03/29(土) 23:38:32
オブジェクトのプロパティの値を全てTextWriterに書き出す標準の方法ってある?
自分でリフレクション使ってやらないといけない?
0332デフォルトの名無しさん2008/03/29(土) 23:45:33
プロパティの値といわれると制限が強いがXmlSerializer
フィールドならIFormatterだが直接TextWriterは無理か
0333デフォルトの名無しさん2008/03/29(土) 23:47:46
>>331
シリアライザを使ったらいいと思うよ。
03343312008/03/29(土) 23:49:48
すみません デバッグ用に書き出したいだけなんです
イミディエイトウインドウなんかだと自動でやってくれるので,
もしかしたら標準的な方法が用意されてるのかなと
0335デフォルトの名無しさん2008/03/29(土) 23:54:09
>>334
ttp://www.codeplex.com/DotnetCommons/Wiki/View.aspx
commonsと比べると微妙だった気がするが・・・
0336デフォルトの名無しさん2008/03/29(土) 23:55:08
使ったことはないけど、デバッグ用のがあったな・・・
最近見かけておやっ、あとで調べとかなきゃとか思っていたんだが2008専用かもしれん。
今、手元にないので駄目だが、ツールボックスか、プロジェクトの追加の所を調べてみるといい、たしか有ったぞ。
0337デフォルトの名無しさん2008/03/30(日) 09:05:33
>>336
Visualizer(デバッガ ビジュアライザ)の事?
あれはTextWriterに書き出すのとは用途が違うからなぁ・・
0338デフォルトの名無しさん2008/03/30(日) 10:21:33
[]でアクセスするプロパティは作れますか?
0339デフォルトの名無しさん2008/03/30(日) 10:24:20
うん
0340デフォルトの名無しさん2008/03/30(日) 10:28:43
どうするの?
0341デフォルトの名無しさん2008/03/30(日) 10:38:09
インデクサでぐぐれ
0342デフォルトの名無しさん2008/03/30(日) 12:36:40
クラスのパブリックメンバ(プロパティ)で、
単に
public int Member1;
とするのと、get setを使用する
public int Member1()
{
get{return _member1;}
set{_member1 = value;}
}
とするのとは同じものと考えていいのでしょうか?
0343デフォルトの名無しさん2008/03/30(日) 12:37:46
いいえ。
前者はフィールドで後者はプロパティです。
0344デフォルトの名無しさん2008/03/30(日) 13:06:52
やることは一緒だろ
0345デフォルトの名無しさん2008/03/30(日) 13:21:59
>>344
本格的に使ってみればわかる、全くの別物。
0346デフォルトの名無しさん2008/03/30(日) 15:43:06
プロパティの方は、set時に値チェックをするもよし、内部状態を更新するもよし、get時に状況に応じて別のフィールドの値を返すもよし、例外を投げるもよし
0347デフォルトの名無しさん2008/03/30(日) 16:01:42
自分で作っている範囲なら、その程度の範囲かもしれないしが
例えば DataGridView とかプロパティーのみを表示するクラスとか色々あるだろ
デザイナ上でのユーザーコントロールもそうだし
そういった所まで使い始めるとどちらで設計するかが使い勝手の良さを決定的に変える。
0348デフォルトの名無しさん2008/03/30(日) 16:02:45
>>346
例外を投げるとは具体的にどのように?
0349デフォルトの名無しさん2008/03/30(日) 16:04:04
>>348
346では無いが、そのぐらいは自分で考えてみたらどうだい?
0350デフォルトの名無しさん2008/03/30(日) 16:10:36
Class1 c1 = new Class1();
c1.exceptionMessage = "";
if (c1.exceptionMessage != string.IsNullOrEmpty)
{
MessageBox.Show(c1.exceptionMessage);
c1.exceptionMessge = "";
}
0351デフォルトの名無しさん2008/03/30(日) 16:18:06
>>350
C++上のメタプログラミングみたいだな、けど・・・でき悪い、キモイよ
使用したいなら更なる改善を要求する
0352デフォルトの名無しさん2008/03/30(日) 17:35:21
NetworkStream.Flash()で強制送信だと思うのですがサーバー側はどうやって分けて受信したら
良いのでしょうか?
0353デフォルトの名無しさん2008/03/30(日) 17:47:39
分けて受信とかTCPにそんな機能無いから
0354デフォルトの名無しさん2008/03/30(日) 17:50:29
>>353
そうするとデータの最後に何らかの〆データを付加するしかないのですね
0355デフォルトの名無しさん2008/03/30(日) 17:58:46
>>346
getで例外投げるのはガイドライン違反
0356デフォルトの名無しさん2008/03/30(日) 18:06:21
Nullable<>.Valueとか普通に例外投げてくるけどね
0357デフォルトの名無しさん2008/03/30(日) 18:11:57
それはキャッチされることを想定してないから問題ないんじゃないの
javaでいうところのチェック済み例外みたいなのをgetが投げちゃダメって意味だと思う
0358デフォルトの名無しさん2008/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]);

みたいに使えるプロパティを作るにはどうすればいいですか?
上記以外のコレクションへの直接操作は出来ない感じで。
0359デフォルトの名無しさん2008/03/30(日) 18:53:15
>>358
>>341
0360デフォルトの名無しさん2008/03/30(日) 18:58:46
>>358
まずC#に ref classはないだろ

class Anime
[
private Dictionary<int,string> titles;

public Dictionary<int,string> Titles{ get{ return titles; } }
}

これで出来る
0361デフォルトの名無しさん2008/03/30(日) 18:59:01
>>358
public Dictionary<int, string> Titles { get{ return this.titles; } }
0362デフォルトの名無しさん2008/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); }
}
0363デフォルトの名無しさん2008/03/30(日) 19:05:50
それだと構文が異なるだろ。

C#は名前つきインデクサ作れないから、プロキシオブジェクトを返さないと無理だ
0364デフォルトの名無しさん2008/03/30(日) 19:08:21
iterindexコードスニペットを使えば幸せになれるかも
インデクサ自体の実装は>>362みたいな感じで
0365デフォルトの名無しさん2008/03/30(日) 19:11:05
そもそもそれ関数じゃだめなのか?
0366デフォルトの名無しさん2008/03/30(日) 19:50:51
DictionaryBaseでも継承したネストクラスを作って公開するのが普通だろ
0367デフォルトの名無しさん2008/03/30(日) 19:56:42
今更非ジェネリックは無いわ
0368デフォルトの名無しさん2008/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]} } }
}
}
0369デフォルトの名無しさん2008/03/30(日) 20:21:36
358 じゃないですが、プロキシオブジェクトと聞いて・・・
以前からある System.Collections.ArrayList.ReadOnly や System.Collections.ArrayList.Synchronized
に対応する
ジェネリックス版は無いのでしょうか?
見つからなくてとりあえず自作してしまっているので、あれば交換しておきたい所。
0370デフォルトの名無しさん2008/03/30(日) 20:22:31
>>365
そんな最低な仕様は嫌だろ、Linqも何も使えなくなっちまう。
0371デフォルトの名無しさん2008/03/30(日) 20:24:49
>>369
ないよ。なくなっちゃった。
0372デフォルトの名無しさん2008/03/30(日) 20:30:53
List<T>.AsReadOnlyはある
0373デフォルトの名無しさん2008/03/30(日) 20:38:24
>>372
ども、Asが付いたのか
なんとも実装が中途半端だな、問題が見つかったのだろうか?
0374デフォルトの名無しさん2008/03/30(日) 20:38:54
System.Collections.ObjectModel.ReadOnlyCollection<T>ってのもある。
Synchronizedは・・・まぁ手抜きサービスとしてはあまりに
お粗末すぎるから廃止されたんじゃねーの?
0375デフォルトの名無しさん2008/03/30(日) 20:41:39
>>358
敢えてタイトルの中身には突っ込まないでおこう。
0376デフォルトの名無しさん2008/03/30(日) 20:59:46
オンラインMSDNが最近重いからオフラインにインストールしてみたのですが・・・
キーワード検索で「socket」って入れるとSystem.Net.Sockets.SocketExceptionしか出てこない
こんなものでしょうか?、それとも使い方を間違えているのでしょうか?

TcpClient tcp = listener.AcceptTcpClient();
このtcpからリモートのIPを調べる方法を知りたいのです
0377デフォルトの名無しさん2008/03/30(日) 21:19:57
WindowsSDK入れたら表示できるようになったような気がする
0378デフォルトの名無しさん2008/03/30(日) 21:27:27
>>376
TCPは知らないけど、
どのMSDNライブラリを入れたのか?
フィルタが設定されていないか?

これ入れた?
ttp://www.microsoft.com/downloads/details.aspx?FamilyID=6ff3bc60-32c8-4c22-8591-a20bf8dff1a2&DisplayLang=ja
0379デフォルトの名無しさん2008/03/30(日) 21:49:59
>>374
問題が分ってきた
使いにくい理由は、SyncRootをコンテナが持っているからで
外部から渡せば十分使い物になりそうな感じがするんだけどな。
0380デフォルトの名無しさん2008/03/30(日) 22:36:06
>>377-378
VS2008ExpressJPNX1428694ってDVDでVCSやVCとかも入った物から入れました。
>>378のサイズを考えると上記のDVDには一部しか入っていないようですです。
ありがとうございます。

しかし2464.6 MBはADSLには辛い・・・。
0381デフォルトの名無しさん2008/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; } }
}

0382デフォルトの名無しさん2008/03/30(日) 23:40:27
C#+ASP.NETの学習で何か良書はありませんでしょうか?
(値段、初心者向け問わず、なるべく内容の濃いもの)
0383デフォルトの名無しさん2008/03/31(月) 15:40:49
C#で
http://www2s.biglobe.ne.jp/~sahmaro/RenameEx.htm
のような処理を行いたいのですがどうすればよいのでしょうか?
ヒントでも構いませんのでご教授いただければ幸いです。
0384デフォルトの名無しさん2008/03/31(月) 15:49:26
>>383
シェル拡張したいってことかな?
↓こんな話が。
http://blogs.wankuma.com/shannon/archive/2007/01/06/54837.aspx
0385デフォルトの名無しさん2008/03/31(月) 16:34:10
>>384
シェル拡張ではない気がします......
キーボードフックでF2キーを監視しているのでしょうか?
0386デフォルトの名無しさん2008/03/31(月) 16:40:49
普通にサブクラス化してるだけじゃないの?
0387デフォルトの名無しさん2008/03/31(月) 17:12:17
配列の中にある数字をすべて足すにはどうすればいいですか?
ちなみに配列は一次配列で内容はint型の整数です。
0388デフォルトの名無しさん2008/03/31(月) 17:20:23
var arr = new { 1, 2, 3 };
var total = arr.Sum();

.NET 3.0かそれ以前なら普通にループ。
0389デフォルトの名無しさん2008/03/31(月) 18:20:39
>>385
見るからにシェル拡張に見えるよ
0390デフォルトの名無しさん2008/03/31(月) 19:13:52
>>388
new[]だろ?
0391デフォルトの名無しさん2008/03/31(月) 20:45:58
C++から移行してきたんですが、C++用のDLLってC#で使えますか?
MFCに依存しないWin32 DLLです
0392デフォルトの名無しさん2008/03/31(月) 20:49:51
C++特有の機能を使っていないただの関数ならできる。
あとはCOMになっているやつもいける。
0393デフォルトの名無しさん2008/03/31(月) 20:52:06
>>389
どうもありがとうございます。
シェル拡張部分をCやC++で書いて処理部分をC#で書く、と言う形になるのでしょうか?
0394デフォルトの名無しさん2008/03/31(月) 20:53:57
>>392
てことは、クラスとかは無理ってことでしょうか
0395デフォルトの名無しさん2008/03/31(月) 20:58:54
C++/CLIつかえばいいよ
0396デフォルトの名無しさん2008/03/31(月) 21:07:27
IDisposable実装してDisposeしたいのですが、メンバのすべてを
自分で明示的にクリアしなければならないですか?
たとえば、プロパティ用の一時変数とかも含めて。

public List<int> hoge;
private string _piyo;
private int _fuga;

↑がある場合は、↓みたいに全てクリアが必要なのでしょうか?

hoge = null;
_piyo = null;
_huga = 0;
0397デフォルトの名無しさん2008/03/31(月) 21:26:14
unmanagedなリソースだけでいい
0398デフォルトの名無しさん2008/03/31(月) 21:37:07
別にIDisposable実装したからってGCに特別な影響があるわけじゃないよ
使い終わったら実行してほしい普通のメソッドを実装するだけ
0399デフォルトの名無しさん2008/03/31(月) 21:39:58
フィールドにDisposeメソッド持っているやつがいたら
そいつは呼んでおけ。
04003962008/03/31(月) 22:02:30
>>397-399
はい、わかりましたー。
0401デフォルトの名無しさん2008/03/31(月) 22:08:03
>>393
というか要するに複数バージョンのCLRが同一プロセスで動けないのが
問題なわけさ。エクスプローラは単一プロセスにシェル拡張読み込む
ので別バージョンのCLR使うシェル拡張読み込んだ瞬間クラッシュしちまう


それが解決出来るのならなんでもいい。といってもC++ネイチブ使ってアウト
プロセスにしちまうくらいしか思い付かないがまあ確かに出来そう。
0402デフォルトの名無しさん2008/03/31(月) 22:37:24
MSDN引きながらちょろちょろ半分コピペしながら書いてるけど
量が多すぎてC# .Net Frameworkがわかった気がしない・・・。
しかも、なにかやりたいことがあって、それが可能か不可能か
を調べるのに、MSDNに記載されている箇所を正しく見つける
ことができずに、ぐぐって見つけたどこかの海外のフォーラム
とかブログの記事なんかで推測する始末・・・。
0403デフォルトの名無しさん2008/04/01(火) 00:03:34
>>402
量が少なく過ぎよりははるかにマシだから。
0404デフォルトの名無しさん2008/04/01(火) 00:07:43
どのみち外部参照するなら量がすくないほうが無駄時間へって親切
0405デフォルトの名無しさん2008/04/01(火) 00:10:25
MSDNって日本語で読むと混乱するよなw
0406デフォルトの名無しさん2008/04/01(火) 00:12:41
>>404
WPFの適当なドキュメントを見てみろ
今までなんだかんだいって頼りにしてたんだなと痛感する
0407デフォルトの名無しさん2008/04/01(火) 00:13:40
MidPointRoundingの説明なんて誤訳に近いよな。
0408デフォルトの名無しさん2008/04/01(火) 00:14:10
外部でさがすんだろ?
ならないほうがいいじゃん
0409デフォルトの名無しさん2008/04/01(火) 00:19:46
英語読めね
0410デフォルトの名無しさん2008/04/01(火) 00:21:52
勉強するだけでOK
0411デフォルトの名無しさん2008/04/01(火) 00:25:28
いやMSDNを超軽くしてくれればそれだけでいい・・・。あの重さは凶悪だろ・・・。
あれだけで引く気がうせる。
0412デフォルトの名無しさん2008/04/01(火) 00:31:23
ローカルな MSDN はいいんだが、
ネット上の MSDN は最悪だな。
0413デフォルトの名無しさん2008/04/01(火) 00:33:37
まちがって最初にネット検索に設定してからローカルのMSDNをみることができない
だれか助けて><
0414デフォルトの名無しさん2008/04/01(火) 00:43:38
メモリ1Gしか積んでないからかもしれないけど、
ローカルでもSystem.Windows.Forms名前空間みたいに
でかいページを表示しようとするときと移動するときは重い
0415デフォルトの名無しさん2008/04/01(火) 00:49:44
MSDNライブラリのためにPCを買い換えなければならんとは。くちおしや。
0416デフォルトの名無しさん2008/04/01(火) 09:05:42
typedefはないの?
0417デフォルトの名無しさん2008/04/01(火) 09:34:04
要らないの
0418デフォルトの名無しさん2008/04/01(火) 09:50:39
listview+= mouseclickはアイテムが存在しない所では発生しないみたいですが、
これをlistview内であれば発生するようにしたい場合はどうしたら良いでしょうか?
04194182008/04/01(火) 09:54:13
mousedownか、コントロールとコンポーネントの違いすら理解していなかったorz
0420デフォルトの名無しさん2008/04/01(火) 16:34:24
DataTable.PrimaryKeyを設定したものをWriteXmlした時にファイルの内容を見てみると
プライマリーキーらしい情報が見つからないのですがこれは先頭にあるカラムが自動的に
プライマリーとして扱われるという認識で合っていますか?
0421デフォルトの名無しさん2008/04/01(火) 16:58:56
合ってない。
プライマリキーの情報を書き込みたいなら XmlWriteMode.WriteSchema が必要。
0422デフォルトの名無しさん2008/04/01(火) 17:01:03
クラスなんかC++同士でも怪しいだろ
0423デフォルトの名無しさん2008/04/01(火) 19:28:25
>>406
同感、なんだかんだいってもMS頑張ってるよ、もっともっと頑張って欲しいが
WPFにしてもLINQにしても、めちゃめちゃ使えるのに、リバースエンジェニアリング的なことまでやらないと理解できないのはあまりに寂しい。

>>393
マネージドコードが使えるシェル拡張が強く欲しいよな
しかし、現状では素直にComで作っとけ。
0424デフォルトの名無しさん2008/04/01(火) 20:53:24
listboxでアイテム削除を繰り返しているとインデックスがずれるらしいのですが、どうすれば良いですか?
たぶんこんな感じにずれてます。
index 値
1 AAA
2 BBB
3 CCC

2番を消すと
1 AAA
2 CCC
0425デフォルトの名無しさん2008/04/01(火) 21:25:35
どうと言われてもそういうものだから仕方がない。
何をしたいのか具体的に書いてくれないと、書きようがない。
ヒントとしてはItemsに設定できるのはObjectで、
SelectedItem系でそのObjectが取得できるってこと。
0426デフォルトの名無しさん2008/04/01(火) 21:56:48
わかりました。
ありがとうございました。
0427デフォルトの名無しさん2008/04/01(火) 22:16:12
やっぱり分かりませんでした。
自己定義のクラスのオブジェクトを渡すと、クラス名が表示されてしまいます。
表示名を設定する方法を教えて下さい。
0428デフォルトの名無しさん2008/04/01(火) 22:18:18
自己解決しました。
0429デフォルトの名無しさん2008/04/01(火) 22:31:13
菅直人「1+1は、いったい何なんですか?」
小泉 「2です」
菅直人「ですから、1+1なんですよ。質問に答えてください」
小泉 「2ですね」
菅直人「全く質問に答えていない。国民が聞きたいのは1+1なんですよ!」
小泉 「どうあっても2です」
菅直人「全く説明になっていません」
小泉 「誰が何と言おうと2です」
菅直人「うまく逃げましたね。あなたはいつもそうだ」
小泉 「……?」
菅直人「あまり国民をなめないで頂きたい!」
小泉 「ですからねぇ・・・原則として、1+1は2、
     これは揺らがない、私はずっとそうお答えしています」
菅直人「いいでしょう、最後に私は、小泉総理は1+1について
     国民をあざむいたと、そう申し上げて答弁を終了します」
0430デフォルトの名無しさん2008/04/01(火) 22:35:43
コピペ君って馬鹿だな、まで読んだ。
0431デフォルトの名無しさん2008/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
ありがとうございます。
0432デフォルトの名無しさん2008/04/01(火) 23:23:16
列updateはstring型じゃないのか?
だとすれば、こうだろ

order.Field<string>("update")
04334312008/04/01(火) 23:32:17
日付としてソートしたかったのですがDateTime.Nowの形ではだめなんですね
カラムの設定を指定したらいけそうです。
0434デフォルトの名無しさん2008/04/02(水) 03:07:56
最近C#の入門書を購入したのですが、やはり内容を丸暗記したほうがいいのでしょうか?(猫でもわかるC#プログラミングという本で400ページくらいのものです)
グーグルで検索してみると、暗記しろと書いてあるところもあれば
必要最低限のところだけ覚えればいいと書いてあるところもあり
どうしたものかと右往左往しています

もし仮にこの本を丸暗記したとして次のステップアップはどのようにすればいいのでしょうか?
0435デフォルトの名無しさん2008/04/02(水) 03:42:13
猫プログラミングに載ってるぐらいの初歩的な内容は覚えておいて損はない
とは言えると思うけど、余程暇で無い限り丸暗記する必要はない。
(こんな機能があるってだけ覚えておけば、必要な時に思い出したり調べることが出来る)

次のステップは・・何を作りたいかによって全然違うから何とも言えない。
04364342008/04/02(水) 04:28:06
>>435
ありがとうございます

本に書いてあることさらっと全部やってみて、大事そうなところをあとから復習してみようと思います
0437デフォルトの名無しさん2008/04/02(水) 10:47:50
よく使うものはその気がなくても気が付いたら覚えている。
けど大事なところは思い出せないんだけどね。
0438デフォルトの名無しさん2008/04/02(水) 11:22:19
MessageBoxのボタンを英語で表示する方法って無いでしょうか
キャンセル→Cancel
みたいな

FormのLanguageを英語にしてみたけど日本語のままだったorz
0439デフォルトの名無しさん2008/04/02(水) 11:29:16
>>438
CurrentUICultureを英語にしてみるとか。
0440デフォルトの名無しさん2008/04/02(水) 11:37:46
リンクではないブラウザに表示されている画像をD&Dする方法はあるのでしょうか?
DragEnterを書き換えないと無理だとハードルが高すぎるのですが・・・
0441デフォルトの名無しさん2008/04/02(水) 12:15:48
>>440
ファイルパスが含まれてるならキャッシュから持ってこれるかもしれない。
DeviceIndependentBitmapとか持ってたらそれから作れるな。面倒だけど。
DragEnterの書きかえって何?
0442デフォルトの名無しさん2008/04/02(水) 12:31:43
>>436
っていうか今時のプログラミング関係の本の読み方は基本は「乱読」だと思うよ。
一冊の本を熟読なんていう受験勉強スタイルは時間のムダだと思う。

これ一冊読んでおけばOK、なんて網羅的は本はないし、
書くほうも恐らく精読されることを想定して書いてない。

あと個人的意見として、「猫でも〜」の著者の本はウンコだと思う。
0443デフォルトの名無しさん2008/04/02(水) 12:33:43
>>441
それがブラウザ上の画像からD&DをしようとするとDragEnterイベントが起きないのです。
こういう場合はDragEnterをオーバーライド?とかしないといけないのでしょう?。
0444デフォルトの名無しさん2008/04/02(水) 12:45:08
>>443
ドラッグできないものならドロップ先でなにしようがD&Dできない。
ドラッグできるものならドラッグ元が制限かけない限りDragEnterは発生する。
何をドラッグさせるかはドラッグ元次第。
まずドラッグできてるのかってところから確認。
0445デフォルトの名無しさん2008/04/02(水) 14:40:19
ていうかブラウザから画像D&D出来るよ
0446デフォルトの名無しさん2008/04/02(水) 15:16:00
HttpWebRequestでHTMLを取得・解析するプログラムを作っているのですが、
あるサーバーのHTTPヘッダーが
本来CRLFでなければならない部分がLFLFになっているらしく、
アクセスすると「サーバーによってプロトコル違反が発生しました. Section=ResponseStatusLine」
というエラーが出て落ちてしまいます

これを回避するにはどうしたらいいでしょうか?
よろしくお願い致します。
0447デフォルトの名無しさん2008/04/02(水) 15:34:30
構造体作るたびにEquals(構造体),Equals(object),==,!=,GetHashCode実装するのが
面倒なんだけど何とかならない?
0448デフォルトの名無しさん2008/04/02(水) 15:45:04
>>446
HttpWebRequest使うのを諦めてSocket or TcpClient使う
0449デフォルトの名無しさん2008/04/02(水) 15:47:10
>>448
ありがとうございます。
TcpClientは使ったことないですがやってみます
0450デフォルトの名無しさん2008/04/02(水) 15:59:48
>>446
UseUnsafeHeaderParsing
でどうにかならんかな?
0451デフォルトの名無しさん2008/04/02(水) 18:04:44
>>450
ありがとうございます
System.Configuration.dllをアセンブリ参照に追加して、
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
SettingsSection section = (SettingsSection)config.GetSection("system.net/settings");
section.HttpWebRequest.UseUnsafeHeaderParsing = true;
で行けました。
0452デフォルトの名無しさん2008/04/02(水) 19:09:26
VS2008を使って.net framework3.5で開発してたんですが
2.0対応にしようと思って、プロジェクトのプロパティのアプリケーションタブの対象フレームワークを2.0にして
3.5及び3.0をアンインストールしてからソリューションを開いてみたら、
version3.5のmicrosoft.build.engineがありません、と言われて起動出来ませんでした。
なにかアドバイスもらえませんか?
0453デフォルトの名無しさん2008/04/02(水) 19:14:06
ターゲットバージョンを指定できるとはいえ、ビルドに使ってるのは3.5のコンパイラだし。
2008に必要なランタイム削れば、そら動かんのは当たり前だろ。

2008のIDEだけ欲しかったとか? あてが外れたね。
0454デフォルトの名無しさん2008/04/02(水) 19:23:06
開発者がランタイム嫌うとかアホかと
0455デフォルトの名無しさん2008/04/02(水) 19:48:58
>>438
最悪、Win32 APIのMessageBoxExか自前でやるか。
0456デフォルトの名無しさん2008/04/02(水) 19:49:03
いつもの人なんだろうな、もうプログラム組むのあきらめたら?
0457デフォルトの名無しさん2008/04/02(水) 20:14:38
>>444-445
これだと画像を引っ張った時に e.Effect = DragDropEffects.None;の状態になるので
イベントが起きていないと勘違いしていました。すいません。
でも、e.Data.GetDataPresent("UniformResourceLocator")にマッチするのに何故でしょう?。
イベントが二回起きているからなのかな?。

private void treeView_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent("UniformResourceLocator") || e.Data.GetDataPresent(DataFormats.FileDrop))
{
e.Effect = DragDropEffects.Link;
}
else if (e.Data.GetDataPresent(typeof(ListViewItem)))
{
e.Effect = DragDropEffects.None;
}
else
{
e.Effect = DragDropEffects.None;
}
}
04584572008/04/02(水) 20:18:32
お騒がせしました。
画像の場合、DragDropEffects.Linkだとだめなのですね。
e.Effect = DragDropEffects.Copy;にしたら上手く行きました。
0459デフォルトの名無しさん2008/04/02(水) 21:09:56
>>438
MessageBox は現在の MUI (または言語バージョン) に合わせて表示するので、変更はできないし、
できるだけそういう処理をすべきではない。

いっそのこと日本語を含む多言語対応 (Localizable = true) にしてしまうのが良いのでは?
04604572008/04/02(水) 21:13:12
わけわからん。.netがバグってる?とか言ったら突っ込まれるのだろうか・・・。
デスクトップからファイルをドロップ → ×
ブラウザから画像ファイルのドロップ → ×
ブラウザからハイパーリンクリンクをドロップ → ○
おまけに他の.netアプリでもD&Dできなくなったしorz
再起動してくるよ・・・

private void treeView_menu_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent("UniformResourceLocator") || e.Data.GetDataPresent(DataFormats.FileDrop))
{
if (e.Data.GetDataPresent("DeviceIndependentBitmap"))
{
e.Effect = DragDropEffects.Copy;
}
else
{
e.Effect = DragDropEffects.Link;
}
}
else
{
e.Effect = DragDropEffects.None;
}
}
04614572008/04/02(水) 21:16:55
再起動したら直ったw
何のこっちゃ
0462デフォルトの名無しさん2008/04/02(水) 22:07:47
>>459
え?
UIスレッドのCurrentUICultureをいじれば普通にできなかったっけ?
0463デフォルトの名無しさん2008/04/02(水) 23:52:50
>>462
459 じゃないが、試してみた、駄目っぽいな。
04644592008/04/02(水) 23:57:35
>>462
Windows Forms の MessageBox.Show は実質 MessageBox 関数 (API) の
リダイレクトだから、CurrentUICulture が効かないんだな。
独自にダイアログを作れば Thread.CurrentUICulture でいいと思うけど。
0465デフォルトの名無しさん2008/04/03(木) 00:04:14
MessageBoxモドキを自分で作るしかないのかねぇ
0466デフォルトの名無しさん2008/04/03(木) 00:05:15
http://www.atmarkit.co.jp/fdotnet/dotnettips/314winmultilang/winmultilang.html
こんなん見つけてきた、国際対応の仕方だけど結構便利そうだな。
さすが世界中のソフトを売りさばいている会社だけの事はあるw
0467デフォルトの名無しさん2008/04/03(木) 00:11:31
Textboxを継承してTextbox2を作成。
これをツールボックスからGUIでFormに
配置するのって無理?
0468デフォルトの名無しさん2008/04/03(木) 00:14:35
できるよ。
0469デフォルトの名無しさん2008/04/03(木) 00:14:39
一度ビルドすればツールボックスに追加される。
0470デフォルトの名無しさん2008/04/03(木) 00:23:01
自分で作ったコントロールってそれから別のプロジェクト作るときもツールボックスに入るの?
0471デフォルトの名無しさん2008/04/03(木) 00:24:21
試せよ、クズ
0472デフォルトの名無しさん2008/04/03(木) 00:24:49
>>470
そのコントロールが入っているアセンブリに参照設定すればOK
0473デフォルトの名無しさん2008/04/03(木) 00:29:52
>>471
スレタイ嫁
0474デフォルトの名無しさん2008/04/03(木) 00:32:13
気をつけろ、延々こういう事をする奴が一人いる
知らないんじゃなくてわざとだ
0475デフォルトの名無しさん2008/04/03(木) 00:36:55
>>452 見たいな奴を見かけたら無視する方針でよろしく
0476デフォルトの名無しさん2008/04/03(木) 00:41:42
>>472
なるほど
DLL化しておくのが一番いいんですかね
04774672008/04/03(木) 00:45:14
お、できるんか。ヤッタ!
できんと思ってた。やってみるわ。
0478デフォルトの名無しさん2008/04/03(木) 00:53:30
>402
おれもMSDNでキーワード拾って
最後はググってる・・・。

MSDNがいまいち分からん。
MSDN使い方マニュアルがほしい・・・
0479デフォルトの名無しさん2008/04/03(木) 01:05:29
MSDNのWEBはブラウザの検索エンジンに登録して
ガシガシ検索が正しい使い方だと思ってる
0480デフォルトの名無しさん2008/04/03(木) 22:06:02
ゲーム作りたいんですが
Visual C# 2008 Express Edition
で十分ですかね?有償版にしかない機能とかはなんなんでしょうか?
0481デフォルトの名無しさん2008/04/03(木) 22:12:00
十分
デバッガがちょっとだけ弱いけど工夫次第でどうにでもなる
0482デフォルトの名無しさん2008/04/03(木) 22:13:21
C#でもActiveXとか使えますか?
0483デフォルトの名無しさん2008/04/03(木) 22:13:59
>>481
なる。デバッガとかですか。トンクス。
たしかVisualC++だとMFCとか使えなかった気がしたんで心配しまちた。
0484デフォルトの名無しさん2008/04/03(木) 22:14:10
XNAは今のところVC#2005Expressだけだった気がする
0485デフォルトの名無しさん2008/04/03(木) 22:16:51
>>484
XNAってあのXBOX360上でも動くランタイムみたいなやつっすかー。
PCゲームオンリーでXNA使うメリットってなんかありますかね?

とりあえずDirectXさえ動いてくれればいいかなーとか思ってたんすが・ω・;
0486デフォルトの名無しさん2008/04/03(木) 22:26:16
あるMethodInfoオブジェクトが表すメソッドが,特定の型のデリゲートにバインドできるかどうか
調べる方法はありますか? 試しにCreateDelegateしてみるしかないのでしょうか
0487デフォルトの名無しさん2008/04/03(木) 22:29:07
http://www.microsoft.com/japan/msdn/vstudio/products/vs08/compare.aspx
目立った所で、MSIインストーラーがないので、公開するのが面倒くさいかもしれない
ClickOnce の使えるレンタルサーバは限られている。
フリーのインストーラを使えば問題ない。
XAMLでゲームを作るなら、ちょっと不足があるかもしれない。
VSSでバージョン管理したいなら、使えないので注意が必要。
フリーソフト類と組み合わせて開発するつもりなら「マクロ、アドイン、パッケージは使用不可」に注意。
0488デフォルトの名無しさん2008/04/03(木) 22:33:44
>>487
なるほどーすごい参考になりました。ありがとうございます(__)
たしかにmsiがないのは公開するときダリーですね。
0489デフォルトの名無しさん2008/04/03(木) 22:51:15
5年前のだけど今から読んでも役に立つ?

これ↓
http://www.amazon.co.jp/gp/product/images/4891003529/
0490デフォルトの名無しさん2008/04/03(木) 22:52:09
いいえ
0491デフォルトの名無しさん2008/04/03(木) 23:00:04
System.Windows.Forms.Control control = new System.Windows.Forms.Control();
いまさらだけど、こういう宣言って悠長じゃね?

var control = new System.Windows.Forms.Control();
オブジェクトの型はオブジェクト自身が知ってるからこれでいいんじゃね?
0492デフォルトの名無しさん2008/04/03(木) 23:01:04
ゆうちょう?
0493デフォルトの名無しさん2008/04/03(木) 23:04:03
そのためにvarがあるんだが
0494デフォルトの名無しさん2008/04/03(木) 23:07:10
冗長だな。
0495デフォルトの名無しさん2008/04/03(木) 23:08:40
>>485
メリット以前にC#でDirectX直触りするんならレガシーのぞいてオフィシャルは
XNAしか茄子。

本当に直触りも出来るけど素人お断り&とても大変&あれ以上の完成度
難しい。…まあXnaがかなりよく考えて作られてるってことだが
0496デフォルトの名無しさん2008/04/03(木) 23:12:24
>>484
2.0からEE縛り消えた。C#のみサポート縛りは確かあり
0497デフォルトの名無しさん2008/04/03(木) 23:13:55
>>495
なるる。なんかWikiみるとXNAにはフレームワークも用意されてるっぽいし、
サンプルが充実してそうでつね。ぱっとみ気になるのは

「日本語の表示が非常に難しい」
「ジョイパッドはXBOX360コントローラーだけ」

ってところかな?wまぁ実際触ってみます。
0498デフォルトの名無しさん2008/04/03(木) 23:29:15
>>497
SpriteFont出来たから日本語の表示は楽になった。ビルドに時間かかるぐらい。
というか文字表示はDirectX使うならどっちにしろ大変。SpriteFontは
かなりいい落とし所。

DInputはMarshalingに慣れてる人なら直で触ってもサクッと書けてしまう
ぐらいのコード量かと。全機能綺麗にと言われたらちょっと大変かもだが
0499デフォルトの名無しさん2008/04/03(木) 23:58:33
遅延バインディングっていうのかな?
XMLにButton1を押した時にはC:\XXX\AAA.dllのBBB.bbbクラスのcccってメソッドを呼ぶ
ってな感じで記入して、記入した内容を元にプログラムを実行したいです。。
XMLを書き換えればソースを書き換えなくても動くようにしたいんです。
まだまだC#はかじったばかりですが、どのあたりを勉強すればいいですか?

検索のキーワードとか、ヘルプで見るネームスペースとかだけでもいいから教えてください。
0500デフォルトの名無しさん2008/04/04(金) 00:17:34
>>498
なるほー。情報マジどもです(__)
XNAさわりまくってみまつ。
0501デフォルトの名無しさん2008/04/04(金) 01:03:57
SystemBrushes.Highlight から取得したブラシを
使い終わった後でDisposeしようとしたら下記の例外が発生しました。

System.ArgumentException はユーザー コードによってハンドルされませんでした。
Message="アクセス許可が有効でないため、Brush を変更できません。"
Source="System.Drawing"


SystemBrushesから取得したブラシはDisposeしてはいけないのでしょうか。# パフォーマンス上の理由?
それとも何か重大な勘違いをしているのでしょうか。
0502デフォルトの名無しさん2008/04/04(金) 09:16:29
>>501
自分で作ってないものは破棄しちゃ駄目、というのが原則。
0503デフォルトの名無しさん2008/04/04(金) 10:24:02
>>502
なるほど次から気をつけます。
0504デフォルトの名無しさん2008/04/04(金) 10:28:01
>>499
WPF(XAML)なら標準でできる
WinFormsならリフレクションを駆使して自力で頑張る
0505デフォルトの名無しさん2008/04/04(金) 10:58:23
>>501
まあプロパティで取得するオブジェクトだから、中の人がCloneを返すようにしていたならば当然Disposeして
問題ないのだが(むしろしないとまずい)、おそらく中の人はそのまんま参照を返しているみたいなので
その例外が出たんだろうね。
要するに他にもいろんなところで使われているオブジェクトの参照なので勝手にDisposeしてはいけないということかな。
仮にそのオブジェクトを変更したりする必要が出てくるような場合はCloneを受け取ればよい。

using (var sb = SystemBrushes.Highlight.Clone() as SolidBrush)
{
  Hoge();
}

これなら例外発生しない。
0506デフォルトの名無しさん2008/04/04(金) 11:25:44
>>505
あーなるほど、中ではそういう事になってるんですね
ありがとうございます。とても参考になりました
0507デフォルトの名無しさん2008/04/04(金) 13:17:50
質問。

超初心者で、まずハロワのプログラム書いたんだけど、SDKでコンパルして
.exeのやつ作って実行しても何か黒い画面が一瞬表示されるだけで何書いてるかも
読めない。これって俺の書いたのが悪いのか?メッセージループ?か何か使ってないから?
0508デフォルトの名無しさん2008/04/04(金) 13:20:34
>>507
コマンドプロンプトから実行
05095072008/04/04(金) 13:33:59
SDK コマンドプロンプトから実行したらできた!
ありがとう>>508
0510デフォルトの名無しさん2008/04/04(金) 17:07:42
すみません、質問よろしいでしょうか。

C#でスクリーンセーバーを一時無効化する事って出来るんでしょうか?
マウスポインタを強制的に動かす方法くらいしか思いつきません。
又その場合、実際のマウス操作と認識して無操作時間がリセットされるのでしょうか?

どなたかお力をお貸し下さい。お願いします
0511デフォルトの名無しさん2008/04/04(金) 17:48:04
TabControl上に配置したTextBoxにtextBox1.Text == "Text;"
というように文字列を表示しようとすると
「静的でないフィールド、メソッド、・・・でオブジェクト参照が必要です」
とエラーになってしまうのですが、どのようにすればいいですか?
0512デフォルトの名無しさん2008/04/04(金) 18:03:38
511 が 記述ミスでありますように…


0513デフォルトの名無しさん2008/04/04(金) 18:29:40
; ; ; ; ;
0514デフォルトの名無しさん2008/04/04(金) 19:14:11
2つ
0515デフォルトの名無しさん2008/04/04(金) 20:20:47
常駐プログラムって、どうやったらできるの??
0516デフォルトの名無しさん2008/04/04(金) 20:27:34
普通のプログラムだよ 特別なことは何も無い
0517デフォルトの名無しさん2008/04/04(金) 20:44:16
タスクトレイの事かな
0518デフォルトの名無しさん2008/04/04(金) 20:54:26
サービスじゃね
0519デフォルトの名無しさん2008/04/04(金) 23:48:42
VB.NETとC#の演算子の違いに戸惑っています。

VB.NETで

Dim FileName As String = "C:\WINDOWS\system32\xvid.ax"
If IO.Path.GetExtension(FileName).ToLower <> ".dll" Then
  Console.WriteLine("DLLじゃないよ")
End If

は出来るのにC#で

string FileName = @"C:\WINDOWS\system32\xvid.ax";
if (System.IO.Path.GetExtension(FileName).ToLower != ".dll") {
  Console.WriteLine("DLLじゃないよ");
}

と出来ないのは何故でしょうか。
また、VB.NETと同じように処理可能にする方法はないでしょうか。
0520デフォルトの名無しさん2008/04/04(金) 23:54:11
C#ではメソッド呼び出しの括弧は省略できないからToLower()と書く必要がある
VBでも括弧は省略しない癖を付けた方が…
0521デフォルトの名無しさん2008/04/04(金) 23:59:45
>>520
orz

こんな単純ミスだったんですね…。
VB.NETの場合、"()"が必要な場合はインテリセンスが自動補完してくれるので気付きませんでした。
これからは気を付けます。
0522デフォルトの名無しさん2008/04/05(土) 00:28:04
>>504
その自力で頑張るの部分をもう少し詳しくお願いできませんか?
System.Windows.Forms.Formを使用してます。
05235102008/04/05(土) 00:33:58
どうかお願いいたします。
0524デフォルトの名無しさん2008/04/05(土) 01:56:53
TableLayoutPanelからコントロールを取り除くとき

for (int i = 34; 7 <= i; i--)
{
  tlp.Controls.RemoveAt(i);
}

のように後ろからやっていく方法と

for (int i = 34; 7 <= i; i--)
{
  tlp.Controls.RemoveAt(0);
}

のように前からやっていく方法とで、どちらかのほうがいいということはありますか?
それとも、たいした違いはありませんか?
0525デフォルトの名無しさん2008/04/05(土) 02:02:56
後者は
for (int i = 34; 7 <= i; i--)
{
  tlp.Controls.RemoveAt(7);
}
でした、すみません
0526デフォルトの名無しさん2008/04/05(土) 02:37:55
C#のフォームを使うプログラムで、複数フォームにまたがるデータは、
どこに格納するのが慣例なのでしょうか?

VBではモジュールがよさそうですが。
0527デフォルトの名無しさん2008/04/05(土) 02:48:47
1. Application クラスの public static フィールド
2. フォームのコンストラクタで渡して使う
3. Form.Show の前にプロパティで渡す
0528デフォルトの名無しさん2008/04/05(土) 09:02:56
こういう場合はどうやって変換したら良いのでしょうか?
obj = new (???) c;
それとも、こういう使い方をしてはいけないのでしょうか?

public class A
{
public A()
{
new B(this);
}

public A_C()
{
//
}
}

public class B
{
public B(object c)
{
c.A_C(); // ← こういう雰囲気の事をしたい
}
}
0529デフォルトの名無しさん2008/04/05(土) 09:09:47
キャストすればいいんじゃね?
0530デフォルトの名無しさん2008/04/05(土) 09:24:51
なんでobjectで受け取ってるのかが問題だな
0531デフォルトの名無しさん2008/04/05(土) 09:30:23
そのキャストの仕方や受け取り方がわからない
Listview lv = (ListView) sender;とかと同じ理屈だとは思うのですが・・・
()の中に何を入れてよいのかわかりません
0532デフォルトの名無しさん2008/04/05(土) 09:33:31
Aだろ。
0533デフォルトの名無しさん2008/04/05(土) 09:39:04
あぁ、一生懸命classとか入れていました・・・。
例えばこのobjectがどのクラスか不明だった場合はどうしたら良いのでしょうか?
0534デフォルトの名無しさん2008/04/05(土) 09:41:59
どうしたいんだよ?
0535デフォルトの名無しさん2008/04/05(土) 09:43:13
先にc#の仕様を一通り理解すれば全て解決するパターンだな。
0536デフォルトの名無しさん2008/04/05(土) 09:53:20
>>533
どのクラスか不明って少なくともA_C()を実装してるクラスが一番の大元だろう?
そのクラスにキャストしれ
っつか、そのクラスで受け取れよ。
0537デフォルトの名無しさん2008/04/05(土) 09:57:37
というか、そもそも何をしたいのかがよくわからん。
05385332008/04/05(土) 10:03:27
えっと、自分が使いやすいようにまとめてある非同期ダウンロードのライブラリ的なものがありまして
ダウンロード完了時のイベントを呼び出し元で側で受け取りたいのです。
感じとしては以下のような形です。

public Download(string uri, string filepath,object obj)
{
if (dc == null)
{
dc = new WebClient();
dc.DownloadFileCompleted += new AsyncCompletedEventHandler(obj.DownloadCompleted);
}
dc.DownloadFileAsync(new Uri(uri), filepath);
}
0539デフォルトの名無しさん2008/04/05(土) 10:07:20
objectじゃなくてAsyncCompletedEventHandler受け取れば済む話じゃね?
つか普通そのオブジェクトがイベントを伝播する形にするんじゃね?
05405332008/04/05(土) 10:16:03
言葉を知らないから説明できない
もやっとぼーるを投げます
お騒がせしました
0541デフォルトの名無しさん2008/04/05(土) 10:43:33
よくわからんが特定のメソッドを呼び出したいんだと予想。
で、いろんなパターンがあって、全てのクラスに共通する基本クラスは作成できないと解釈。

呼び出したいメソッドを定義したインターフェイスを作って、
それぞれのクラスでそのインターフェイスを実装。
メソッドのパラメータはそのインターフェイスの型の型にする。

デリゲートで使えるかどうかはしらん
0542デフォルトの名無しさん2008/04/05(土) 11:30:10
デリゲートかイベントで十分
0543デフォルトの名無しさん2008/04/05(土) 11:31:47
>>538
MethodInfoあたりでも使えば、問答無用で好き放題できるだろうけど
その前に可能であればC#らしいスタイルを追求したいと思う自分がいる。

1.呼び出してほしいインターフェイスを定義して、呼び出されたいクラスが実装する。
 Downloadが完了次第、Downloadを持つクラスがそれを呼び出す。
 参照が無くなったりDisposeされたりといった問題があるなら、それを加えてもう一度やりたい事をここで説明。

2.主従関係を逆転して考えてみる。
 Download を持つクラスに event を定義して、呼び出されたいクラスがコンストラクタ等で自ら登録する。

3.MethodInfo を使って、まさに当初の質問通りの処理をする。
0544デフォルトの名無しさん2008/04/05(土) 11:44:05
この辺読め
http://msdn2.microsoft.com/ja-jp/library/ms228969(VS.80).aspx
0545デフォルトの名無しさん2008/04/05(土) 12:17:31
アンマネージドのC++で作ったDLLの関数をC#で使いたいのですが
DLL 'testdll.dll' の 'f'' というエントリ ポイントが見つかりません。
と例外が出てしまいます。
やり方が間違っているのでしょうか?
DLL側は
class c
{
 public:
 static __declspec(dllexport) int f();
};
int c::f()
{
 return 777;
}
C#側は
using System.Runtime.InteropServices;
using System;
namespace ConsoleApplication1
{
 class Program
 {
  [DllImport("testdll.dll")]
  public static extern int f();
  static void Main(string[] args)
  {
   Console.WriteLine(f());
  }
 }
}
こんな感じになってます。
testdll.dllとtestdll.libはC#側のフォルダに入れてます。
0546デフォルトの名無しさん2008/04/05(土) 12:28:20
>>545
C++側のインターフェイスをCスタイルで書いてextern "C" とする。
C++の識別子は、どのようなスタイルになるのかはアンマネージドの範囲でも一切保障されない。
0547デフォルトの名無しさん2008/04/05(土) 12:33:31
>>545
C++側をcomで作って、C#側はプロジェクトの参照設定よりdllを追加(COMタブより追加可能)
05485332008/04/05(土) 12:44:25
主従関係に困惑したりしながら色々と試行錯誤していたのですが読み出す時にイベントを付加する事にしました。
でも、今度は何のダウンロードが完了したのかわからない。未だに見慣れないのですがMSDNと格闘してきます!。

AsyncCompletedEventHandler e = new AsyncCompletedEventHandler(this.DownloadCompleted);
FileDownload(path, filepath, e);

public void DownloadCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
System.Net.WebClient m = (System.Net.WebClient)sender;
//m.download_url = ???
}

05495452008/04/05(土) 12:49:16
>>546
extern "C"{
 __declspec(dllexport) int f()
 {
  return 777;
 }
}
DLLをこう書き直したのですが結果は変わりませんでした。
これはCスタイルではないって事でしょうか??
0550デフォルトの名無しさん2008/04/05(土) 12:53:07
__stdcall
0551デフォルトの名無しさん2008/04/05(土) 12:54:55
>>549
CallingConventionを合わせる
0552デフォルトの名無しさん2008/04/05(土) 12:58:28
>>548
まずC++をしっかり勉強してからの方が無難かもしれないね。
0553デフォルトの名無しさん2008/04/05(土) 12:59:29
>>552 はアンカミス >>548 -> >>549
05545452008/04/05(土) 13:47:47
>>550
extern "C"
{
 int __declspec(dllexport) __stdcall f();
}
int __declspec(dllexport) __stdcall f()
{
 return 777;
}
DLLをこう変更しましたがだめでした。
DLL側のコードを書いてくれませんか?
0555デフォルトの名無しさん2008/04/05(土) 13:57:53
とりあえずCOMとIDLについて軽く勉強した方がよくね
0556デフォルトの名無しさん2008/04/05(土) 14:05:22
P/InvokeにCOMもIDLも関係ないだろ。適当教えるなよ
0557デフォルトの名無しさん2008/04/05(土) 14:09:12
dumpbin /exports
でdll調べてみたら
0558デフォルトの名無しさん2008/04/05(土) 14:10:40
>>554
C:\>type test.cpp
extern "C" __declspec(dllexport) int f() {
return 777;
}

C:\>type test.cs
using System;
using System.Runtime.InteropServices;
namespace Test {
class Test {
[DllImport("test", CallingConvention=CallingConvention.Cdecl)]
static extern int f();
static void Main() {
Console.WriteLine(f());
}
}
}

C:\>cl /LD /nologo test.cpp
test.cpp
ライブラリ test.lib とオブジェクト test.exp を作成中

C:\>csc /nologo test.cs

C:\>test
777
05595452008/04/05(土) 16:14:51
>>558
/nologoと付けたら出来ましたが、IDEからビルドすると例外エラーです。
皆さんはアンマネージドのC++でDLLを作ってC#とかから呼び出したりしないんですか?
0560デフォルトの名無しさん2008/04/05(土) 16:21:03
>>559
ふつーは .def 使ってエクスポート名をきちんとしておく。
05615602008/04/05(土) 16:27:33
つまりこういうことな。

//test.cpp
extern "C" int __stdcall f() {
 return 777;
}

//test.def
LIBRARY
EXPORTS
 f

//test.cs
[DllImport("test.dll")]
int f();

0562デフォルトの名無しさん2008/04/05(土) 16:31:31
>>559
俺だったらC++/CLIで作る
0563デフォルトの名無しさん2008/04/05(土) 16:55:54
>>561
コンパイルすら通らないんですが。。
//test.cpp
extern "C" __declspec(dllexport) int f()
{
 return 777;
}
//test.def
LIBRARY "testdll"
EXPORTS
 f
//test.cs
using System;
using System.Runtime.InteropServices;
namespace Test
{
 class Test
 {
  [DllImport("testdll")]
  static extern int f();
  static void Main()
  {
   Console.WriteLine(f());
  }
}
こうですか?
それでも例外出ますね。
0564デフォルトの名無しさん2008/04/05(土) 17:15:55
>>563
あーごめんC#側で extern と static いるの忘れてた

とりあえずそのコードだとC側の呼び出し規約が間違ってる。def使う場合
dllexportはいらない
0565デフォルトの名無しさん2008/04/05(土) 17:19:39
まずは、dumpbin 使え。
05665642008/04/05(土) 17:20:20
ごめんもう一個
.defはリンカの設定に追加する必要がある。VSは作ったら勝手にやって
くれた気もするが
0567デフォルトの名無しさん2008/04/05(土) 17:21:52
>>565
Dependency Walkerでもいいけどな
0568デフォルトの名無しさん2008/04/05(土) 17:51:54
>>566
モジュール定義ファイルにtest.defを追加すればいいんですかね??
それでもビルド出来ないんですが。。
error C3872: '0x3000': この文字を識別子で使用することはできません
error C2065: ' return' : 定義されていない識別子です。
error C2143: 構文エラー : ';' が '定数' の前にありません。
0569デフォルトの名無しさん2008/04/05(土) 17:53:19
一行ヒントしか書かないやつは分からないのに答えてる法則。
そしてその後に関連される単語が出てくると「だから>>○○で言っただろ」と得意気な顔をするw
0570デフォルトの名無しさん2008/04/05(土) 17:55:23
>>568
それ全角スペースだろ死ねよ。
0571デフォルトの名無しさん2008/04/05(土) 17:59:11
まじ、dumpbin知らないってことか?
DLLの情報見れば解決する話だろうが。
0572デフォルトの名無しさん2008/04/05(土) 18:00:06
1行ヒントはクグればすぐ分かるということだろう。
0573デフォルトの名無しさん2008/04/05(土) 18:05:55
たった1行のコマンド実行するだけなのに、無視する理由が分からん。
0574デフォルトの名無しさん2008/04/05(土) 18:08:43
>>568
そこかよorz
そのコードインデントに全角スペース使ってるからインデントは
そのままコピペするんじゃなくてタブか半角スペースにきちんと
置換してくれ

>>571
dumpbin 使おうが Dependency Walker 使おうがエクスポートされた
名前は見れるけど、「どうやってその名前を作るの」がわからない、
つまり確認しか出来ないから直接解決にならんだろ
まぁそれらを知っておいてかつ確認ぐらいはしてほしいがマジで
まぁふらっとだから
0575デフォルトの名無しさん2008/04/05(土) 18:15:20
>>573
全角スペースを使うぐらいだから、コマンドプロンプトの使い方が分からないんだよ。

>>574
その名前で呼び出せば使えるんだから、命名規則の仕様まで分からなくてもいいと思うが。
0576デフォルトの名無しさん2008/04/05(土) 18:18:13
>>575
あそっか。C#側いじればいいのか。
05775452008/04/05(土) 18:20:34
>>574
ありゃ。恥ずかしい><
全角混じってるだけでした。
ですがC#側で呼び出せません。。
むぅ…
0578デフォルトの名無しさん2008/04/05(土) 18:21:56
>>577
だから呼び出し規則あわせろってずっと言ってるだろ。
今のコード貼ってみろよ
0579デフォルトの名無しさん2008/04/05(土) 18:22:12
>>575
それじゃ根本的な解決になってないだろ
05805452008/04/05(土) 18:25:29
>>578
どこでそんなこと書いてありますか?
//test.cpp
extern "C" int __stdcall f()
{
 return 777;
}
//test.def
LIBRARY
EXPORTS
f
//test.cs
using System;
using System.Runtime.InteropServices;
namespace Test
{
 class Test
 {
  [DllImport("test.dll")]
  static extern int f();
  static void Main()
  {
   Console.WriteLine(f());
  }
}
今のコードはこうです。
DLL側とC#側のコード貼ってください。
0581デフォルトの名無しさん2008/04/05(土) 18:26:44
動けばいいんじゃないの?
05825452008/04/05(土) 18:28:05
C++で作ったDLLをC#で呼び出すときに皆さんはわざわざコマンドプロンプトを使うんですか?
ツールを使って名前を調べて呼び出したりするんですか?
0583デフォルトの名無しさん2008/04/05(土) 18:29:42
こいつ何言ってんだ。DLL中身みないでどうやって名前調べるんだよ。
もしかしてスピリュアルってやつ?
0584デフォルトの名無しさん2008/04/05(土) 18:35:34
>>582
当たり前だろ。

dumpbin /exports test.dll
の結果見せろよ。
05855452008/04/05(土) 18:38:41
えと、何か勘違いしてるかもしれないのでご指摘ください。
イメージとしてはWin32APIを呼び出すときのように使いたいのです。
[DllImport("user32.dll")]
extern static int RegisterHotKey(IntPtr HWnd, int ID, int MOD_KEY, int KEY);
こんな感じで呼び出して利用できました。
なので自作のDLLも同じように出来るのかな?と思ったわけです。

C++のDLLをC++で呼び出したり、
C#のDLLをC#で呼び出すときは楽なのに、
マネージドからアンマネージドを呼び出すのは大変ですね…。
0586デフォルトの名無しさん2008/04/05(土) 18:39:14
>>584
あんまりいじめるな。
お前がコード張ればいいだろ。
0587デフォルトの名無しさん2008/04/05(土) 18:39:34
>>580
それコンパイルしたら普通に上手く動くぞ。
お前さんのやり方に問題があるとしか思えん。
0588デフォルトの名無しさん2008/04/05(土) 18:40:29
>>586
俺は>558ではった
05895452008/04/05(土) 18:42:49
>>587
ありゃ。
もう一度新規プロジェクトからやり直して見ます!
0590デフォルトの名無しさん2008/04/05(土) 18:46:35
>>561 だが・・・うーん、これでexport 出来るはずなのよね。
別の原因の気がするので

・dumpbin の結果
 VS のコマンドプロンプト(たぶんスタートメニューのツールの
 下あたりにある)を起動して、生成した C++ な DLL に対して
 dumpbin /EXPORTS "test.dll"
 みたいにしてその結果を張ってください

・探索ロケーション周り
 当然 C# な exe と C な DLLは同じフォルダにないとダメですよ。

あたり確認してみてくれ
05915452008/04/05(土) 18:56:11
>>590
両方ともプロジェクト作り直したら通りました;
dumpbinの結果は
File Type: DLL
Section contains the following exports for test.dll
00000000 characteristics
47F74A82 time date stamp Sat Apr 05 18:46:42 2008
0.00 version
1 ordinal base
1 number of functions
1 number of names
ordinal hint RVA name
1 0 00001000 f = _f@0
Summary
1000 .data
1000 .rdata
1000 .reloc
1000 .rsrc
1000 .text
こんな感じでした。お騒がせしました><
DLLは作ったことないので色々いじって見ます。
05925452008/04/05(土) 18:59:29
>>590
あ、すみません、言い忘れてました。
ありがとうございました!
0593デフォルトの名無しさん2008/04/05(土) 19:01:31
>>582
人の作ったDLLなら見る。
だって、C/C++のヘッダを見ただけでは分からないこと(修飾名)があるから。

WindowsシステムのDLLはそれがもう分かっているし、
585のように単純にDllImportを書くだけで使えるようになっているから見ない。

自分で作ったDLLも見ない。どうなっているかは自分で決めた通りなのだから、
調べるまでもない(思い通りになっているかを確認することはあるが)。
0594デフォルトの名無しさん2008/04/05(土) 19:05:01
自分で決めても見つからないとエラー出たら見るしかない。
今回はこのパターン。
0595デフォルトの名無しさん2008/04/05(土) 19:12:33
>>593-594
ほぅほぅわかりやすい。
勉強になりました。
0596デフォルトの名無しさん2008/04/05(土) 19:16:48
うぁっ、C++呼び出しの人まだやってる、C++使えないのなら無理して使うなよwww
一応コマンドラインに落ちなくても全部IDE上でできるが
詳しい知識がないと、VSのバージョンが上がったら手が付けられなくなるぞ。
0597デフォルトの名無しさん2008/04/05(土) 19:20:54
手が付けられへんってどんだけレベル低いねん。
0598デフォルトの名無しさん2008/04/05(土) 19:23:07
あれのレベルの低さは見ての通りじゃん、どう考えても相互運用コードが作れるレベルじゃない。
説明した通りに書かせればその分についてのみは動くだろうけど
0599デフォルトの名無しさん2008/04/05(土) 19:26:52
無理して、…っていうか興味を持ったからです。
一度動いてからわからないものを調べて学ぼうと思っただけです。
今日はこれをやるって決めたんです!
0600デフォルトの名無しさん2008/04/05(土) 19:28:58
>>599
まずはC++のリンクの仕組みを確り勉強するといいよ、いきなり吹っ飛ばしてC#とリンクとか無茶だから。
0601デフォルトの名無しさん2008/04/05(土) 19:30:29
まずはアセンブラからだな。
0602デフォルトの名無しさん2008/04/05(土) 19:31:10
まずは機械語からだな。
0603デフォルトの名無しさん2008/04/05(土) 19:31:33
>>601
そこまで行かなくてもいいと思うけど、LIBの仕組みDLLの仕組み程度は知っておいて欲しい。
0604デフォルトの名無しさん2008/04/05(土) 19:31:43
お前らどんだけ博識なんだよバカ
0605デフォルトの名無しさん2008/04/05(土) 19:32:18
呼び出し規約って機械語レベルの話だからなぁ。若い人は辛いだろう。
0606デフォルトの名無しさん2008/04/05(土) 21:14:06
とはいっても個々の呼び出し規則の詳細が必要になることなんて少なくなったから、
いろいろあるんだぐらいに思っとけばいいだろう。
0607デフォルトの名無しさん2008/04/05(土) 21:22:02
スタックの積み方と後始末の責任の所在程度の違いだから難しくないと思うが
0608デフォルトの名無しさん2008/04/05(土) 21:27:05
うんまあ、むしろその程度のことを理解するのに苦労した粗雑な頭の自分を語ってるように聞こえるね。

ついでに、「自分以外・自分の世代以外は全員馬鹿」っていうのは
濡れ落ち葉族のオッサンのセリフみたいで惨めだなw
0609デフォルトの名無しさん2008/04/05(土) 21:29:05
そんなにくやしかったのか
0610デフォルトの名無しさん2008/04/05(土) 21:29:18
うん
0611デフォルトの名無しさん2008/04/05(土) 21:36:11
using 赤い彗星 = System.Char;
0612デフォルトの名無しさん2008/04/05(土) 21:49:25
using 浅野忠信の嫁 = System.Char;
0613デフォルトの名無しさん2008/04/05(土) 21:56:37
using ギタリスト = System.Char;
0614デフォルトの名無しさん2008/04/05(土) 22:11:16
それVBのコードとしても変じゃないか?
VBとc#のあいのこのつもりか?w
0615デフォルトの名無しさん2008/04/05(土) 22:13:18
どれもコンパイル通るよ
0616デフォルトの名無しさん2008/04/05(土) 22:16:20
通してなんになるのかって話ではあるけどなw
0617デフォルトの名無しさん2008/04/05(土) 22:43:59
仕事でJava覚える必要が出てきたが、C#と大体同じなのだろうか・・・?
0618デフォルトの名無しさん2008/04/05(土) 22:47:33
C#にあってJavaにない機能を把握するだけ
0619デフォルトの名無しさん2008/04/05(土) 23:06:19
じゃあJavaからC#に移るときは?
0620デフォルトの名無しさん2008/04/05(土) 23:09:32
>>618
0621デフォルトの名無しさん2008/04/06(日) 00:00:03
基本ができてればどんな言語使っても関係無いだろ
0622デフォルトの名無しさん2008/04/06(日) 00:09:48
そうだけどJavaのジェネリクスだけはどうしても許せない
0623デフォルトの名無しさん2008/04/06(日) 00:15:07
Javaだったらエクリプスで開発するんか
0624デフォルトの名無しさん2008/04/06(日) 00:18:18
スレタイ嫁
0625デフォルトの名無しさん2008/04/06(日) 01:11:05
シングルスレッド内のForm間でメッセージ送るときってどうやるんですか?
二つのformが表示されていて、一つのformが他方のformに
おれはこんな処理やったよってのを知らせたい。
0626デフォルトの名無しさん2008/04/06(日) 01:26:57
イベント
0627デフォルトの名無しさん2008/04/06(日) 01:30:31
どうもです。イベントでやってみます。
0628デフォルトの名無しさん2008/04/06(日) 02:14:31
ポインタを伴うWin32APIの呼び出し方が解りません。VB.NETでは

Module Module1
Friend Declare Unicode Function LoadLibraryW Lib "kernel32.dll" (ByVal lpLibFileName As String) As Integer
Friend Declare Function FreeLibrary Lib "kernel32.dll" (ByVal hModule As Integer) As Integer
Sub Main(ByVal Args() As String)
Dim hModule As Integer = LoadLibraryW("C:\WINDOWS\Resources\Themes\Luna\luna.msstyles")
(以下略)
でhModuleにハンドルが入りますが、C#で同じように

class Program {
[DllImport("kernel32.dll")]
internal static extern int LoadLibraryW(string lpLibFileName);
[DllImport("kernel32.dll")]
internal static extern int FreeLibrary(int hModule);
static void Main(string[] args) {
int hModule = LoadLibraryW(@"C:\WINDOWS\Resources\Themes\Luna\luna.msstyles");
(以下略)
としても必ず失敗(0)してしまいます。原因は何でしょうか。
0629デフォルトの名無しさん2008/04/06(日) 02:19:40
GetLastErrorを取得して見る。
0630デフォルトの名無しさん2008/04/06(日) 02:22:28
ポインタ・ハンドルはIntPtr
DllImportのCharSet
0631デフォルトの名無しさん2008/04/06(日) 03:18:25
class Program {
[DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
internal static extern int LoadLibraryW(string lpLibFileName);
[DllImport("kernel32.dll")]
internal static extern int FreeLibrary(int hModule);
[DllImport("kernel32.dll")]
internal static extern int GetLastError();
static void Main(string[] args) {
int hModule = LoadLibraryW(@"C:\WINDOWS\Resources\Themes\Luna\luna.msstyles");
if (hModule == 0) {
int Err = GetLastError();
Console.WriteLine("ロード失敗: {0}",Err);
(以下略)
>>629-630
遅レスすみません、ありがとうございます。

エラー&H7Eから、ファイルのロードそのものに失敗していたようです。
明示的にUnicodeを指定してintのまま実行すればロード/解放、共に成功しました。

しかしIntPtrにすると「hModule == 0」で『演算子 '==' を 'System.IntPtr' と 'int' 型のオペランドに適用することはできません。』となり実行出来ませんでした。
0632デフォルトの名無しさん2008/04/06(日) 03:22:09
IntPtr.Zero
0633デフォルトの名無しさん2008/04/06(日) 03:30:46
if (hModule == IntPtr.Zero) {

>>632
出来ました、ありがとうございます。

VB.NETとC#は方言の関係と思っていましたが、実際はかなり違うのですね…精進します。
0634デフォルトの名無しさん2008/04/06(日) 03:33:40
>>633
[DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
internal static extern int LoadLibrary(string lpLibFileName);

でいいよ。
0635デフォルトの名無しさん2008/04/06(日) 03:34:15
[DllImport("kernel32.dll")]
internal static extern int LoadLibrary(string lpLibFileName);
0636デフォルトの名無しさん2008/04/06(日) 03:34:51
その場合は CharSet = CharSet.Auto のほうがいい。
0637デフォルトの名無しさん2008/04/06(日) 13:00:05
コレクション初期化子ってICollectionとかIDictionaryとか関係なくて
Addという名前のメソッドを呼び出すだけなのか
引数の数も自由でかなり変態的な使い方ができそう
0638デフォルトの名無しさん2008/04/06(日) 16:22:07
フリーウェアだけど、オンラインで公開する場合、
ドボンとかのサンプルをコピペした場合何か断りみたいなのいるのかな?

ソースを見たらバレバレなので黙って使っていいのか悩んでいます。
0639デフォルトの名無しさん2008/04/06(日) 16:37:10
どうせそれも元々MSDNとかその他から引っ張ってきたものが殆どだし
勝手に使っちゃだめだったら何のために公開してるのかわからん
0640デフォルトの名無しさん2008/04/06(日) 16:38:57
>>638
ライセンスに関する記述無いな。どうしても心配ならメール送ってみな
0641デフォルトの名無しさん2008/04/06(日) 17:24:02
サンプルっていうのは「考え方」のサンプルであって
コピペしてそのまま使うなんてナンセンスだろw
0642デフォルトの名無しさん2008/04/06(日) 20:39:21
staticの使い方で質問があります。

Class1にある値を返すメソッドがあります。

例1:
public string Hoge(){...}

メインフォームで
Class1 class1 = new Class1();
string s = class1.Hoge();

例2:
public static string Hoge(){...}

メインフォームで
string s = Class1.Hoge();

どちらが正しい使い方なのでしょうか?
0643デフォルトの名無しさん2008/04/06(日) 20:40:56
どちらも間違ってないけど,フィールドが必要なら特別な理由がない限り迷わず前者
0644デフォルトの名無しさん2008/04/06(日) 20:52:47
>>643
フィールドとはボタンなどのコントロールのことでしょうか?
Class1はstringの値を返すHogeメソッドだけです。
複数回呼ぶことがあります。
staticをつけている方がメモリの確保など無駄なパフォーマンスがなくて
良さそうかなと思ったのですが、普通は前者なんですね。
0645デフォルトの名無しさん2008/04/06(日) 20:55:09
よく分からないうちは,staticを付けた変数は使わないものと思っておk
0646デフォルトの名無しさん2008/04/06(日) 20:57:28
>>640
あのコードに独創性を垣間見たんですね、わかります
0647デフォルトの名無しさん2008/04/06(日) 22:09:24
C#にはフィールドなんてない。
0648デフォルトの名無しさん2008/04/06(日) 22:10:56
staticとかってooの理想概念から外れてるよね。
staticメソッドばっかりになったらCで書いてるのと変わらないし。
ここら辺がoopの限界なのかな。
そろそろ次の新しい概念出てきてもいい頃だな。
0649デフォルトの名無しさん2008/04/06(日) 22:20:15
>>647
お前は何を言ってるんだ
0650デフォルトの名無しさん2008/04/06(日) 22:24:45
>>647
C#にフィールドはあるんだよ。
0651デフォルトの名無しさん2008/04/06(日) 22:30:24
ごめん間違った、フィヨルドだったわ
0652デフォルトの名無しさん2008/04/06(日) 22:32:31
>>648
制限付きのクラスオブジェクトと考えれば別に不自然とも思えないけど
0653デフォルトの名無しさん2008/04/06(日) 22:33:22
おもろない
0654デフォルトの名無しさん2008/04/06(日) 22:42:32
>>652
クラス名の飾りがついただけのグローバル関数/変数とも考えられる
0655デフォルトの名無しさん2008/04/06(日) 22:42:47
この違いってなんでしょう?
下の方だとエラーになるのです

Color.FromArgb(int.Parse((string)new object[]{"-1"}));
Color.FromArgb((int)new object[]{"-1"});
0656デフォルトの名無しさん2008/04/06(日) 22:45:09
上もエラーになるよ
06576552008/04/06(日) 22:53:16
理由がわかりました
すいません
0658デフォルトの名無しさん2008/04/06(日) 23:58:36
>>652
オブジェクト指向って実世界の”モノ”とは到底かけ離れてるよね?
でもそれに近い概念でインスタンス化させてるのに、staticメソッドはそのまま使えたりしたらなんだかなぁと思う。
よくMathクラスなんかもインスタンス化した方が不自然だ、とか言われるけど
intやifですらオブジェクトと見なそうという言語や思想がある中でとっても違和感を感じずにはいられない。
0659デフォルトの名無しさん2008/04/07(月) 00:16:58
引数だけで結果が決まるならインスタンスは無意味でしょ
0660デフォルトの名無しさん2008/04/07(月) 00:20:32
それはstaticの意味、用途が分かっていないんだと思うが
0661デフォルトの名無しさん2008/04/07(月) 00:52:31
double d = -1.0;などとして、
d.sin()とかd.abs()とかだったら、なんてことは俺も考えたことある。
0662デフォルトの名無しさん2008/04/07(月) 01:23:14
拡張メソッドはリフレクション使えないから駄目とか?
0663デフォルトの名無しさん2008/04/07(月) 09:21:22
「フィヨルドの恋人」
     主演:大泉洋
0664デフォルトの名無しさん2008/04/07(月) 09:43:47
すみません、SourceGridというグリッドコントロールを使ってプログラムを作っているのですが、
コントロールの初期化について分からないことがあるので教えてください。

プログラムの構成は、ひと月ごとにその月のすべての日の行をグリッド上に表示していくような感じです。
現在表示すべき(グリッドが描画時に情報として用いる)年/月は、staticな変数に記録して管理しています。
ここで、そのstaticな変数を変化させてみても
(たとえば2008/4の状態から、ひと月前の状態にして2008/3とする)、
変数自体は変化するもののフォーム上のグリッドの表示に変化は見られません。
Update()なども試みてみましたが、反応なしです。

このような場合、どうすればグリッドの表示を更新することができるでしょうか?
0665デフォルトの名無しさん2008/04/07(月) 09:53:41
こんにちは。
エクスプローラーのリストビューのタイプの変更を行いたく思い、少し調べているのですがよくわからない部分があるので質問させてください。

http://yokohama.cool.ne.jp/chokuto/urawaza/lv_icon.html
を読んでタイプの変更は出来そうなのですがWindows Vistaの特大アイコンなどはどのようなメッセージを送ればいいのかわからないのです。
ヒント等ご教授戴ければ幸いです。
0666デフォルトの名無しさん2008/04/07(月) 13:27:25
>>664
>現在表示すべき(グリッドが描画時に情報として用いる)年/月は、staticな変数に記録して管理しています。

これほんと?
これだと複数コントロール貼って使う場合とかにまずいからこういう設計にしないと思うんだけど。
何か勘違いしてない?俺が作るとしたらプロパティで実装するけどなぁ。
0667デフォルトの名無しさん2008/04/07(月) 13:49:34
・あるクラスA,B,Cが内部クラスを持っていて、
その内部クラスのフィールド変数の品揃えは未定だけど、
フィールド変数を使っての処理は決まっている。

・クラスA,B,Cごとに内部クラスの品揃えに違いがある。

このような場合、どうしたらすっきりした実装ができますか?
0668デフォルトの名無しさん2008/04/07(月) 14:20:41
A,B.Cは最低限の共通のフィールドを持っていて,それらに対して
共通の処理を行うならプロパティを宣言したインターフェイスを作ってA,B,Cに実装する
処理の目的だけが決まっていて,フィールドをどう使うかはA,B,Cそれぞれで全く違うんだったら
その処理を行うメソッドをインターフェイスに宣言してそれをA,B,Cが実装する形にすれば
きれいかもしれないけど実装の手間は変わらん
06696672008/04/07(月) 14:41:39
>>668
提案ありがとうございます。

難しいですね。。。
フィールドに抽象メンバなるものを持てて、
抽象メンバ取り出しメソッドみたいなものがあって、
取り出したメンバにたいしてforeachをかける

みたいな実装できたらよかったのですが。。。
06706672008/04/07(月) 15:04:25
private権限でunion配列を用意し、
値そのものはこの配列に格納することにする。
フィールドのプロパティでその配列にアクセスするようにする。
実際の処理は、配列に対して行なう。
(クラスによってその配列の長さは異なる。)

で実現できそうです。
06716652008/04/07(月) 16:46:06
>>666
ご返答ありがとうございます。
OOPは初めてなので、きっと勘違いしていると思います。

そのようなプロパティ実装をした非static変数は、
各メソッド内でインスタンス生成してから用いると認識していますが、その場合、
たとえばグリッドコントロールが今表示している年/月を取得したりすることはできるのでしょうか?
それとも、グリッドを配置しているFormのクラス内に、
プロパティ実装した変数をフィールドとして用意するのでしょうか?
後者は、とりあえず試みてはみたものの、やはり変数をいじってもグリッドに変化が見られません。
06726642008/04/07(月) 16:48:07
>>671の名前欄のレス番を間違えました orz
汚してしまいすみません。
0673デフォルトの名無しさん2008/04/07(月) 17:55:48
this.textBox1.Text = a;//aはフィールド
a = "変更した";
もしかしてこれで変更できると勘違いしてない?
06746642008/04/07(月) 18:02:29
>>673
思いっきりしてます!
正しくはどうすればよいのでしょうか・・・?
0675デフォルトの名無しさん2008/04/07(月) 18:34:12
>>674
string _str;
public string Str {
  get { return _str; }
  set
  {
   sourceGrid.DateTime = value;
   _str = value;
  }
}

こんな感じのことがしたいの?

取得ってのは普通に
var value = souceGrid1.DateTime;
とかでいいと思うんだけども。
ソースグリッドとかいうものを使ったことないから分からんけど。
06766752008/04/07(月) 18:42:07
あーそうか。もしかしてソースグリッドの表示年月の変更って
プロパティじゃなくてメソッドかなんかでやってんのかな?

sourceGrid.SetMonth(value);

こんな感じで。
プロパティでなんかありそうだけどね。
面倒だがちょっと導入して試してみるか。
06776752008/04/07(月) 18:47:07
と思ったが、ユーザー登録が必要だということで面倒だからやめた。

とりあえず>>664はソースグリッドコントロールの年/月を取得もしくは設定しようとしている部分の
コードを晒してくれ。
取得ができないような設計にはなってないと思うんだ。
0678デフォルトの名無しさん2008/04/07(月) 19:27:02
XmlDocument xml = new XmlDocument();
xml.Load(url);

xml["abc"]というノードがあるのか調べるにはどうしたら良いのでしょうか?

06796642008/04/07(月) 19:48:19
>>675さんのお話を聞くと、自分のコーディングの方向性が
根本的に間違っているような気がしてきました・・・。
ここに書き込む前は、以下のような方法で実現しようとしていました。

namespace下に以下のようなクラスを作成し、
    public class CurrentYearAndMonth
    {
        public static int cYear;
        public static int cMonth;
        public static int cMonthDaysCount;      
        public static void SyncYM()
        {
            DateTime dtNow = DateTime.Now;
            cYear = dtNow.Year;
            cMonth = dtNow.Month;
            cMonthDaysCount = DateTime.DaysInMonth(cYear, cMonth);
        }
    }
これに対して、グリッドを配置しているFormのForm_Loadメソッド内で、
簡潔に書くと以下のように上記の変数を使っています。
            for (int r = 1; r <= CurrentYearAndMonth.cMonthDaysCount; r++)
            {
                grid1.Rows.Insert(r);
                grid1[r, 0] = new SourceGrid.Cells.Cell(CurrentYearAndMonth.cMonth.ToString() + "月" + r.ToString() + "日");
   }
この状態で、Load完了後にcMonthなどの変数値をいじってFormやgrid1をUpdate()などしてみると、
UI上の表示も変化するかなと目論んでいたんですが、やはり間違っているのでしょうか?

(ちなみに、SourceGridは
ttp://sourceforge.net/project/downloading.php?group_id=178155&use_mirror=nchc&filename=SourceGrid4_11.zip&38810142
からダウンロードできます。)
06806642008/04/07(月) 19:50:46
追記です。
CurrentYearAndMonth内のSyncYM()メソッドは、OSの現在時刻と合わせるためのもので、
プログラム起動時のみ1度だけ使用しています。
06816782008/04/07(月) 19:54:29
自決
0682デフォルトの名無しさん2008/04/07(月) 20:00:02
以降はチラシの裏に書けよw
0683デフォルトの名無しさん2008/04/07(月) 20:01:52
>>679
コントロールに値を渡した後は元の変数とは何の関係もなくなるから
更新するときは毎回全部設定しなおす必要がある
それと,フィールドをstaticにするのは誰がどう見ても間違い
0684デフォルトの名無しさん2008/04/07(月) 20:04:25
>>665をお願いします...
0685デフォルトの名無しさん2008/04/07(月) 20:32:25
どう見てもC#の質問に見えないからスルーされたんだろ。
06866642008/04/07(月) 21:00:58
>>683
なるほど。そうでしたか。

試行錯誤の結果、
     <変数値変更>
     this.Controls.Remove(grid1);
     grid1 = new SourceGrid.Grid();
     grid1.Refresh();
     this.Controls.Add(grid1);
     <grid1の表示調整>
     <Form1_Load メソッドでgrid1に対して行われるのと同等の処理>
というような流れで、無事初期化・表示更新を行うことができました。
staticについても見直してみます。

貴重なお時間を割いてアドバイスいただき、本当にありがとうございました。
0687デフォルトの名無しさん2008/04/07(月) 21:36:31
>>685
そうでしたか。ごめんなさい。
0688デフォルトの名無しさん2008/04/07(月) 21:44:54
>>678
ノードっつっても色々あるがどのノード?
あとxml["abc"]じゃなくてabcを調べたいんだよな?
0689デフォルトの名無しさん2008/04/07(月) 22:05:21
>>678
XPathで一発でいけるとおもうけど
0690デフォルトの名無しさん2008/04/07(月) 22:22:26
C#でグラフを作りたいのですが、C#だと0 , 0で基点が左上になりますが、
これを一般的なグラフのように左下にして、簡単に座標をイメージできるように
したいですが、どのようにすればいいのでしょうか?
0691デフォルトの名無しさん2008/04/07(月) 22:29:37
一般論で言うと、座標変換かける。
0692デフォルトの名無しさん2008/04/07(月) 22:31:12
描画Y座標 = Y=0の座標 - Y
0693デフォルトの名無しさん2008/04/07(月) 22:33:32
Graphics.MultiplyTransform
0694デフォルトの名無しさん2008/04/07(月) 22:41:32
>>692-693
参考になりました。
0695デフォルトの名無しさん2008/04/08(火) 16:17:59
delegateの宣言って、なんで型のあとにID?をつけなくちゃいけないの?
C関数の宣言みたいに型だけじゃいけない理由って?
0696デフォルトの名無しさん2008/04/08(火) 16:23:15
"\u3042\u3044\u3046\u3048\u304A"+"aaaaaaaa'bbb'ccc"
を
あいうえおaaaaaaaa'bbb'ccc
という文字列として処理したいのですがどのようにすればよいでしょうか?
0697デフォルトの名無しさん2008/04/08(火) 17:21:00
>>695
IDってデリゲート名のことか? デリゲートも型なんだから名前必須なのは当然だが。

>>696
その記述なら普通にそうなるとおもうが。
06986962008/04/08(火) 17:38:37
>>697
書き方が悪かったですすいません。
"\u3042\u3044\u3046\u3048\u304A"+"aaaaaaaa'bbb'ccc"
を受け取ったときに
あいうえおaaaaaaaa'bbb'ccc
という文字列として処理したいのですがどのようにすればよいでしょうか?
ということでした。言葉足らずですいません。
0699デフォルトの名無しさん2008/04/08(火) 17:52:14
"\\u3042\\u3044\\u3046\\u3048\\u304A" を "あいうえお" にしたい、
ということか?
0700デフォルトの名無しさん2008/04/08(火) 18:56:20
string str = "\u3042\u3044\u3046\u3048\u304A"+"aaaaaaaa'bbb'ccc";
これでstrに対して処理すればいい
07016962008/04/08(火) 19:58:18
>>699,700
回答ありがとうございます。
JScriptのEvalで自己解決しました。
0702厨(2年)房2008/04/08(火) 20:44:35
質問です
ttp://ufcpp.net/study/csharp/
↑でC#について勉強しているのですが、関数の部分が難しくてわかりません。
もうすこしやさしく解説してるところをおしてください
0703デフォルトの名無しさん2008/04/08(火) 20:45:27
ジャスダック株って銘柄名なに?
07047032008/04/08(火) 20:46:03
誤爆ったスマソ
0705デフォルトの名無しさん2008/04/08(火) 21:43:21
>>702
えっと、リアル中二だから、sin 関数が分からないって意味?

別に sin ってもの分からなくても、C# の関数定義の仕方としてはそのページで十分分かると思うんだが。
0706デフォルトの名無しさん2008/04/08(火) 22:02:22
>>697
delegate void MyDelegate(int x);
↑この"x"って事です。
0707デフォルトの名無しさん2008/04/08(火) 22:07:08
>>706
それは引数。
delegate void MyDelegate(string str);
とかでも当然良い。
0708デフォルトの名無しさん2008/04/08(火) 22:09:24
デリゲートって関数ポインタの配列みたいなもんですか?
0709デフォルトの名無しさん2008/04/08(火) 22:12:54
大体そんなもん。
それよりは高級だけど。
0710デフォルトの名無しさん2008/04/08(火) 22:13:08
>>707
Cだとfunction(int)やfunction(stirng)のように引数の名前を省略できるが、
C#のデリゲートはなぜできないのかと695は聞いているのだと思う。
0711デフォルトの名無しさん2008/04/08(火) 22:36:15
VS の補助で引数名が出てくるようにするためか、
構文解析の都合かかね。
0712デフォルトの名無しさん2008/04/08(火) 22:46:47
>>697>>707
void Hoge(int) {} とか書くと、
")"に赤い波線が出て「IDがありません。」というエラーになる
だから、非常に分かりにくいけど間違いではない
0713デフォルトの名無しさん2008/04/08(火) 22:49:02
>>710
型パラメータを使いたいならこっち使えばいいだけの話。

Action<string>
Func<string>
0714デフォルトの名無しさん2008/04/08(火) 22:49:49
こんばんわ
�@現在の画面のハードコピーを取得
�Aそれをプレビューで開いて
�B所定のフォルダにbmpで保存(取り直し可で、取り直しを選択した場合は保存されない)

こんなプログラムを作ろうと思ってい
0715デフォルトの名無しさん2008/04/08(火) 23:02:42
そうですか
作ってください
0716デフォルトの名無しさん2008/04/08(火) 23:21:01
>>715
他に今やる事/やりたい事は無かったのか?
0717デフォルトの名無しさん2008/04/08(火) 23:37:34
こんばんわ 
�@現在の画面のハードコピーを取得 
�Aそれをプレビューで開いて 
�B所定のフォルダにbmpで保存(取り直し可で、取り直しを選択した場合は保存されない) 

こんなプログラムを作ろうと思っています。
だれか作ってください。
0718デフォルトの名無しさん2008/04/08(火) 23:38:49
    ブ―――ッ!!
 /     ヽ
-―ニ二二二二ニ>、
ァ  /ィ=-_ _ト-、)
( Y ー==j〈二゙i )
ゝ i - r ヾ"^j )。
(  )  `- ≦三。゚・
ゞ ∧ヾ ゝ゚  ≦三゚。
(_/ ヽ゚≧    三=-
/|ヽ \ァ    ≧-
 | \ イレ、   >=
 |  ≦Vヾ  ヾ≧
 〉 く。゚/。イハ 、、ミ。゚
0719デフォルトの名無しさん2008/04/08(火) 23:40:16
>>717
言い出しっぺの法則
0720デフォルトの名無しさん2008/04/08(火) 23:51:16
フリーソフトでいっぱいあるので作りたくありません
0721デフォルトの名無しさん2008/04/09(水) 00:28:29
>>713
なんでそんな素っ頓狂な回答するの?
0722デフォルトの名無しさん2008/04/09(水) 01:20:22
>>706
>>710の補足をすると、C#のデリゲートはタイプセーフなので引数と戻り値の型が
一致しないとデリゲートを追加できないようになっている
>>713は意味分からんから誰か解説してくれ
0723デフォルトの名無しさん2008/04/09(水) 01:43:02
>>695
型だけだと引数の意味がわからないからだろ。

void DrawLine(int, int, int, int)
↓
void DrawLine(int x1, int y1, int x2, int y2)


0724デフォルトの名無しさん2008/04/09(水) 01:56:32
>>723
宣言に意味を持たせる必要ないだろ
0725デフォルトの名無しさん2008/04/09(水) 02:43:10
>>724
意味を持たせたい場合と持たせたくない場合、両方あると思うけどな。

Func<int> 見たいなのの場合は、void → int の写像であることだけを示したいけど、
EventHandler みたいなのは、引数にも意味を持たせたい。
0726デフォルトの名無しさん2008/04/09(水) 09:18:29
EventHandlerは例が悪いだろw senderとeで固定だから
0727デフォルトの名無しさん2008/04/09(水) 11:31:34
textboxの↑と↓キーの動作を無効化したいのですがこのようなやりかたでいいのでしょうか?
        protected override bool IsInputKey(System.Windows.Forms.Keys keyData)
        {
            if ((keyData == Keys.Up) || (keyData == Keys.Down))
            {
                KeyEventArgs e = new KeyEventArgs(keyData);
                OnKeyDown(e);
                return false;
            }
            return base.IsInputKey(keyData);
        }
KeyUpイベントは使わないのでいいかなと思ったのですが、
少し気持ち悪いので他に↑↓キーの動作を他に無効にする方法があればよろしくお願いします。
0728デフォルトの名無しさん2008/04/09(水) 12:17:44
>>725
だったらなおさら省略出来た方がいいだろ。
C/C++だってプロトタイプ宣言は省略するじゃん。
0729デフォルトの名無しさん2008/04/09(水) 12:28:13
ごめん俺省略しねーわ
0730デフォルトの名無しさん2008/04/09(水) 12:35:48
しらねーよ
0731デフォルトの名無しさん2008/04/09(水) 13:11:35
俺はCの宣言は全省略するわ
デリゲートだと省略できないのは冗長だとおもう
てか「冗長じゃない」って反論する人っているの?
0732デフォルトの名無しさん2008/04/09(水) 15:17:40
冗長性がとくに必要なのは複数で開発したり、コード書いた本人以外がコード読むとき。
一人でコード書いてるやつが冗長だとか言ってるのみると笑える。
0733デフォルトの名無しさん2008/04/09(水) 15:23:32
>>732
そういう話題じゃないだろw
0734デフォルトの名無しさん2008/04/09(水) 15:28:14
省略できない理由がないってことは
C#4.0では省略できるようになりそうだね
0735デフォルトの名無しさん2008/04/09(水) 15:31:14
>>732
が省力できない理由でしょう。
0736デフォルトの名無しさん2008/04/09(水) 15:36:42
趣味で書いてる人には理解できないと思うよ。
デスマーチ経験したことないだろうから。Cでも省略してるバカPGがいたら発狂する。
0737デフォルトの名無しさん2008/04/09(水) 15:40:16
趣味で書いてるけど、かなり冗長なコード書いてる
省略すると、なんかだらしない感じがするのでカチっと書いてます
0738デフォルトの名無しさん2008/04/09(水) 15:44:07
自分で書いたコードでさえ次の日になると何してる処理か分からなくなる。
コメントや命名は手を抜くとあとで困る。
07396962008/04/09(水) 15:45:44
1行ごとにコメント付けていったら余計スパッゲティになった。
0740デフォルトの名無しさん2008/04/09(水) 15:46:39
 
0741デフォルトの名無しさん2008/04/09(水) 15:47:51
デリゲート宣言の引数の変数省略すると何がわからなくなるの?
0742デフォルトの名無しさん2008/04/09(水) 15:49:28
>>736
コメントで説明するために識別子をつけるってこと?
0743デフォルトの名無しさん2008/04/09(水) 15:49:53
引数の変数の意味。きみはもしかしてエスパー?
0744デフォルトの名無しさん2008/04/09(水) 15:51:59
あれじゃないかな。自分が知ってることは、相手も知っていると勘違いしてしまう病気。
だから冗長に思えるんだよ。
0745デフォルトの名無しさん2008/04/09(水) 15:54:04
基本って大事だよね
0746デフォルトの名無しさん2008/04/09(水) 15:54:12
デリゲート宣言で引数の意味なんて要らないだろww
そういうのは実際に使うときに使えww
0747デフォルトの名無しさん2008/04/09(水) 15:54:56
>>744
だよね。
>>736なんかは自分がなんでも知ってるみたいに発狂する病気なんだろうね。
0748デフォルトの名無しさん2008/04/09(水) 16:00:02
>>746
バカだな。引数の意味がいらないなら、そのデリゲート宣言は無駄な宣言だろう。
意味づけするために宣言するのに何言ってんだ?
0749デフォルトの名無しさん2008/04/09(水) 16:01:42
>>747
いいえ、 >>736 を支持した発言です。勘違いしないでください。
0750デフォルトの名無しさん2008/04/09(水) 16:02:07
>>748
デリゲート宣言が無駄とかw
だったら受け取る側はどうやって型判別するの?
宣言時の引数の変数は無駄だけど、宣言自体は必要。
0751デフォルトの名無しさん2008/04/09(水) 16:05:54
随分、頭の悪いバカが湧いてるな。
0752デフォルトの名無しさん2008/04/09(水) 16:07:18
>>750
宣言時に引数の用途、意味が決まってないのか?それ糞コードだろ。
0753デフォルトの名無しさん2008/04/09(水) 16:07:52
発狂してる>>736とかなw
0754デフォルトの名無しさん2008/04/09(水) 16:08:42
いつも人を発狂させてるバカPG乙。
0755デフォルトの名無しさん2008/04/09(水) 16:13:07
デリゲート宣言省略を否定された人が沢山のCO2を排出するスレですか?
0756デフォルトの名無しさん2008/04/09(水) 16:14:41
宣言厨そろそろうぜーよ
0757デフォルトの名無しさん2008/04/09(水) 16:18:20
>>750
宣言時に引数の用途、意味が決まってないのか?答えれないのか?
無理に答えろとは言わんが。
0758デフォルトの名無しさん2008/04/09(水) 16:20:38
今から面白い事言いまーす
↓
0759デフォルトの名無しさん2008/04/09(水) 16:21:02
下痢デート
0760デフォルトの名無しさん2008/04/09(水) 16:21:21
デリケートな問題なのでコメントを控えます
0761デフォルトの名無しさん2008/04/09(水) 16:22:16
さすがに引数の意味が違うのなら、引数の型が同じでもdelegate名を変えるだろ。
引数の型が同じだからという理由で流用してるなら、ただのアホだろ。
0762デフォルトの名無しさん2008/04/09(水) 16:22:51
>>760
宣言してから言えよ…せっかく面白いのに
0763デフォルトの名無しさん2008/04/09(水) 16:24:30
>>761
発狂君空気嫁よ
0764デフォルトの名無しさん2008/04/09(水) 16:25:41
そういうことか。流用してるのか、省力できないと困るもんな。
バカPG認定します。
0765デフォルトの名無しさん2008/04/09(水) 16:27:18
むごい自演だな。
0766デフォルトの名無しさん2008/04/09(水) 16:28:23
生暖かく見守ってください。
0767デフォルトの名無しさん2008/04/09(水) 16:31:35
とにかくヘジらしい仕様だからいいじゃん。
0768デフォルトの名無しさん2008/04/09(水) 16:33:51
省力ww
0769デフォルトの名無しさん2008/04/09(水) 16:36:55
反論されるとすぐ逆切れする人がいるみたいだね。
0770デフォルトの名無しさん2008/04/09(水) 16:41:08
で、リゲートって何?
Re-gateという文字からは門、入り口に再入させるとかそんな感じだよな。
リエントラントと何か関係あったりするの?
0771デフォルトの名無しさん2008/04/09(水) 16:46:10
http://dic.yahoo.co.jp/dsearch?p=delegate&dtype=1
del・e・gate
1 代理者[人]

あと、プログラミング一般では移譲と訳される。
0772デフォルトの名無しさん2008/04/09(水) 16:52:50
プロトタイプ宣言ってコンパイラに知らせるだけの役割しかないと思うけど。
関数の仕様を見るときにヘッダ見るよりcppファイル読んだ方がいいと思うし。
0773デフォルトの名無しさん2008/04/09(水) 17:01:35
それはコンパイラからの視点。
でも高級言語の場合は開発者の視点で言語仕様が決定されるべきでヘジはそうしている。
それに実装が公開されてないインタフェースだけのライブラリも多いし、
同時開発なんてよくある話で実装がまだ無い場合もあるから、
実装見たくても見れない場合は多々ある。
0774デフォルトの名無しさん2008/04/09(水) 17:10:03
実装見ればいいって、どんだけ遅れてるんだよ。
それともオブジェクト指向を否定したいのか?
0775デフォルトの名無しさん2008/04/09(水) 17:17:27
C#はヘッダファイル無いんだが…
0776デフォルトの名無しさん2008/04/09(水) 17:21:34
>>775
C/C++でヘッダファイル見てる人ってC#はどうしてるんだろうね
0777デフォルトの名無しさん2008/04/09(水) 17:23:22
(。-∀-)(-∀-。)ネー
0778デフォルトの名無しさん2008/04/09(水) 17:58:04
C#の関数でデフォルト引数はどのように書けばいいですか?
よろしくお願いいたします
0779デフォルトの名無しさん2008/04/09(水) 17:58:24
リフレクション使えよ。
0780デフォルトの名無しさん2008/04/09(水) 18:00:12
>>778
関数のオーバーロードを使用して書きます。
0781デフォルトの名無しさん2008/04/09(水) 18:18:50
バカがなんでも省略したがるのでデフォルト引数は禁止になりました。
0782デフォルトの名無しさん2008/04/09(水) 18:44:43
>>780
>>781
マジですか?
VBですらOptionalとかあるのに・・・
0783デフォルトの名無しさん2008/04/09(水) 18:54:28
>>782
それは「VBですら」じゃなくて負の遺産を相続してる「VBだから」でしょ。
実際VB.NETでもエクセルとか操る時以外使わないよ普通は。
0784デフォルトの名無しさん2008/04/09(水) 18:59:26
でも確かにデフォルト引数欲しいときあるよな
0785デフォルトの名無しさん2008/04/09(水) 19:12:38
オーバーロードで機能的には同じことできるし。
0786デフォルトの名無しさん2008/04/09(水) 19:16:05
構文糖衣だから無くす必要はなかったんじゃね
実装も簡単でしょ
0787デフォルトの名無しさん2008/04/09(水) 19:24:39
デフォルト引数がどんな害悪をもたらすのかしらんのか…
Effective C++くらい読んどけよ
0788デフォルトの名無しさん2008/04/09(水) 19:27:04
教えてくれよ。ここはC#スレだし。

ぐぐってみたんだけどわからなかった。
デフォルト引数 害悪の検索結果 6 件中 1 - 6 件目 (0.04 秒)
0789デフォルトの名無しさん2008/04/09(水) 19:30:28
ヘジがデフォルト引数についてなんか言ってたよな。ページが見つかんね。
0790デフォルトの名無しさん2008/04/09(水) 19:34:20
ヘジってなに?
0791デフォルトの名無しさん2008/04/09(水) 19:34:59
>>787
>>744
0792デフォルトの名無しさん2008/04/09(水) 19:35:16
C#を作った人。
0793デフォルトの名無しさん2008/04/09(水) 19:40:06
デフォルト引数、
VBのOptionalと比較する人多いけど、
VBの場合はさらに、名前付き引数渡しができたよな。
f(x = 0, y = 1) みたいな。

Optionalって、この名前付き引数との組み合わせで効果発揮するものだと思ってるんで、
そもそもこれがないC#には別に必要性感じないんだけどなぁ。
0794デフォルトの名無しさん2008/04/09(水) 19:44:50
>>788
有名なのは仮想関数と合わせて使うと思わぬ結果になる可能性があるということ。
class Base
{
public virtual void f(int x = 5) {}
}
class Derived : Base
{
public override void f(int x = 10) {}
}
Derived d = new Derived();
Base b = b;
d.f(); //xは10
b.f(); //xは5
仮にC++の規則をそのまま持ち込んだとすると、
呼び出すときのソース上の型でデフォルト引数を決めるのでこういうことになる。
0795デフォルトの名無しさん2008/04/09(水) 19:49:13
why doesn't C# have default value でググってみたら出てきた。
http://blogs.msdn.com/csharpfaq/archive/2004/03/07/85556.aspx


1つは、ユーザの書いたコードとcompiler-generatedコードの区別があいまいになるのが嫌。
(デフォルト値使うと、f(x)みたいな記述からf(x, 0)みたいなのが自動生成されるけど、
極力こういうコード自動生成はしたくないんだって。)
あと、XMLドキュメントコメントとインテリセンスで困るから辞めた。
というようなことが書いてあるな。
0796デフォルトの名無しさん2008/04/09(水) 19:57:07
継承したデフォルト引数の再定義なんかやったら絶対嵌る。
というかそこまでして省略したいのかと。
0797デフォルトの名無しさん2008/04/09(水) 20:05:29
----チラウラ----
IE7のFeedをAPIから扱えるらしいので、
試しにFeedのエクスポート/インポートプログラムを作ったら
標準でIEについてた\(^o^)/
俺アホすぎるorz
0798デフォルトの名無しさん2008/04/09(水) 20:05:39
省略とは関係ないだろ・・・
0799デフォルトの名無しさん2008/04/09(水) 20:09:42
大有りじゃん。バカかよ。
0800デフォルトの名無しさん2008/04/09(水) 20:13:59
質問してすぐ逆ギレするバカまた来てるのか。
0801デフォルトの名無しさん2008/04/09(水) 20:14:10
>>794
オーバーロードでも同じ事になるんじゃないの
0802デフォルトの名無しさん2008/04/09(水) 20:30:58
そんなバカな。ソースPlease.
0803デフォルトの名無しさん2008/04/09(水) 20:39:36
C#からreflectionを使ってvbで書かれたModuleの関数を呼び出す方法ってありますか?
0804厨(2年)房2008/04/09(水) 20:47:51
関数を使って入力された配列の値の平均を求めるプログラムを作る課題で作ったのだが
入力の最後にエラーが出ます。理由と修正するところと内容をおしえてください
using System;

class donarudo
{
static void Main()
{
int[] a = new int [5];
for (int i = 0; i < 5; ++i)
{
a[i] = int.Parse(Console.ReadLine());
}
int b = ave(a);
Console.Write("平均の値は{0}です", ave(a));
}
static int ave(int[] a)
{
int hei = a[1] + a[2] + a[3] + a[4] + a[5];
return hei;
}
}
0805デフォルトの名無しさん2008/04/09(水) 20:51:26
>>804
配列の要素は0からはじまる。
int[5]なら[0]から[4]までの四つ。
デバッグ機能は使えるように成っておいた方が良いよ。
0806デフォルトの名無しさん2008/04/09(水) 20:52:31
なんかいろいろおかしいんだが
0807デフォルトの名無しさん2008/04/09(水) 20:52:58
平均じゃなくて合計になってね?
0808デフォルトの名無しさん2008/04/09(水) 21:22:40
vb.netのRaiseEventsって、C#でどうやって書くの?
0809デフォルトの名無しさん2008/04/09(水) 21:27:46
イベントを関数っぽく呼び出せばいいよ
0810デフォルトの名無しさん2008/04/09(水) 21:35:21
>>803
C#から見れば単なるstaticクラス
0811デフォルトの名無しさん2008/04/09(水) 21:41:48
>>810
うーん、分かったような分からないような。
Reflection自体があまり触れた事が無いのも原因だけど、
Reflectionでとってきたクラスってモジュールに限らずインスタンス化できないんだね。

やりたかったことはできそうにも無いけど、ありがとうございます。
0812803です。2008/04/09(水) 22:06:00
すみません、
Assembly assembly = Assembly.LoadFile("アセンブリネーム");
Type classType = assembly.GetType("クラスネーム");
object o = Activator.CreateInstance(classType);
ってやって作ったやつをclassTypeの型にキャストする方法ってありませんか?

理想としては
classType型 classInstance = (classType型)Activator.CreateInstance(classType);
ってできれば最高なんですけど・・・
0813デフォルトの名無しさん2008/04/09(水) 22:07:47
Typeからその型のインスタンスの生成は可能。
でもモジュールはstaticクラスだからそもそもリフレクション関係なくインスタンス作れない。
0814デフォルトの名無しさん2008/04/09(水) 22:09:50
>>812
型を静的に解決できないから動的にロードしてるんだろ?

普通インターフェイスなり抽象クラスなり使う。
0815デフォルトの名無しさん2008/04/09(水) 22:31:52
話ずれるけどVS2008ってVS2005よりも重いですかね?
現在の環境だと2005でも入力中に処理待ちになったりするので
VS2008に移行するか迷ってます。
0816デフォルトの名無しさん2008/04/09(水) 22:33:16
甚だスレ違いだ。
0817デフォルトの名無しさん2008/04/09(水) 22:36:55
リフレクションの質問が続いてるから便乗するけど
リフレクション使ったこと無いんだけど使ったら例えばどんなことができるの?
0818デフォルトの名無しさん2008/04/09(水) 22:45:54
インテリセンスみたいなの。
0819デフォルトの名無しさん2008/04/09(水) 23:03:35
ごめん
それではよくわからない
0820デフォルトの名無しさん2008/04/09(水) 23:04:55
デバッガとかテストツールとか
0821デフォルトの名無しさん2008/04/09(水) 23:49:27
SusieみたいにDLLをフォルダに放り込むだけで機能するプラグインシステムとかね。
0822デフォルトの名無しさん2008/04/10(木) 00:55:03
>>815
Visual Studio 2008 Part 8
http://pc11.2ch.net/test/read.cgi/tech/1207063618/
0823デフォルトの名無しさん2008/04/10(木) 07:14:40
>>817
というかデザイナ周り基本全部リフレクションの上。間に一枚かんでるが。
使ってるだろ。ペタペタ張ってフォーム作ったりプロパティ設定したりするの。
0824デフォルトの名無しさん2008/04/10(木) 09:53:44
C#に関係ないかもしれないけど

マルチスレッドについて調べてたら出たんだけど、
ttp://msdn2.microsoft.com/ja-jp/magazine/cc163340.aspx
結局これって実装されたの?
VS2008で完全サポートっていってるのに参照を探してもないんだが
0825デフォルトの名無しさん2008/04/10(木) 11:05:16
そもそもVSでのサポートってのが何を指してるのか不明だが
Parallel FX Libraryは今のところまだCTPらしいな
0826デフォルトの名無しさん2008/04/10(木) 13:00:22
>>825
thx
これが.NET本体にのったらかなり楽にマルチスレッド対応できるんだがなぁ
4.0で乗るかな?
0827デフォルトの名無しさん2008/04/10(木) 13:29:44
多分、4.0 になると思うけど、4.0 の正式版がいつかは未定だったと。
0828デフォルトの名無しさん2008/04/10(木) 17:37:27
・ショートカットキーで起動
・ショートカットを登録

このような単純な機能を持つデスクトップランチャーを、C#初心者が作るとしたらどれ位時間がかかりますか?
作成に掛かる時間…というよりも、ランチャー作成自体の難易度がどのようなものか教えていただけると幸いです

C、Java、アセンブラは初歩を嗜んだ程度です
0829デフォルトの名無しさん2008/04/10(木) 17:55:06
>>828
.NETのクラスライブラリが直接サポートしている機能ではない。
P/InvokeかShell系COMインターフェイスをほにゃららする必要がある。
とりあえずあなたはそれをVC++あたりで作れたりするの?
0830デフォルトの名無しさん2008/04/10(木) 17:59:17
画像周りのプログラミングは殆どやっていないに等しいです
二行目の単語は両方意味すらわからない程度です
VC++でも作れません
0831デフォルトの名無しさん2008/04/10(木) 18:11:43
ディスクトップ系の軽量なユーティリティは.NET Frameworkで
作るには一番向いてない類のプログラムなんだよね。
.NET使えねーとかいってネガってる奴らはたいていこの手のツールを作ってたりする。
0832デフォルトの名無しさん2008/04/10(木) 18:13:02
disc
0833デフォルトの名無しさん2008/04/10(木) 18:13:55
ありがとうございます
最後に一つ質問なんですが、その軽量ユーティリティを作るのに適した言語、ソフトでオススメ無いでしょうか?
0834デフォルトの名無しさん2008/04/10(木) 18:20:42
VC++か互換のあるC++コンパイラ。つまりWin32APIやCOMの扱えるやつ。

Delphiの.NETではないやつ。かつてその手のツールが大量に作られた実績がある。
サンプルソースは手に入りやすいかもしれない。
0835デフォルトの名無しさん2008/04/10(木) 18:54:46
>>823
リフレクションを意図的に使用したことが無い人にも分かるように
できればもう少し詳しく・・・
0836デフォルトの名無しさん2008/04/10(木) 19:08:15
ここまでレスあって分からないなら無理。
おまえ全くドキュメント読んでないだろ。ふざけすぎ。
0837デフォルトの名無しさん2008/04/10(木) 20:04:35
PropertyGrid(またはVSのデザイナのプロパティウインドウ)はどうやったら作れるか考えてみ
普通のコードよりも上のレベルでの操作がどうしても必要で,それを可能にするのがリフレクション
0838デフォルトの名無しさん2008/04/10(木) 20:14:01
>>837
おー、なんかイメージがわいてきました。
説明のうまい人は助かります。
ありがとうございます。
0839デフォルトの名無しさん2008/04/10(木) 20:18:09
Properties.Settingsの保存場所って変更できないんでしょうか?
ttp://dobon.net/vb/dotnet/programing/mysettings.html
ここを読むと変更不可のようですが、こんなに便利なのに変更不可なのでしょう?
0840デフォルトの名無しさん2008/04/10(木) 20:53:29
変える必要がないから
0841デフォルトの名無しさん2008/04/10(木) 21:03:30
>>840
そんなことはないでしょう。
個人的にはアプリケーションフォルダの中に保存されて欲しいです。
アプリケーションを削除する時に一緒に消えるし。
0842デフォルトの名無しさん2008/04/10(木) 21:04:25
>>838
まぁリフレクションの必要性がわからないってのは
ある意味正しいプログラミングしてるのかもよ。
0843デフォルトの名無しさん2008/04/10(木) 21:05:45
>>841
それはマイクロソフトの方針に反してるもん。
0844デフォルトの名無しさん2008/04/10(木) 21:30:30
MSの方針がどうかはしらんが
Documents and Settings\UserName\Local Settings\Application Data\CompanyName\(appdomainname)_(eid)_(hash)\1.0.0.0
こんなところに保存するアプリってなかなかないわなw
0845デフォルトの名無しさん2008/04/10(木) 21:34:28
~/.APPNAME/以下は自由に使ってよいでいいんじゃねーの?
俺はそうしてる、monoerだけど。
0846デフォルトの名無しさん2008/04/10(木) 21:35:14
>>844
CompanyName まではふつー。
0847デフォルトの名無しさん2008/04/10(木) 22:00:05
VistaではAppData内に置くのが常識


のはず
0848デフォルトの名無しさん2008/04/10(木) 22:04:08
フリーウェアでレジストリやそんなところに設定ファイルが保存されたら切れるわ
0849デフォルトの名無しさん2008/04/10(木) 22:06:27
勝手に切れとけよ
0850デフォルトの名無しさん2008/04/10(木) 22:07:47
あぁブチ切れ。
0851デフォルトの名無しさん2008/04/10(木) 22:16:28
逆にAppData以外に保存されたらブチ切れだな。
0852デフォルトの名無しさん2008/04/10(木) 22:19:50
普通はexeのあるフォルダかサブフォルダでしょ。
アンインスコもフォルダ消すだけってフリーソフトが大多数だし。
0853デフォルトの名無しさん2008/04/10(木) 22:23:30
.NETだと発行機能でインストーラー作るのが普通。
インストーラーはProgram Filesにインストールするから、
そこでファイルの書き換えしたらあかんよという話でしょ。
0854デフォルトの名無しさん2008/04/10(木) 22:25:22
それはインストーラがある場合の話
0855デフォルトの名無しさん2008/04/10(木) 22:27:24
サクっと試してサクっと消したいフリーウェアなんかにインストーラ必須とか言ってたらますます.NET嫌われちゃうよw
0856デフォルトの名無しさん2008/04/10(木) 22:33:19
発行機能で作るインストーラーは.NETの有無やバージョンも確認して
自動インストールしてくれるから使ったほうがいいだろ。
それとも昔みたいにユーザーにランタイム探させたほうがいいと?
0857デフォルトの名無しさん2008/04/10(木) 23:02:02
>>856
時と場合による。
0858デフォルトの名無しさん2008/04/10(木) 23:16:09
フリーウェアには基本的にレジストリは使って欲しくないし、自分も使わない。
インストーラもレジストリを使うから嫌われるね。
レジストリを使わない自己解凍形式を使い、解凍時に読み込む実行ファイルで.NETの有無やバージョン確認を手動で行うのならOK。
でもそんな面倒くさい物作る位なら普通にzip圧縮でいいよ。
初心者程アップデートで示されるファイルは何でもかんでも入れるから.NETの最新版が入っている確率は非常に高い。

それはそうと、デスクトップ軽量アプリはやはりC++か。
VC++2008EEはWin32GUIプロジェクト非対応だから学習に使うには厳しいな…。
0859デフォルトの名無しさん2008/04/10(木) 23:25:53
パソヲタ視点しか取れない奴が多いね。

冗談みたいな話だが、インストーラの存在理由ってのは[スタート]⇒[プログラム]
やデスクトップにショートカットを作ることにあるんだよ。

つまり一般ユーザーは自分でショートカット作ったり、[スタート]メニューをカスタマイズしたり
ライチャーを使ったりできない人が多い。

必要なコンポーネントをシステムにインストールする、なんていうのは
すくなくとも二次的な機能でしょ。

ドトネトに限れば将来的には全てのPCに.NET Frameworkがインストールされていると
期待していい時代が来るはず(本当か?w)なんだし。
0860デフォルトの名無しさん2008/04/10(木) 23:47:59
フリーソフトもProgram Files以下に置きたいけど、設定ファイルを.exeと同じところに書き込むやつはそれができない。
結果、プログラム用のディレクトリを別に作らなきゃいけなくて面倒。
0861デフォルトの名無しさん2008/04/10(木) 23:53:34
>>858
VC++2008EEでもGUI作れるでしょ?
SDKはデフォで同梱だし、C++/CLI使えばポトペタも…
0862デフォルトの名無しさん2008/04/10(木) 23:55:22
>>859
何が言いたいのかわからない

>>860
Program Files以下に置けばいいじゃん。
ところでProgram Filesに自動でインストールされないファイルをProgram Filesにわざわざ置くってやついるのか?
0863デフォルトの名無しさん2008/04/10(木) 23:56:29
>>862
俺とか。
Vistaだと管理者権限無いときちんと動かないし
0864デフォルトの名無しさん2008/04/10(木) 23:58:54
頭固いと言うか、自分の都合でしか物作ったこと無い奴がいるな
0865デフォルトの名無しさん2008/04/11(金) 00:01:29
>>863
ああVistaか
0866デフォルトの名無しさん2008/04/11(金) 00:03:39
>>858
.NETはカスタムアップデートで自分で選ばないと入らないよ。
2.0は何かのアプリがインストールしてる可能性はあるけど、
XPで3.0が入ってるマシンはほとんどないんじゃない。
0867デフォルトの名無しさん2008/04/11(金) 07:08:59
Program Files以下にしか設定ファイル置けないって何だ?
実行ファイルのパスから完全パスで生成すりゃいいじゃん
0868デフォルトの名無しさん2008/04/11(金) 09:30:59
型Aの変数を型Bの変数にキャスト無しで代入できるかどうかを
実行時に調べる方法はないでしょうか?

Type.IsAssignableFromを使ったり、
リフレクションでop_Implicitを探していけば、それらしいものは作れそうですが、
仕様の見落としがあるかもしれないので、
.NET Frameworkによって提供された機能があれば、そちらを使いたいと思っています。
0869デフォルトの名無しさん2008/04/11(金) 09:36:37
それを調べてどうしたいのか教えてくれ
0870デフォルトの名無しさん2008/04/11(金) 10:00:21
>>869
JavaのVelocityみたいな感じで、ちょっとした式を埋め込める
テンプレートエンジンを作ろうと思っています。

で、その式でC#と同じように暗黙の型変換が行われれば便利かなと思いまして。

TypeConverterを使うことも考えたのですが、1.5をintに変換すると2になったりと、
ちょっとやりすぎな所があるので、こちらはできれば使いたくないんです。
0871デフォルトの名無しさん2008/04/11(金) 11:25:13
IsAssignableFrom 使うのでいいと思う。
0872デフォルトの名無しさん2008/04/11(金) 11:54:03
>>982
それだと、
暗黙の型変換演算子(op_Implicit)による変換や
shortからintの変換などができませんでした。
0873デフォルトの名無しさん2008/04/11(金) 12:49:37
>>868
isでいいだろ
0874デフォルトの名無しさん2008/04/11(金) 20:04:17
それは困るだろ
0875デフォルトの名無しさん2008/04/11(金) 22:17:09
>>872
参照変換と型変換を同列に扱うのはナンセンス
面倒くさがらずに個別に確認しろよ

1) IsAssignableFromがtrue
2-a) op_Implicitで変換可能
2-b) 組み込み型変換(暗黙)で(ry
2-c) 組み込み型変換(暗黙)+op_Implicitで(ry
0876デフォルトの名無しさん2008/04/11(金) 22:57:17
public class ItemClass
{
public int Value;
}
-----
List<ItemClass> Items;

このような感じになっていて、
Itemsに保持しているItemClassのうちでValueの最大の値を探したいのですが、
以下のコードで合っていますか?

int max = Items.Max(item => item.Value);

一応正しい値が求められているようですが
いまいちラムダ式が理解できておらず自信がありません。
またこの場合、「item」は「hoge」とかの何でも良いと解釈して良いのでしょうか?
0877デフォルトの名無しさん2008/04/11(金) 23:08:31
>>872
Expression.Convertを使うとか

>>876
あってる
itemは自動生成されるメソッドの引数名だからなんでもいい
08788762008/04/11(金) 23:17:52
>>877
ありがとうございます。
Findとかも普通に使えるようになれそうです。
0879デフォルトの名無しさん2008/04/13(日) 10:48:15
プロパティ
フィールド
メソッド

上下の順番はどうするのがいいの?
0880デフォルトの名無しさん2008/04/13(日) 10:51:48
上下って何の上下?
0881デフォルトの名無しさん2008/04/13(日) 10:52:06
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(URL);
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
Stream resStream = res.GetResponseStream();
StreamReader sr = new StreamReader(resStream, Encoding.GetEncoding(CharacterCode));
string ret = sr.ReadToEnd();
sr.Close();
resStream.Close();
return ret;

このようなコードで5分おきにサーバーからデータを取得しているのですが、
長時間(10時間以上)動かすと2行目でSystem.Net.WebExceptionの
「リモート サーバーに接続できません」という例外が発生してしまいます。
プログラムを立ち上げ直してもWindowsを再起動するまで同じエラーが発生します。

開放するべきリソースを開放していないのでしょうか?
このコードにまずい点がありましたら教えていただきたいです。
よろしくお願い致します。
0882デフォルトの名無しさん2008/04/13(日) 10:53:54
>>879
好きにすればいいんじゃね?
強いて言えば、それぞれでまとめて置いた方がいいかも
0883デフォルトの名無しさん2008/04/13(日) 10:56:17
>>879
MSの公開してる.NET Frameworkのソースコード見てたらバラバラだよ
種類別に分けてるのもあれば,種類関係なく目的別に分けてるのもある
0884デフォルトの名無しさん2008/04/13(日) 11:06:00
>>881
取りあえずresもCloseしてみる
0885デフォルトの名無しさん2008/04/13(日) 11:07:41
>>881
WebResponceもIDisposableを実装してるからDisposeするべきだよ
それが原因かは知らないけど
わかってるかもしてないけど,Closeはfinallyで
面倒ならusing重ねてClose書かなくてもおk
0886デフォルトの名無しさん2008/04/13(日) 11:20:19
>>884
>>885
ありがとうございますやってみます
IDisposableを実装してるオブジェクトは手動で開放しないとまずいんですね
勉強になりました
0887デフォルトの名無しさん2008/04/13(日) 11:24:23
コレクションの中身をDisposeかける方法はあるですか?
0888デフォルトの名無しさん2008/04/13(日) 11:26:32
foreach (var item in collection) item.Dispose();
0889デフォルトの名無しさん2008/04/13(日) 11:28:47
foreachの中で要素を消すといけないのでは?
0890デフォルトの名無しさん2008/04/13(日) 11:33:53
for(int i=collection.Count-1;i>=0;i--) collection[i].Dispose();
0891デフォルトの名無しさん2008/04/13(日) 11:35:02
それぞれの要素に対してDisposeを呼んでるだけであってコレクションには影響ないから問題ない
消すなら全部Disposeし終わった後でClearする
public static void DisposeAll<T>(this IEnumerable<T> source) {
 foreach (var item in source.OfType<IDisposable>()) item.Dispose();
}
//collection.DisposeAll()
やってることは一緒だけどこういうのも面白いかも
0892デフォルトの名無しさん2008/04/13(日) 11:35:55
Disposeって結局何をやってる処理なの?
0893デフォルトの名無しさん2008/04/13(日) 11:37:36
Disposeという名前のメソッドを呼んでるだけ
何もやってない
08948932008/04/13(日) 11:41:35
何も特別なことはないという意味だから誤解しないでね
ごく普通のメソッドで,リソースを解放したりする処理が普通に書いてあるだけ
0895デフォルトの名無しさん2008/04/13(日) 11:43:46
disposeは使うなってばっちゃが言ってた。
0896デフォルトの名無しさん2008/04/13(日) 11:46:06
GCは公務員みたいなものだから信用するなってじっちゃが言ってた。
0897デフォルトの名無しさん2008/04/13(日) 14:42:40
Disposeはリソース開放するだけで後でnull代入しないとGCが回収してくれないって最近知った
0898デフォルトの名無しさん2008/04/13(日) 14:55:39
それはそんなに気にしなくていいでしょ
フラグ代わりにnull代入することは多いけど
0899デフォルトの名無しさん2008/04/13(日) 15:20:53
GCだってメモリが足りなくなりそうにならないと回収してくれないって最近知った
0900デフォルトの名無しさん2008/04/13(日) 15:21:10
C#で趣味のゲームつくりをしようと思っています。
今はWindows2000なのでVC#2005しかインストールできません
数ヵ月後にはXPに移行してVC#2008を導入しようと考えています。

VC#2005とVC#2008は全然違うものなのでしょうか?

VirtualPCを使ってでもVC#2008を使ったほうがいいのか、
VC#2005を使うべきなのか悩んでいます。
0901デフォルトの名無しさん2008/04/13(日) 15:21:15
そこでC++/CLI
0902デフォルトの名無しさん2008/04/13(日) 15:31:04
2003→2005のときとは違い,慣れてないと使い道が分からないような機能拡張ばかりだから
とりあえず2005でいいんじゃないの
0903デフォルトの名無しさん2008/04/13(日) 15:33:50
>>900
IDEの性能が違いすぎるから、2008にしておいたほうがいい
機能面はもちろん、キーボードやマウスに対する反応等ユーザーインターフェイスの反応速度まで2008のほうが上。
というか2005はタコすぎ、お勧めできない。
0904デフォルトの名無しさん2008/04/13(日) 15:44:31
元祖.NET -> 2003 -> 2008 が正解、2005マジいらね
0905デフォルトの名無しさん2008/04/13(日) 15:56:17
>>903
>>815でサッサと答えとけ
0906デフォルトの名無しさん2008/04/13(日) 16:43:49
2008はデバッグ時に2005と比べてもっさりする気がするけど
0907デフォルトの名無しさん2008/04/13(日) 16:48:05
VB6→2008が正解
0908デフォルトの名無しさん2008/04/13(日) 16:52:17
>>907
VB6の段階で不正解
0909デフォルトの名無しさん2008/04/13(日) 16:53:36
ILコードのインライン展開の所為で、ポリモーフィズムよりswitchの方が速いのには泣いたな。

 設計の肝は継承だろ。
 実装と設計は一致しないとかよく言うけどさ、
マイクロソフトがJITコンパイラの見栄えをよくする為に入れたマッチポンプ
に付き合わされてるんだよ。 おまえら。
気付けよ。
0910デフォルトの名無しさん2008/04/13(日) 17:20:35
釣れますか?
0911デフォルトの名無しさん2008/04/13(日) 18:09:21
>設計の肝は継承だろ
ちょっ・・・・今どきかよ(^^;
素直にインターフェイスにしろよ
0912デフォルトの名無しさん2008/04/13(日) 18:13:47
見えない敵と戦ってる系の人はなんでアホが多いのか
0913デフォルトの名無しさん2008/04/13(日) 18:16:19
そろそろなんで、踏んじゃった人はよろしく >>3
0914デフォルトの名無しさん2008/04/13(日) 18:28:46
最近、base.hoge()って結構便利だったんだなぁと痛感。
baseって地味に便利じゃね?
0915デフォルトの名無しさん2008/04/13(日) 18:31:29
便利とか以前に base なかったらどうやって継承元を呼び出すんだ?
0916デフォルトの名無しさん2008/04/13(日) 18:32:21
super
0917デフォルトの名無しさん2008/04/13(日) 18:38:25
class A { public: void hoge() { } };
class B : public A { public: void hoge() { A::hoge(); } };

in C++
0918デフォルトの名無しさん2008/04/13(日) 18:43:46
>>917
多重継承があるならそれしかないよね
0919デフォルトの名無しさん2008/04/13(日) 18:46:38
単一継承している場合のみ base だの super だのが使える、
というのでもいいけどね。
基底クラス増やしただけでエラーになっちゃうけど。
09208812008/04/13(日) 18:54:59
>>881ですが、>>884-885さんのご指摘の通りresをClose()するように変更しましたが
やはり同じ例外が発生してしまいます。
他に原因と考えられるところはないでしょうか?
よろしくお願い致します。。
0921デフォルトの名無しさん2008/04/13(日) 19:08:00
5分おきを1秒おきにすれば2分で例外出るんじゃね?
0922デフォルトの名無しさん2008/04/13(日) 20:26:59
>>919
Visual C++は独自に__superがあって、
多重継承時は曖昧さなく名前が見つかれば使えるとなっている。
0923デフォルトの名無しさん2008/04/13(日) 22:26:02
C++やりたいならC++スレいけよ
0924デフォルトの名無しさん2008/04/13(日) 22:45:19
>>920
req.KeepAlive = false;
0925デフォルトの名無しさん2008/04/13(日) 22:47:30
おまえ天才かも。
0926デフォルトの名無しさん2008/04/13(日) 23:51:45
よく言われる
0927デフォルトの名無しさん2008/04/13(日) 23:57:12
これってA::hoge();
性的じゃないと無理じゃない?
型から呼べる関数
0928デフォルトの名無しさん2008/04/14(月) 00:06:59
えっ・・・
0929デフォルトの名無しさん2008/04/14(月) 00:12:26
まあ C# のスレだから >>927 みたいな人が出るのもしゃーない。
0930デフォルトの名無しさん2008/04/14(月) 02:09:43
いくらなんでも、流れを読めれば分かるだろう。917の最終行でも分かるし

ということは、流れが読めなくて、917の最終行が分からないのは、C#スレ的には普通だと
0931デフォルトの名無しさん2008/04/14(月) 11:20:28
せめてC++の十分な知識つけてから書けや、抜作
ってなもんだけどな
0932デフォルトの名無しさん2008/04/14(月) 11:43:23
C+は「**」「::」「<>」とか記号が多いから知らないで読むと宇宙語に見えるよな。
0933デフォルトの名無しさん2008/04/14(月) 13:47:29
C++の話してる人は、とりあえずスレタイ嫁
0934デフォルトの名無しさん2008/04/14(月) 15:29:10
俺的にはやっぱ原作のが好みかな
ttp://temple-knights.com/image/anime/higurashi_cast.jpg
0935デフォルトの名無しさん2008/04/14(月) 15:55:43
そのひぐらし、闇にまぎれて、私は戸惑うペリカン〜〜

スレタイ読むとそうなるのか
0936デフォルトの名無しさん2008/04/14(月) 16:45:14
業務レベルで4年C言語だけやってきたんだが、そんな俺でも.NetでVC#やることになりました。
どの変から学びはじめるといいですか?C言語でもそれっぽく使ってきたが、
オブジェクト脳にはあまりなってないとおもいます。
0937デフォルトの名無しさん2008/04/14(月) 16:48:44
とりあえず@ITのC#入門を一通り読む。
あれを理解すれば、さらに書籍が必要かどうかは、自分で判断できるだろ。
0938デフォルトの名無しさん2008/04/14(月) 18:40:18
C#を用いてテキストエディタ、Win標準のペイントのようなソフトを作ってみたいと考えています
ゼロから始めるとして難易度はどの程度でしょうか?
1日2~3時間、プログラムを組むなり勉強するなりすると考えて、大体何ヶ月ぐらいかかるでしょうか?
0939デフォルトの名無しさん2008/04/14(月) 18:42:55
テキストエディタは3日でできるよ
作業時間30分
0940デフォルトの名無しさん2008/04/14(月) 18:54:50
テキストボックスは何故Ctrl+Aが標準で使えないのか謎だね
0941デフォルトの名無しさん2008/04/14(月) 18:55:27
ListViewが全てのアイテムをクライアント内に表示(スクロールする必要が無い状態)するにはどうしたらいいでしょうか?
listViewはView=DatailsでHeaderStyle=Noneです。
listView.Height = listView.Font.Height * (listView.Items.Count-1);
等とやってみたのですがうまくいきませんでした。
0942デフォルトの名無しさん2008/04/14(月) 19:49:00
      f´'´      ノ     ヽ  l  、 \!
       l /  / //  ,.ィ´   !', ト、 ヽ. ヽ
.      レ′, / //_,..イ// ,|   l |lλぃ  い. ',
      } / { ‐7Ζ_∠!イ 〃  /リ,}/┤!」l 小 !
     ノ i| 八//'゛ -`l 〃 /ノ'´  j ! |l/| iイ/
     ヽ|l//イ ャ''Tェ歹''`y゙/  'ヾ歹¨リ`イ!ノ//   まさか、ロリコンじゃないわね・・・
      ) 〃A ``''''"´ '^ r;   `'''"´/クK/
      Y/ !トヘ. ////    //// /.ィi| ;|
        |i( l|`Ti\,___  '⌒)   ,∠lj_|iリ
       {い ヾLr┤:.:.:.:.`:、__,,..イ;:.::.:./勹_」!
       ``ァ;=<´ ̄``ヽ:ヽ;‐-/;/``Tr-.、

0943デフォルトの名無しさん2008/04/14(月) 20:12:59
もうAA出来たのか
勃起したぞ
0944デフォルトの名無しさん2008/04/14(月) 22:23:36
>>934
映画のレナと魅音逆じゃん
0945デフォルトの名無しさん2008/04/14(月) 22:30:17
>>944

どう思う兄者?
カス揃いだ。
0946デフォルトの名無しさん2008/04/14(月) 23:21:32
@ITのC#3.0入門の第二回はまだかね
0947デフォルトの名無しさん2008/04/15(火) 00:16:08
varって結構いいな。javascriptっぽくて好きだな俺は
0948デフォルトの名無しさん2008/04/15(火) 10:25:01
JavaScriptのvarとは根本的に違うだろ
0949デフォルトの名無しさん2008/04/15(火) 10:32:02
Pascalは嫌い。
0950デフォルトの名無しさん2008/04/15(火) 11:25:09
LINQ + 匿名クラス + var は便利。
# JavaScript の var とは、暗黙的型付けされている点で全く別物だよね
0951デフォルトの名無しさん2008/04/15(火) 17:13:16
>>950
>>3 をよろしく、建てられない場合は報告も
09529502008/04/15(火) 17:25:29
悪い、踏んだのに気付いてなかった。
建てようとしたけど無理だったので、誰か代わりにお願いします。

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


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

前スレ

ふらっとC#,C♯,C#(初心者用) Part26
http://pc11.2ch.net/test/read.cgi/tech/1206238049/
09539502008/04/15(火) 17:26:15
C#, C♯, C#相談室 Part45
http://pc11.2ch.net/test/read.cgi/tech/1200911737/

C♯, C#相談室 Part34
http://pc11.2ch.net/test/read.cgi/tech/1162467959/

【新GUI FW】WPF(XAML,AVALON,.NET3.0)【重い?】
http://pc11.2ch.net/test/read.cgi/tech/1162950198/

Windows Live プログラミング
http://pc11.2ch.net/test/read.cgi/tech/1188112572/

初心者のためのプログラミング言語ガイド Part8
http://pc11.2ch.net/test/read.cgi/tech/1208186034/
09549502008/04/15(火) 17:26:45
参考サイト。まずはここで検索してから。
http://google.com/
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/
0955デフォルトの名無しさん2008/04/15(火) 17:44:28
次スレ建ててきた。

ふらっとC#,C♯,C#(初心者用) Part27
http://pc11.2ch.net/test/read.cgi/tech/1208248879/

ちと過疎り気味なので誰か燃料投下して早くこのスレ消化するようにw
0956デフォルトの名無しさん2008/04/15(火) 17:45:40
>>955
スレ建て乙です
0957デフォルトの名無しさん2008/04/15(火) 19:43:29
Webベースの資料も当然読むつもりですが、本として手元に置いておきたいです

ゼロからC#を始める人間にお薦めな本って無いでしょうか?
0958デフォルトの名無しさん2008/04/15(火) 19:44:39
マイコミ
0959デフォルトの名無しさん2008/04/15(火) 21:21:06
プログラミング.NET Framework
マジお勧め
0960デフォルトの名無しさん2008/04/15(火) 21:37:01
最初からそれは少々酷だろw
0961デフォルトの名無しさん2008/04/15(火) 22:17:18
ま〜俺的にはコンストラクタとデストラクタは一番上で
0962デフォルトの名無しさん2008/04/16(水) 01:01:23
partical のおかげですっきりしたなぁ
0963デフォルトの名無しさん2008/04/16(水) 05:00:12
OS XP
環境 VC#2005無料版

デバイス名(例 \Device\HarddiskVolume1)から対応するドライブ名(例 C:)を取得する方法を教えてください。
検索したところ、逆はQueryDosDevice()でできるとわかったのですが…。
0964デフォルトの名無しさん2008/04/16(水) 05:36:33
for(char c = 'a'; c < 'z'; c++)
{
QueryDosDevice(〜);
}
0965デフォルトの名無しさん2008/04/16(水) 11:24:00
>>963
[DllImport("kernel32.dll")]
static extern uint QueryDosDevice(string lpDeviceName, StringBuilder lpTargetPath, int ucchMax);

[DllImport("kernel32.dll")]
static extern uint GetLogicalDriveStrings(uint nBufferLength, [Out] char[] lpBuffer);

private const int MAX_PATH = 260;

static string GetNtDeviceNameForDrive(string drive)
{
if (string.IsNullOrEmpty(drive))
{
return null;
}

drive = Path.GetPathRoot(drive).Replace("\\", "");
StringBuilder result = new StringBuilder(MAX_PATH);

QueryDosDevice(drive, result, MAX_PATH);

return Path.Combine(result.ToString().Replace(@"\??\", ""), "");
}
つづく。
0966デフォルトの名無しさん2008/04/16(水) 11:24:49
つづいた。
static StringCollection GetDrives()
{
const int size = 512;
char[] buffer = new char[size];
uint code = GetLogicalDriveStrings(size, buffer);

if (code == 0)
{
return null;
}

StringCollection list = new StringCollection();
int start = 0;
for (int i = 0; i < code; ++i)
{
if (buffer[i] == 0)
{
string s = new string(buffer, start, i - start);
list.Add(s);
start = i + 1;
}
}

return list;
}
つづく。
0967デフォルトの名無しさん2008/04/16(水) 11:25:35
つづいた。
static string GetDriveForNtDeviceName(string deviceName)
{
foreach (string drive in GetDrives())
{
if (GetNtDeviceNameForDrive(drive) == deviceName)
{
return drive;
}
}
return null;
}

static void Main()
{
Console.WriteLine(GetDriveForNtDeviceName(@"\Device\HarddiskVolume1"));
}
おしまい。
0968デフォルトの名無しさん2008/04/16(水) 19:00:47
俺ならこうかな

var deviceName = @"\Device\HarddiskVolume1";
var sb = new StringBuilder(260);
var drive = Enumerable.Range('A', 'Z').Cast<char>().FirstOrDefault(c => (QueryDosDevice(c+":", sb, (uint)sb.Capacity) > 0 && sb.ToString() == deviceName));

// drive(char): A-Z or NULL
0969デフォルトの名無しさん2008/04/16(水) 20:44:01
初心者スレでLINQとな
0970デフォルトの名無しさん2008/04/16(水) 20:47:04
varとかラムダ式大好きって感じだな
0971デフォルトの名無しさん2008/04/16(水) 22:29:05
C#って、1.0のときはJ[検閲削除] + VB + Delphi etc..って感じだったような気がするけど、
2.0,3.0とバージョンを重ねるごとに変態度が上がってない?
ラムダ式、LINQ、密かにジェネリックで条件指定できる拡張メソッドとか、
漏れを含めて初心者はわけわかめなんじゃ
0972デフォルトの名無しさん2008/04/16(水) 22:32:09
お仕事がネットつかえない環境なのでソースが出せなくてごめんなさい。
Spread for .NET 1.0.6で金額項目に単位を表示させたいので
columnを結合して"XXX,XXX" "円" ていうような処理をしています。
その項目を水平スクロールバーで移動させると、
右の三角ボタンを押すと左端が1セルずつ移動するので
端っこに"円"とか表示されたりするのですが、
これを結合されてる単位でスクロールすることって可能ですか?
0973デフォルトの名無しさん2008/04/16(水) 22:39:26
>>971
> ラムダ式、LINQ、密かにジェネリックで条件指定できる拡張メソッド

初心者ならこの辺は知らなくても良いだろ
0974デフォルトの名無しさん2008/04/16(水) 22:44:15
俺が学生だからそう思うのかもしれないが、
仕事のことを2chで聞く神経が理解できない

嘘教えられたらどうするんだ?
0975デフォルトの名無しさん2008/04/16(水) 22:56:44
>>974
2chしか頼れない場合もあるんだよ。
別に嘘教えられたって、それの通りにやってみて
動かなければ他の方法を試すだけ。

情報が無いよりはよっぽど役に立つと思うよ。

学校と違って聞く相手が居ないことも多いしな。
0976デフォルトの名無しさん2008/04/16(水) 22:58:31
>>974
正論や倫理なんかより、
結果が優先されるのが仕事。

手段を選べないことは仕事の方が多いと思うな。
趣味だったらいくら時間をかけても平気だけど、
仕事だとそうも行かないし。
0977デフォルトの名無しさん2008/04/16(水) 23:00:07
ラムダ式とかわからなければ今までと同じやり方でコードで書けばいい。
わかったら劇的にコードが短縮されるだけ。
そういう俺もついこの間までは、このスレとかで=>が入ってるコードを見ると
頭の上が?の嵐で「読めねえよ」って思ってたけどね。
0978デフォルトの名無しさん2008/04/16(水) 23:05:54
>>972
さすがに有料のコンポーネントになると誰でも持っているわけじゃないので
開発元かサポートに聞いた方が早いと思う。
0979デフォルトの名無しさん2008/04/16(水) 23:08:51
2chで解決するには運が必要だよ。
質問後に数レス以内で答えてくれないと流れる可能性大。
その数レスの間に嘘や間違いのレスがあった場合も
その後に問題をちゃんと考えてくれる人がいなくなるという危険性も。
0980デフォルトの名無しさん2008/04/16(水) 23:18:36
>>979
質問内容が的確でなおかつスレ違いでないような質問であればほとんどの場合
ちゃんとレスがつくと思うが。
流されちゃってる質問は、情報不足だったりとんちんかんなことを言っている場合がほとんど。
0981デフォルトの名無しさん2008/04/16(水) 23:26:52
>>972
いやいや触ってたから覚えてないけど、そもそも"XXX,XXX", "円"を分ける必要なかったキガス。
VBer内では有名みたいだけど出来よくないよ、GrapeCityは。
0982デフォルトの名無しさん2008/04/16(水) 23:42:28
>>980
いやレスしたがるような要素がないと無理。
ちなみに>>972の場合はそれが特に表面化していなかったが、
>>974のおかげで話題になった。

どんなに情報を的確に書いてもすぐ次にレスしたがる要素の多い質問が書かれたら
前者の質問はスルーされる。
0983デフォルトの名無しさん2008/04/16(水) 23:43:22
質問したのにスルーされたの?とかはいいから
0984デフォルトの名無しさん2008/04/17(木) 02:32:27
LINQは使えるようにならないと
コレクションまともに使えないぜ
0985デフォルトの名無しさん2008/04/17(木) 02:33:37
foreach派です
0986デフォルトの名無しさん2008/04/17(木) 03:58:48
LINQってリンクって読み方でいいんだよな?
0987デフォルトの名無しさん2008/04/17(木) 08:37:59
(メロ)リンキュ〜
0988デフォルトの名無しさん2008/04/17(木) 12:14:20
>>987
「link と読みます。link you と読むな」って開発者が言ってる。
0989デフォルトの名無しさん2008/04/17(木) 14:30:21
C#でOfficeについている数式作成、表作成ができるペイントツールを作ってみたいのですが、作成難易度はどの程度だと思いますか?

当方C#経験、グラフィック周りのプログラム経験はゼロの素人です
0990デフォルトの名無しさん2008/04/17(木) 14:50:53
Officeについている数式作成、表作成ができるペイントツール ってどんなのよ?
0991デフォルトの名無しさん2008/04/17(木) 14:53:49
・n*mの表を作る
・Σや∫の数式を作りやすくする

これが目的です
数式はテンプレートを埋めていく形のを考えています
0992デフォルトの名無しさん2008/04/17(木) 14:54:36
Visioのことだとエスパー。
だとすると10年かかっても出来ないけど。
0993デフォルトの名無しさん2008/04/17(木) 14:56:18
>>989
それ以外のプログラミング経験は?
0994デフォルトの名無しさん2008/04/17(木) 15:12:01
>>991
Office 2007 では、今までの MS Equation 3.0 に代わって、
Microsoft Math Add-in ってのが利用できるようになったんだけど
(要追加インストール、無料)
これだと、s=\sum _(i=1)^n a_i みたいに打てばちゃんと組み版されるようになった。

正直、標準で結構快適に使えるんで、自作の必要性をまず疑う。
0995デフォルトの名無しさん2008/04/17(木) 15:13:49
>>992
visioなんて変態は無理なのは分かっています
それの機能の一部に似たようなソフトを作ってみたいと思っています

自作の必要性はたぶん無いです。ほとんど趣味に近い事です
0996デフォルトの名無しさん2008/04/17(木) 15:23:11
作成難易度を聞くレス多いけど
趣味ならどこまで出来るかやってみては!?
0997デフォルトの名無しさん2008/04/17(木) 21:39:22
>>996
趣味だけど、無駄なことはしたくないという大人の考えだな。

喉いてぇ。
0998デフォルトの名無しさん2008/04/17(木) 22:37:49
趣味でこれといった目的もないのに無駄なことはしたくないと・・・
何がしたいのか謎な人だな
0999デフォルトの名無しさん2008/04/17(木) 22:39:29
>>1000が答えを出してくれるよ
1000デフォルトの名無しさん2008/04/17(木) 22:45:40
先生・・・・
バスケがしたいです
   _____
  /ィへヾγ \
 ///""""""ヽ \
`// / /(ィ ミ|ヾヾヽ
f/ /≦レヾ≧ニ| |i|i|
| イ∠o〉くo\ヽ ||||
| |〃/   ̄ヾ|  ||
| |Uヽ_ュ  U|  |
| | r――、 |  |
| | rヒ二三ノ、 |  |
|iヽU   ((/ハ i i|
||||\__/))/ /||||
ヾ从リヽ三 U/イ从ハリ
/ ̄/| ̄  /  \
  / く__<
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。