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

ふらっと C#,C♯,C#(初心者用) Part114©5ch.io

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん 転載ダメ©2ch.net2014/12/25(木) 22:01:52.03ID:kUKhCTMP
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。

内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。

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

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

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

■関連スレ
C#, C♯, C#相談室 Part85
http://peace.2ch.net/test/read.cgi/tech/1412298752/

■コードを貼る場合は↓を使いましょう。
http://ideone.com/
0002デフォルトの名無しさん2014/12/25(木) 22:07:11.73ID:FliVA0aI
>>1乙
0003デフォルトの名無しさん2014/12/25(木) 22:37:54.34ID:aK/woPpc
記念Suica
0004デフォルトの名無しさん2014/12/26(金) 09:36:19.64ID:PUSaAK8w
雑談スレかな?
乙
0005デフォルトの名無しさん2014/12/26(金) 16:49:55.14ID:O5hdQAyp
以下にある
- '0'
とはどういう意味なのでしょうか?文字(列)をint型に変換する方法はint.Parse()以外にもあるってことですか?


// 文字→整数
static int CharToInt(char c)
{
return c - '0';
}
0006デフォルトの名無しさん2014/12/26(金) 16:52:59.92ID:xbXz+yuK
半角数字の文字コードは0から9まで1ずつ増加していくから
'9' - '0' のようにやれば9になる

charが半角数字だと分かっているなら'0'を引けばその数値が出るってこっちゃ
0007デフォルトの名無しさん2014/12/26(金) 17:08:23.50ID:O5hdQAyp
>>6
ありがとうございます。うーんまだよく理解できないので次の2つの質問もよろしくお願いします。

・CharToInt()は戻り値がintなのに
return c - '0';
でchar型を返してもエラーにならないのはなぜか

・if('0' <= c && c <= '9') 
にあるようにchar型の大小比較を出来るのはなぜか
0008デフォルトの名無しさん2014/12/26(金) 17:11:32.94ID:xbXz+yuK
>>7
charは2バイトの数値だから足したり引いたりintにしたり比較したり出来る
ユニコードの文字コードとして解釈すれば文字として使える
0009デフォルトの名無しさん2014/12/26(金) 17:28:02.32ID:O5hdQAyp
>>8
ありがとうございます。ということは四則演算や大小比較の演算子の引数にchar型変数を渡すと
コンパイラ(?)の方で勝手にその文字に割り当てられている数値をint型に直して計算してくれるということでしょうか?
これってString型でも同じなんでしょうか?
0010デフォルトの名無しさん2014/12/26(金) 18:01:42.94ID:S+6Wj5Hd
この場合、'0'を数値にしたら48になる
文字一個一個が↓の数値と対応している
http://www.tamasoft.co.jp/ja/general-info/unicode-decimal.html
0011デフォルトの名無しさん2014/12/26(金) 18:05:13.87ID:TqBRiW7q
>>9
考え方が逆だな。
コンピュータって結局は、全ての情報を数値で扱っているんだよ。
char型も単に数値を格納しているだけ。なので、
c = '0'
というのは、実は、
c = 48
と書いたのと全く同じ処理が行われる。
で、その48という値を表示ルーチンに渡すと、対応する0という文字の絵を描いてくれるだけ。
0012デフォルトの名無しさん2014/12/26(金) 18:08:56.52ID:TqBRiW7q
String型はちょっと事情が違っていて。
"123"と書くと、実はどこかのメモリに'1','2','3'の順番で一つずつ文字コードが格納されていて、
そのハンドルというか場所を示す値が、例えばこんな感じで格納されているようなもの。
s = "123"
s = 0x80567890

表示する時は、sの値から間接的に、その先に格納されている文字コードという値を取り出して
一つずつ表示する仕組み。
0013デフォルトの名無しさん2014/12/26(金) 18:52:26.93ID:O5hdQAyp
皆さんありがとうございます。
int,char間で色々キャストして確かめてきました。
0014デフォルトの名無しさん2014/12/26(金) 19:19:26.80ID:O5hdQAyp
すいません、最後にもう一つ質問お願いします。

int i = 'a' - 0;
int j = 'a' - '0';

の値を調べ見たところ
i:97
j:49
になってました。ASCIIコードにおいてaは10進数表記で97になるというのは分かったでんですが
j:49 は何に対応してるのでしょうか?
0015デフォルトの名無しさん2014/12/26(金) 19:24:17.68ID:xbXz+yuK
'0'が48だってことを表してるんじゃねえの
0016デフォルトの名無しさん2014/12/26(金) 19:25:38.41ID:lqtBR3a+
'0' ってのも数値。0x0030かな?
'a' ってのも数値

int j = 'a' - '0';
ってのは'a'って数値から'0'って数値を引いた値をjに代入って意味
0017デフォルトの名無しさん2014/12/26(金) 19:30:26.21ID:O5hdQAyp
う…すごい単純なことでしたね
ありがとうございます。
0018デフォルトの名無しさん2014/12/26(金) 20:00:11.61ID:wIqS8k7H
charはC#の言語仕様上特に整数型として指定されているので演算時に32/64ビット整数型に変換されるんだよ
だから>>11よりも>>9の方が真実に近い
0019デフォルトの名無しさん2014/12/26(金) 20:14:25.29ID:9Ic4bu55
えー
0020112014/12/26(金) 20:32:57.54ID:TqBRiW7q
>>18
いや、>>9が初心者に有りがちな、文字というものを直接扱っている、と誤解してるので、あえて>>11を書いた。

まず、その誤解を解くことで、実際には文字では無く文字コードという数値で扱っているので、
引き算をしたり大小比較がなぜ出来るのかを理解して貰おうとした。
0021デフォルトの名無しさん2014/12/27(土) 23:42:06.10ID:fGQ1PcvN
言い訳見苦しい
0022デフォルトの名無しさん2014/12/28(日) 00:46:07.43ID:zsT2zdJj
>9と>11は矛盾してないだろ。どちらも正しい。
言語仕様7.3.6.2 Binary numeric promotions により
char同士の2項演算はintに変換されてから行われる。
そのchar→intの変換ルールは>11の通り。
0023デフォルトの名無しさん2014/12/28(日) 01:08:02.99ID:Lh7uqEy1
もうわかったから
0024デフォルトの名無しさん2014/12/28(日) 07:45:42.49ID:1AHF9F74
「>>11が間違っている」じゃなくて「>>9の方が正確」と言われているんだよなあ
0025デフォルトの名無しさん2014/12/28(日) 08:05:48.78ID:cwT7VysE
もうほんとわかったから
0026112014/12/28(日) 08:25:51.07ID:Rak+IxlV
レベルの違う話が混じって混乱しているんだな。
初心者が分かる説明の仕方と、実際の厳密な言語仕様の話と。

初心者の頃に自分もそうだったし、時々ム板でも数字と数値の違いが分かってない質問者が居るんで、
だから、型の話は置いといて、教科書の1, 2ページレベルの説明をまず行った >>11, >>12。
0027デフォルトの名無しさん2014/12/28(日) 09:10:43.54ID:XH4/KAur
>>7
>>>6
>ありがとうございます。うーんまだよく理解できないので次の2つの質問もよろしくお願いします。
>
>・CharToInt()は戻り値がintなのに
>return c - '0';
>でchar型を返してもエラーにならないのはなぜか
int = char c - '0'は右辺が左辺の型に変換されるから
0028デフォルトの名無しさん2014/12/28(日) 09:17:14.71ID:E59H8eun
↑嘘
0029デフォルトの名無しさん2014/12/28(日) 09:27:03.40ID:fKzSeI49
char同士の引き算の結果はもともとint型なので変換不要
0030デフォルトの名無しさん2014/12/28(日) 09:28:18.00ID:1AHF9F74
30もないんだから全部読んでからレスしようよ
0031デフォルトの名無しさん2014/12/28(日) 11:39:00.10ID:Pa7xhT3W
指定したディレクトリ下にあるJPEGファイル以外を削除したいのですが
どう指定したらいいのかわかりません
RegExp使って指定しないとだめですか?

string[] delfiles = Directory.GetFiles(@指定ディレクトリ,"*.(?!jpg$)");
for (i=0; …
{ System.IO.File.Delete(@delfiles[i]); }

とかやってみたのですがdelfilesに何も入りません
初心者で本当にすみません
どうか教えてください。お願いします
0032デフォルトの名無しさん2014/12/28(日) 11:42:40.80ID:1AHF9F74
"*.jpg"じゃないの
複数は出来ないはずなので最悪EnumerateFilesでLINQを使う
0033デフォルトの名無しさん2014/12/28(日) 11:48:27.37ID:1AHF9F74
あ、以外ならEnumerateFilesするしかないね
0034デフォルトの名無しさん2014/12/28(日) 12:17:05.24ID:XH4/KAur
>>29
左辺がlongだと?
0035デフォルトの名無しさん2014/12/28(日) 12:59:20.40ID:fKzSeI49
左辺がlongだとint→longの暗黙変換
charは全く関係ない
0036デフォルトの名無しさん2014/12/28(日) 13:01:28.67ID:mHcU474O
>>34
言語仕様7.3.6.2 Binary numeric promotionsによりintに変換されて引き算された後
言語仕様6.1.2 Implicit numeric conversionsによりlongに自動変換される

わかったらもう来るな
わからなくてももう来るな
0037デフォルトの名無しさん2014/12/28(日) 13:02:16.27ID:1AHF9F74
>>35
違う。long operator-(long, long)が採用されてlongになる
全く関係ないのはint
0038デフォルトの名無しさん2014/12/28(日) 13:02:20.63ID:oe5wWv8z
>>36
>>1を読み直せよカス
0039デフォルトの名無しさん2014/12/28(日) 13:06:52.07ID:fKzSeI49
>>37
=より-の方が優先順位高いから先にchar-charとして解釈される
型推論の余地はない
0040デフォルトの名無しさん2014/12/28(日) 13:08:07.94ID:oe5wWv8z
なんでこんな紛糾してるんだよ
0041デフォルトの名無しさん2014/12/28(日) 13:11:00.88ID:1AHF9F74
「左辺」がどの演算子の左辺かに認識の相違があるな
0042デフォルトの名無しさん2014/12/28(日) 13:13:44.65ID:fKzSeI49
>>41
ああそういうことか
でも結果の型はintが求められてるから=の右辺がlongだとコンパイルエラーになるはず
0043デフォルトの名無しさん2014/12/28(日) 13:23:34.18ID:lr8z5sQQ
>>40
>なんでこんな紛糾してるんだよ
それは>>34の質問の仕方が不適切だったから

>int = char c - '0'は右辺が左辺の型に変換される
 ↓
>char同士の引き算の結果はもともとint型なので
 ↓
>左辺がlongだと? ←★
0044デフォルトの名無しさん2014/12/28(日) 13:25:31.30ID:Pa7xhT3W
>>31です
>>33
ありがとうございました
0045デフォルトの名無しさん2014/12/29(月) 11:00:41.90ID:urbNhfxY
2つ以上のスレッドで一つの変数や配列を扱うときに
誰かがアクセスしてるときにガードしたり
書き込める状態を待って書き込んだり
読み込める状態を待って読み込んだり
できるようにするにはどうしたらいいのでしょうか?
.netframework2.0と3.0以降に対応する必要があります。
0046デフォルトの名無しさん2014/12/29(月) 11:04:26.78ID:QPHjbNzt
lock(this)って感じでlockステートメントに適当なオブジェクトを渡すと
同じオブジェクトを参照しているブロックは同時実行されない

それ以上に高度な制御はSystem.Threadingにいろんなクラスがあるから適当に使う
0047デフォルトの名無しさん2014/12/29(月) 11:14:23.31ID:urbNhfxY
>lock(this)って感じでlockステートメントに適当なオブジェクトを渡すと
>同じオブジェクトを参照しているブロックは同時実行されない
レスありがとうございます
しかし、わからないケースがあります。
対象の変数がアクセス不可状態でlockを実行したときは
どうなるのでしょうか?

と、いうのは後だしでもうしわけないのですが
待ちが発生してしまうとまずいスレッドがあります。

アクセス可能をまって実行してくれるようなキューみたいな
処理が必要なのですが・・・
0048デフォルトの名無しさん2014/12/29(月) 11:20:12.93ID:QPHjbNzt
2.0でその要件だと自分でスレッド立てて管理するしかないんじゃないかなあ
0049デフォルトの名無しさん2014/12/29(月) 11:24:10.50ID:tirsBVZi
>>47
そんなキューがあったとして、どうやって使うつもり?
queue.Add(resource1, res1 => アクセス(res1)); //resource1がアクセス可になれば実行
queue.Execute(); // 同じスレッドでアクセス(res)を実行するなら結局ここでブロックされる

アクセス(res)を実行するのが別のスレッドでいいんならproducer-consumerでも使えばいい
0050デフォルトの名無しさん2014/12/29(月) 11:41:32.14ID:urbNhfxY
>>48,49
待てないスレッドでは別スレッドを立ててしまえばいいのですね
んでその先でlockで待たせて書き込みさせるといいわけですね
ありがとうございます
0051デフォルトの名無しさん2014/12/29(月) 11:48:09.08ID:tirsBVZi
>>50
先で待たせる必要はないけどな
どうせ同一のリソースを待ってる処理は同時に一つしか実行できないんだから、
一つのconsumerスレッドがキューに溜まった処理を順番に実行すればおk
.NET2.0だと余計に面倒かもしれないけど、consumerがマルチスレッドじゃなくなるので気が楽
0052デフォルトの名無しさん2014/12/29(月) 11:55:52.18ID:QPHjbNzt
>>48も2スレッド構成を意図していたけど、負荷次第では多並列もありうる
でもその場合にThreadクラスを使うのはやめた方が良い
0053デフォルトの名無しさん2014/12/29(月) 15:10:03.11ID:4sJ6Y8GP
http://hayabusa6.2ch.net/test/read.cgi/linux/1416041653/782-
環境がLinuxなのでLinux板で聞いた所こちらの板に移動するように言われたのでよろしくお願いします。

プログラミングの勉強でlibarchiveを使ってみようと思い、超初心者なので数行づつ書いてはエラーなく実行できるか試しているレベルなんですが、次のコードをコンパイルして実行した所Segmentation faultが起きてしまいました。
http://codepad.org/bq7NDC0U

理由を考えてみたんですが分からず色々試してみた所
1. 「a = archive_read_new() ;」をコメントアウトする
2. 「struct stat* st ;」を「struct stat st ;」にして関係する部分を適切に書き換える(fstatの引数に渡すときに&amp;をつけて、->を.にする)
のどちらか一方をすると回避できることがわかりました。

http://hayabusa6.2ch.net/test/read.cgi/linux/1416041653/784
にも書いたのですが、stをポインタにしても実体?にしても、ファイルサイズやinode番号などの情報は取得できたので問題ないかと思ったのですが、ポインタにするとなぜかa = archive_read_new()でSegmentation faultが起きてしまいます。
何故このような結果になるのでしょうか?

また、先のスレで「おまえの書いたプログラムってバッファーオーバーフロー攻撃と同じ事やってるんだけど自覚ある?」と言われてしまったんですがそれすらどの辺がいけないのかさえわかりません。
そちらも「ここがこうじゃ駄目」的な指摘をいただけると助かります。
長文ですいませんが、よろしくお願いします。
0054デフォルトの名無しさん2014/12/29(月) 15:14:12.22ID:Kwqkco7T
メモリ確保きちんとしろ。そしてここはc++のスレじゃなくてc#のスレ。聞きたいなら知恵遅れ行け
0055デフォルトの名無しさん2014/12/29(月) 15:17:41.29ID:4sJ6Y8GP
>c#のスレ
うわ、ほんとだ…
申し訳ない、ちょっと頭冷やして後日適切なスレで質問します
ほんとうに失礼しました。
0056デフォルトの名無しさん2014/12/29(月) 21:00:59.47ID:/ysTeZx0
applicationsettingでアプリの設定値を保存できるようになったのですが、ビルドしたあと、exeファイルのみでも設定を保持します。設定値を保存しているファイルはどこにあるんですか?
0057デフォルトの名無しさん2014/12/29(月) 21:11:15.85ID:QPHjbNzt
userSettingsはAppData内のuser.configなるファイルに保存される
applicationSettingsは知らん
0058デフォルトの名無しさん2014/12/29(月) 21:34:35.27ID:p2rxLzbq
applicationの方はsaveの対象外よ
0059デフォルトの名無しさん2014/12/29(月) 21:37:53.92ID:p2rxLzbq
って、.configが無いときの既定値の話か
settings.designer.csで定義されてるクラスに属性として記述されてるよ
0060デフォルトの名無しさん2014/12/29(月) 23:33:30.05ID:/ysTeZx0
>>57-59
AppData/Localの中にフォルダーが作成されて、user.configができていました。
0061デフォルトの名無しさん2014/12/30(火) 07:49:07.34ID:3uUPUGLX
ツイッタークライアントを作ろうと考えているのですが
テキストボックスやボタンが複数あるユーザーコントロールを
リストビューの様に一列表示するにはどうしたらよいのでしょうか。

DataGridViewCellの派生クラスを作る処理を調べたのですが
画像として描画する手段しか見つかりませんでした。

テキストボックスやボタンをユーザーコントロールで指定したまま動かしたいので
画像化せずに、ボタンはボタン テキストボックスはテキストボックスのままレイアウトして欲しいのですが
メソッド名、もしくはサンプルコードがありましたら教えて頂けますでしょうか。
0062デフォルトの名無しさん2014/12/30(火) 08:02:22.31ID:WfP/XooQ
DataGridViewColumn+DataGridViewCellの派生でやるのも出来ると思うけど、WPFもしくは手動レイアウトを勧めるよ
0063デフォルトの名無しさん2014/12/30(火) 08:27:38.18ID:3uUPUGLX
ありがとうございます。

androidのAdapterの様に、表示されていないコントロールを使いまわして
数千件あるTwitterのタイムラインを一つのリストに表示してもメモリをそれほど圧迫しないという仕組みは、dataGridViewやWPFには有りますでしょうか?

androidのアダプタ(listviewをコントロールする仕組み)のビュー(コントロール)を再利用する仕組みはこんな感じです
http://blogand.stack3.net/archives/49
http://blogand.stack3.net/wp-content/uploads/2013/06/02-1.png
>ListViewは場合によってはたくさんの行を扱う必要があります。Viewオブジェクトは通常のオブジェクトに比べてサイズが大きいです。
>1000行あって1000個Viewを作っていたらメモリを圧迫します。たとえば1000行あるが画面上では10行しか表示しないなら
>10行+α分のViewだけ生成して、スクロールアウトしたものは次にスクロールインする行に使いまわすようにするとメモリを圧迫せずに済みます。
0064デフォルトの名無しさん2014/12/30(火) 08:33:50.11ID:WfP/XooQ
それは.NET界隈だと「仮想化(Virtualization)」って奴でリスト系コントロールなら大抵サポートしている
0065デフォルトの名無しさん2014/12/30(火) 08:58:30.32ID:4oGPFvlj
ItemsPanelにVirtualizingStackPanelでないStackPanel使ったら仮想化されないから注意ね
まあデフォルトがVirtualizingStackPanelだから、自分で設定しない限り大丈夫だと思うが
0066デフォルトの名無しさん2014/12/30(火) 10:59:16.36ID:3uUPUGLX
ありがとうございます。
0067デフォルトの名無しさん2014/12/30(火) 13:42:30.88ID:N20A9NEN
すみません、行き詰ってしまったので教えてください。
テキストボックス1にコピペで貼り付けたHTMLファイルの中から
<textarea id="abc">文章1</textarea>を検索して
文章1を取り出し、テキストボックス2に書き出したいのですが上手くいきません。
http://blogs.wankuma.com/ch3cooh/archive/2008/07/27/150558.aspx
↑を参考にして
Regex reg1 = new Regex("<textarea id=\"abc\".*>(?<bun>.*)</textarea>");
string html = textBox1.Text;
if (!reg1.IsMatch(html))
{
return;
}
Match match = reg1.Match(html);
textBox2.Text = match.Groups["bun"].Value;
こうやったのですが、nullで検索にマッチしませんでした。
(HTMLの中には確実にそのIDのテキストエリアがあるのに)
どうかお願いします。
0068デフォルトの名無しさん2014/12/30(火) 13:48:49.87ID:dxBK7ujR
スクレイピングに正規表現使うのが許されるのはリンク抽出まで
Html Agility Packとか使え
0069デフォルトの名無しさん2014/12/30(火) 13:51:22.47ID:WfP/XooQ
その引数じゃ再現しない
id=の前に何か入っているとかそういうつまらん理由じゃないの
0070デフォルトの名無しさん2014/12/30(火) 13:56:06.53ID:N20A9NEN
>>68
ごめんなさい、言ってる意味が分からないです。
本当に初心者なんです。
ただ、HTMLの要素として取得しようとしているのではないのです。
あくまで文章が欲しいだけなのです。

>>69
textareaのすぐ後ろにidがあります。間違いありません。
ただ、idの後ろにstyleがごちゃごちゃ入ってます。
<textarea id="abc" style="width:40em@important;">文章1(改行付き)</textarea>
という感じです。
0071デフォルトの名無しさん2014/12/30(火) 13:58:25.05ID:WfP/XooQ
>>70
そりゃ改行のせいだ
(?<bun>[^>]*)とかに変えてみたら
0072デフォルトの名無しさん2014/12/30(火) 13:59:06.22ID:w+AR/+6R
俺ならDOMで取り出す
0073デフォルトの名無しさん2014/12/30(火) 14:02:00.64ID:i/f4ZUzi
RegexOptions.Singleline
0074デフォルトの名無しさん2014/12/30(火) 14:03:10.98ID:dxBK7ujR
>>70
Webページから情報を抜くのには大きく分けて2つの方法がある
・HTMLソースをプレーンな文字列として扱い、正規表現などで必要なデータを抜く方法
・HTMLの構造(DOM)を論理的に解析してXPathなどで必要なデータを抜く方法
複雑になってくると前者じゃ対応できなくなるので後者を使う
後者なら>>68で言ったようなライブラリを利用してHTMLの解析を行う必要が有る
0075デフォルトの名無しさん2014/12/30(火) 14:10:16.02ID:w+AR/+6R
仕様変更に強くすることを考えないようじゃ
いつまでたっても初心者
0076742014/12/30(火) 14:11:32.01ID:dxBK7ujR
ちなみに、後者のやり方さえ知ってれば単純な場合でも大抵後者の方が早いよ
正規表現が有効なのは、HTMLの構造とは無関係にURLとか時刻とか特定のパターンを抜き出す場合かな
0077デフォルトの名無しさん2014/12/30(火) 14:13:27.86ID:N20A9NEN
>>71,73
どちらもやってみたのですが駄目でした。やっぱりnullになります。

>>74
ありがとうございます。
私は前者です。
0078デフォルトの名無しさん2014/12/30(火) 14:20:17.29ID:N20A9NEN
すみません。俄然Html Agility Packに興味が出てきました。
謎を放置するのはよくないとは思うのですが、
Html Agility Packをちょっと調べてみます。
ありがとうございました。
>>ID:WfP/XooQさん本当にありがとうございます。
0079デフォルトの名無しさん2014/12/30(火) 16:15:56.86ID:N20A9NEN
何度もすみません。
おかげさまでHtml Agility Packであっさり取れました。ありがとうございました。

ところで今回、初めて外部からdllを参照したのですが、
Releaseして作ったexeファイルをよそのPCで使うとき、このdllもそのPCにコピーする
必要があるのでしょうか。
0080デフォルトの名無しさん2014/12/30(火) 23:26:44.33ID:RTKUjPuf
演算子のオーバーロードって何に使うんですか!?
0081デフォルトの名無しさん2014/12/30(火) 23:57:20.34ID:8ULPcfoj
1+1=3だと言いはるため
0082デフォルトの名無しさん2014/12/31(水) 00:00:46.64ID:TRuhXuQQ
>>81
それってオーバーライドじゃね?
0083デフォルトの名無しさん2014/12/31(水) 00:05:40.58ID:OSM3Gjj+
+より*が優先される
みたいなインチキは普通のメソッドでは出来ないっしょ
0084デフォルトの名無しさん2014/12/31(水) 00:07:33.18ID:JGm7gXmH
何って、例えば文字列に + が無かったら不便だろ?
"abc" + "def" を
"abc".Append("def") みたいに書かないといけなくなる。
表現したい対象が記号的に書かれているときに
なるべくそれに近い形で記述できるようにするため。数学の行列とかな
0085デフォルトの名無しさん2014/12/31(水) 07:01:52.14ID:eL28qisr
>>80
たとえば、longなら足せるのにintだと足せないと不便だろ
あるいはクラス同士を+で計算させたいときとか
そう言うときに+演算子をオーバーロードする
0086デフォルトの名無しさん2014/12/31(水) 07:03:24.58ID:EgsEk8JH
できない言語使ってみればありがたみが分かるよ
0087デフォルトの名無しさん2014/12/31(水) 07:13:24.12ID:EgsEk8JH
>>79
必要ある
自分のPCで使うとか、仲間内で使うならどうでもいいが
一般に配布するならライブラリのライセンスを必ず読むように
MS-PLだからHtml Agility PackのReadmeをコピーしとくだけでいいと思うが
0088デフォルトの名無しさん2014/12/31(水) 09:42:56.15ID:YDQsvMna
>>87
ありがとうございました。
仲間内で使うだけですが念のためライセンスも読みます。
0089デフォルトの名無しさん2014/12/31(水) 10:58:31.33ID:U0APx8aX
>>82
ばか。はずれです。
0090デフォルトの名無しさん2014/12/31(水) 11:00:58.68ID:EgsEk8JH
しねしねこうせんはいらないよ
0091デフォルトの名無しさん2014/12/31(水) 14:32:45.39ID:ySiWi1AV
オーバーロード = 多重定義
オーバーライド = 上書定義

日本語訳を使えば混同することもないのにな。
思えば明治の先人達は偉大だな。
0092デフォルトの名無しさん2014/12/31(水) 14:50:24.43ID:xBAfdsiM
日本語で勉強してたらマトモな情報が入ってこないがな
 s ?? "empty " ヌル合体演算子
 @"" 逐(ちく)語的文字列リテラル
とか読んでて恥ずかしくなる
0093デフォルトの名無しさん2014/12/31(水) 15:00:31.96ID:ySiWi1AV
ああ、ごめん。
何でもかんでもってわけではないし、比較的新しい用語なんかは無理だと思ってる。

ただカタカナ用語やアクロニムが氾濫しているのと、相変わらず日本人は英語が苦手なのを見ると
古典的な用語くらいは日本語訳を使うようにした方がいいのではないかと思ったりする。
0094デフォルトの名無しさん2014/12/31(水) 16:09:10.23ID:U0APx8aX
演算子の処理をそのクラスで上書きしてると思ってれば結局同じことでは?
0095デフォルトの名無しさん2014/12/31(水) 16:28:30.10ID:grXbYJWV
オーバーロードとオーバーライドの区別は、
オーバー"ロード"を「道路」の上下が無いイメージで多重定義としてる
0096デフォルトの名無しさん2014/12/31(水) 16:49:27.63ID:PlkTysnT
>>91ってOverrideとOverwriteを混同してないか
0097デフォルトの名無しさん2014/12/31(水) 17:10:33.32ID:ySiWi1AV
>>96
あああ、直訳でいえばそうね。
でもそうすると「上乗せ定義」とかになっちゃう。
0098デフォルトの名無しさん2014/12/31(水) 18:02:01.61ID:T0T5zcAf
上乗せてw
どこの辞書にそんな訳が乗ってるんだw
0099デフォルトの名無しさん2014/12/31(水) 18:24:38.12ID:rt/mswfH
override
アクセント・音節o`ver・ri'de
【動詞】 【他動詞】
(‐rode; ‐rid・den)

1

〈命令・権利などを〉無視する,受け付けない; 〈決定などを〉くつがえす,無効にする.

用例
We overrode their objections. 我々は彼らの反対を押し切った.

2

〈ある事が〉〈他の事に〉優先する.
0100デフォルトの名無しさん2014/12/31(水) 18:28:55.60ID:PlkTysnT
overloadの方に言及している可能性も一応
0101デフォルトの名無しさん2014/12/31(水) 18:34:47.96ID:rLmhNqZj
おまえらって1学ぶのに10調べないといけないタイプなんだろうな
0102デフォルトの名無しさん2014/12/31(水) 18:56:16.30ID:EgsEk8JH
ていうか暇そうです
0103デフォルトの名無しさん2014/12/31(水) 19:26:49.02ID:OSM3Gjj+
overrideは上書きしてるんだって10年以上思い続けてるんだから変なコト言うなよ
0104デフォルトの名無しさん2014/12/31(水) 19:28:02.53ID:0u0QLS/Z
大晦日になにやってんの?ww
0105デフォルトの名無しさん2014/12/31(水) 19:46:49.75ID:j3Zbjw8k
>>103
それは命令とか操作とかメソッドとかを対象とする限りにおいては正しいよ。
0106デフォルトの名無しさん2014/12/31(水) 19:56:14.88ID:PlkTysnT
シャドーイングを「上書き」と表現してはいけない理由もないけどな
0107デフォルトの名無しさん2014/12/31(水) 20:36:26.36ID:9BMMkaI5
シャドウイングはオブジェクトをベースクラスのとして扱った場合は
ベースクラスのメソッドが呼び出されるのだから、オブジェクトのメソッドが上書きされているという
感覚ではないな。

それを言ったらシャドウだの隠蔽だのというのもあまり適切じゃないが、
まあそれでも上書きよりはまし。
0108デフォルトの名無しさん2014/12/31(水) 22:02:54.42ID:OkvfuZfh
現在、趣味でとあるサイト(youtubeのような作品共有系)から情報を取ってくるライブラリを作成していて、
その中には4種類のクライアントクラスがあります。(APIを叩く or ウェブスクレイピング,ログイン or 非ログインの組み合わせ)
また、そのサイトの新着作品の取得方法は5種類ほどあり、クライアントによってどれが使用できるかは異なります。
このとき新着作品を取得するメソッドの実装について

1. GetNewItems,GetNewItemsFromFriends...のようにそれぞれ別メソッドとする
2. Enumを引数に取るメソッド1つで呼び分ける
 2a. Enumはすべてのクライアントで共通
 2b. Enumはクライアントに対応して4種類つくる
 2c. System.Net.Htttp.HttpMethodのようなEnumのようなクラスを引数にする
3. 検索系メソッドと合わせて1つのメソッドとして定義して、Linqっぽい何かで呼び分ける

の3種類を思いついたのですがどれもいまいちに思えます。
このような場合どのようにするのがC#的に正しいのか教えてください
0109デフォルトの名無しさん2014/12/31(水) 22:03:13.98ID:cv1nWKmz
class MyVector2 {
 public float x, y;

 public MyVector2( float x, float y ) {
  this.x = x; this.y = x;
 }
}
↑のような2Dベクトルクラスを作ったとして
 MyVector2 a = new MyVector2( 0f, 0f ),
         b = new MyVector2( 0f, 0f );
 a = b;
 b.x = 99f;

とすると、参照型の代入なので、当然 a.x の値も 99f になると思います。
これを値型の代入の様にするにはどうすればよいのでしょうか?
= 演算子のオーバーロードかと思ったのですが、= はオーバーロード不可でした。
unity で c# スクリプトを使っているとき、

Vector2 a = new Vector2( 0f, 0f ),
      b = new Vector2( 0f, 0f );
 a = b;
 b.x = 99f;

とした場合、a.x は 0f のままになっているので、どうやっているのか疑問に思いました。
Vector2 は構造体ではなく、クラスです。 これは c# は関係なく、unity独自の仕様なのでしょうか
0110デフォルトの名無しさん2014/12/31(水) 22:11:22.71ID:OSM3Gjj+
http://docs-jp.unity3d.com/Documentation/ScriptReference/Vector2.html

構造体なだけやろ
0111デフォルトの名無しさん2014/12/31(水) 22:20:33.41ID:cv1nWKmz
>>110 さん
構造体だったんですね、失礼しました。
勝手に、コンストラクタやメソッドがあるのはクラスだと思い込んでいました。
ありがとうございました。
0112デフォルトの名無しさん2014/12/31(水) 22:33:12.42ID:EgsEk8JH
>>108
そもそもクライアントクラスが異なるなら同じ名前で定義すりゃいいんじゃないの
セマンティックが同じなら、同じ名前で定義されているのはむしろ推奨事項
特筆すべき違いがあり、ユーザーがそれを意識しなければならない、なら別だが

もっと言えば、インターフェースは先に練るんだ
自分で「こう使いたい!」って使用例を書いておけば、テストにも使えて一石二鳥だろう
01131122014/12/31(水) 22:46:33.08ID:pHfJGcxB
カップめん買いに来て誤解に気づいた
その用途なら99%メソッドを分けるべき
Enumは止めろ
0114デフォルトの名無しさん2015/01/01(木) 13:19:46.02ID:tClRqcaF
>>108
C#で1個のメソッドですむならデリゲート使った方がいいと思う。
>>108の文章でいうと「Linqっぽい何か」がデリゲート。
どこかに定義しておいたメソッドを、引数として渡す。
Func<T>とかAction<T>で検索したら使い方がわかるかもしれない。

1個のメソッドですまないならStrategyパターンを使った方がいいかもしれない。
C#だとIEqualityComparer<T>がこのケース。EqualsメソッドとGetHashCodeメソッドをひとまとめにしてる。
0115デフォルトの名無しさん2015/01/01(木) 14:12:20.20ID:elhRbHDr
>>108
なんか質問の趣旨がいまいち理解できないんだけど、
4種類のクラスを透過的に扱う必要があるのなら(普通そうだと思うんだけど)
自動的に2bはないし、それぞれのクラスがどの取得方法をサポートしてるか、
インスタンス自身に教えてもらう方が便利だと思うから、そういうことなら2aかなあ。
0116デフォルトの名無しさん2015/01/01(木) 16:37:04.94ID:yP9EWtKr
その4種類の区別の必要性と、メソッドを呼び分ける必要性と条件が解らんが

4種類のクライアントクラスを、一つのクラスから派生させるかインターフェイスを実装する
そのベースクラスかインターフェイスに取得メソッドを定義する

っていう話じゃないのか
0117デフォルトの名無しさん2015/01/01(木) 18:24:29.06ID:dlaa3g2E
誰がライブラリを使うのかによるかな
自分のアプリで使うのなら、汎用化は考えないでAPIの仕様よりもアプリの要件に合わせた形で抽象化する
クライアントライブラリとして単独で人に使わせるのなら、
余計なことはなるべくしないでAPIの仕様を素直に表現した形にする
0118デフォルトの名無しさん2015/01/03(土) 00:41:24.70ID:bQ6TtfgT
HttpRequest、HttpResponseで通信速度を測定するにはどうすればいいんでしょうか?

以下のようなソースです
FileStream fs = new FileStream("hoge", FileMode.Create, FileAccess.Write);
while ((b = st.ReadByte()) != -1) fs.WriteByte(Convert.ToByte(b));

FileStreamで書き出しているときのwhile文の中に突っ込むんだと思いますが方法が思い浮かびません
0119デフォルトの名無しさん2015/01/03(土) 01:17:27.03ID:TeAjaTLz
本気で言ってるのかオイ
車の速度を求めろみたいな問題って中学校程度でも出題されなかったっけ?
0120デフォルトの名無しさん2015/01/03(土) 01:22:59.09ID:wC6UcXAn
>>119
本気で言ってるのかオイ
この手の問題ってスゲー難しい

>>118
ブロッキングでダウンロードして書き込みサイズを返す関数用意して、その呼び出し前後の日時から計算
面倒だからwhileの中におくとかそういうことは考えるなw
0121デフォルトの名無しさん2015/01/03(土) 08:43:56.01ID:C22WgX+v
動的に計算するなら、一定時間ごとに読めたバイト数から割り出す
逆は安定しないからダメ
0122デフォルトの名無しさん2015/01/03(土) 10:26:48.15ID:/RufqNQ1
レスポンスタイムじゃなくて通信速度?
多重処理ありなら安定しなくね
0123デフォルトの名無しさん2015/01/03(土) 10:34:37.36ID:CffKDJ+L
↑アスペ
0124デフォルトの名無しさん2015/01/03(土) 12:18:46.65ID:RaGW3an6
安価付けられないの?
0125デフォルトの名無しさん2015/01/03(土) 15:53:13.65ID:vpJzsx37
項目外をクリックしても選択の外れないListViewはどうしたら作れるんでしょうか
0126デフォルトの名無しさん2015/01/03(土) 20:20:12.70ID:j/TgmM2H
HideSelectionのこと?
0127デフォルトの名無しさん2015/01/03(土) 20:41:46.11ID:/RufqNQ1
>>125
lostfocusイベントでfocusメソッド
0128デフォルトの名無しさん2015/01/03(土) 22:04:57.58ID:IVstpTxY
VisualStudio2013にてフォームアプリケーションを作成中
画像や大きさの違う文字情報を表示するリッチなボタンを作りたくPanelにLabel、PictureBoxを入れ子にしてClickイベントを作成ました
ただMouseHoverで色をかえMouseLeaveで色を戻すようにしたのですが入れ子にしたLabelやPictureBoxにマウスが乗るとMouseLeaveが発火して色がもとに戻ってしまいます
なにかいい方法を知っている方はおりますでしょうか?よろしくお願いします
0129デフォルトの名無しさん2015/01/03(土) 22:22:58.92ID:l7CAXr1c
>>128
面倒なだけで難しくはない。

マウスポインタがコンテナの上に乗った時には、コンテナまたはコントロールのMouseEnterが発生する。

コンテナの上から離れたかどうかは、コンテナまたはコントロールのMouseLeaveのイベントハンドラで
現在のマウスポインタの座標がコンテナの四角の内側かどうかを検査すれば検出できる。
0130デフォルトの名無しさん2015/01/03(土) 22:27:43.67ID:l7CAXr1c
WPF嫌いだけどこういうのだけはWPFはよく出来てるよね。
0131デフォルトの名無しさん2015/01/03(土) 23:21:56.92ID:IVstpTxY
>>129
ありがとうございます
MouseLeaveは発火させるけど内側にあれば色を変えない処理を追加すればいけそうですね
0132デフォルトの名無しさん2015/01/03(土) 23:48:48.28ID:C22WgX+v
WPFならVisualStateManagerで宣言するだけなんだっけ
0133デフォルトの名無しさん2015/01/04(日) 04:06:00.15ID:+4+2gDp2
クラスのあるメソッドを指定したら全てのインスタンスでそのメソッドが実行されるような処理を書きたいです
指定するメソッドが複数あるので汎用性のある1つの処理を書くことで実装したいのですがどのような方法があるのでしょうか?
0134デフォルトの名無しさん2015/01/04(日) 04:55:11.54ID:jYa3l0BJ
>>133
私初心者ですが、そーゆうのはデリゲードでいけるのでは??
0135デフォルトの名無しさん2015/01/04(日) 10:39:15.52ID:lrHbTIEs
>>133
それこそeventの役目だね
0136デフォルトの名無しさん2015/01/04(日) 11:07:06.91ID:oAitY7sD
>>133
そういうのは対象のオブジェクトを最初から全部コレクションに入れて管理する。
全てに対するメソッド呼び出しはforeachで片っ端からメソッド呼ぶだけ。
newされたインスタンス全てに〜みたいなのはテストしづらいしメモリリークもしやすかったり
後々のことを考えるとかえって面倒になりがちな悪手
0137デフォルトの名無しさん2015/01/04(日) 11:31:22.49ID:+rZjO+Yw
とはいえ、必要ならやるんですけどね
0138デフォルトの名無しさん2015/01/04(日) 11:55:53.75ID:V2qD8ALg
全てのインスタンスを列挙してラムダ式でメソッドを呼び出す
つまりLINQっぽくやればいいだけじゃね
0139デフォルトの名無しさん2015/01/04(日) 12:48:08.72ID:DGMGQgei
そういう事をやりたいと考える時点でもうダメぽ
0140デフォルトの名無しさん2015/01/04(日) 19:01:53.16ID:rmXjkuoF
まず静的メソッドか静的クラス検討すべき
次にシングルトン
それでダメそうなら、全インスタンス保持
0141デフォルトの名無しさん2015/01/04(日) 23:04:12.18ID:+4+2gDp2
133です。皆さんありがとうございます。
>>136さんの方法が現状では一番書きやすかったのでまずはその方法で実装してみましたが、
1つ1つ勉強してどれが最適か調べたいと思います。
0142デフォルトの名無しさん2015/01/05(月) 07:11:25.75ID:XxQBMLfC
だれか回答してあげて
http://q.hatena.ne.jp/1420260398
0143デフォルトの名無しさん2015/01/05(月) 07:53:40.82ID:FjQWap8T
場所柄マサカリが飛び交うから俺らが何かするまでもない。
0144デフォルトの名無しさん2015/01/05(月) 09:30:54.61ID:0G+rQibS
イテレーターをインデックス付きでforeachする方法はありませんか
foreach(var node in nodes){
  // iが欲しい
}
0145デフォルトの名無しさん2015/01/05(月) 09:43:32.21ID:3amSw5Dj
foreach (var pair in nodes.Select((node, i) => new { node, i })) {
&nbsp; &nbsp; Console.WriteLine("{0}={1}", pair.i, pair.node);
}
0146デフォルトの名無しさん2015/01/05(月) 10:15:32.03ID:+R2flTDU
>>144
IX-MainのForEach
ラムダ式が必要になるけど
0147デフォルトの名無しさん2015/01/05(月) 10:21:07.23ID:X/XHMwki
さすがにその程度のことにいちいち外部のライブラリ持ってくるのは頭悪すぎる
自分で書いても数行だろ
0148デフォルトの名無しさん2015/01/05(月) 11:05:36.15ID:R0+uea2O
インデックス必要なら
for(int i=0; i<nodes.length;
でやっちゃうなあ
0149デフォルトの名無しさん2015/01/05(月) 11:07:44.39ID:FjQWap8T
俺は黙ってループ変数を定義しちゃうな
よほどの場合を除いてプログラムの目的とは無関係だろうし
0150デフォルトの名無しさん2015/01/05(月) 11:11:04.18ID:0eh7fjHk
オブジェクト指向で条件分岐は減らせるけど、ループがね。
だから、そのループを無くせるLINQはオブジェクト指向レベルのパラダイムシフトと思ってる

まあ、元々SQLからの借り物だけどさ
0151デフォルトの名無しさん2015/01/05(月) 11:31:10.66ID:+R2flTDU
>>147
俺はDoのためだけに入れてるんだよ

ライブラリ嫌うのならソースをコピペすりゃいいし
0152デフォルトの名無しさん2015/01/05(月) 13:02:28.87ID:RGzLdFAf
>>144の処理を頻繁に書くならコードスニペットを作ればいいよ
0153デフォルトの名無しさん2015/01/05(月) 17:41:44.64ID:rC18hp2B
VSエクスプレス2013 DesktopのC#で作ったプログラムが
キングソフトにウィルス扱いされたのですが
よくあることですか?
それともやっぱり感染してる疑いがあるのでしょうか。
0154デフォルトの名無しさん2015/01/05(月) 17:44:28.71ID:h4yXwV7R
お前さんが気づいてないだけで
ウィルス地味た挙動のプログラム書いたんじゃないの?
0155デフォルトの名無しさん2015/01/05(月) 17:51:00.83ID:rC18hp2B
既存ファイル読み込んで解析して
ファイルに書き出して保存
あとファイルのリネームと
ファイルとフォルダの移動

…ぐらいなんだけど
トロイ呼ばわりされて削除されました
アバスト環境で作ってて問題はありませんでした
キングソフトが入った他のPCで作ったプログラムを
起動させたところウィルス検出されまして…
0156デフォルトの名無しさん2015/01/05(月) 17:54:04.08ID:0j9h2TO/
トムジョーンズだな。
https://www.youtube.com/watch?v=yca2BCwAnBQ
0157デフォルトの名無しさん2015/01/05(月) 17:55:21.12ID:rC18hp2B
ぐぐったら
----------------------------------------------------------------
237 :名無しさん@お腹いっぱい。:2010/11/10(水) 06:27:20
いろんな意味で最強評価を欲しいままのキングソフト入れてみたぜwww

まずは、軽い。この点は評価できる。
FW機能については極めて扱いやすい。コレなら初心者でも理解しやすい。
と、思ったのもつかの間、起動誤直後に誤検出の嵐・嵐・嵐、
問答無用でバリバリ消しますよ。検出率上げるためには手段を選ばずって感じだ。
俺の書きかけのC#スクリプトまで隔離しやがった。話にならん。
そしてうざいポップアップが止まらない。JWORD以上のウザさだ。
しかも有無不明のミニゲームのポップアップとか誰特なんだよw。
----------------------------------------------------------------
という書き込みを見つけたぐらいで、他にはいないので不安になってしまって。
もしかしてよくある事ではなくてこちらの感染を疑ったほうがいいのでしょうか
アバストだと脅威じゃないって言ってくれるのに
0158デフォルトの名無しさん2015/01/05(月) 18:06:10.44ID:0j9h2TO/
>>157
誤検出でしょ。
心配ならこういうの使えば?
https://www.virustotal.com/ja/
https://www.metascan-online.com/

以前会社でキングソフトの奴は使っていたけど、軽くて高機能(でも広告がうっとうしい)だけど、
確かに微妙に誤検出は多かった印象がある。

まあ、どのエンジンでもあるけどね。
0159デフォルトの名無しさん2015/01/05(月) 18:38:03.49ID:rC18hp2B
>>158
ありがとうございます
会社のだから別のに変更は無理そうです
しかも調べてみたらキングソフトは例外とかに設定できないみたいですね
使用中はウィルスガードを切るしかない…というような書き込みも見つけました

何が語検出を招いたんだろう
0160デフォルトの名無しさん2015/01/05(月) 18:42:14.62ID:qKT6IIXS
ウイルスよりもタチ悪いな
0161デフォルトの名無しさん2015/01/05(月) 18:43:27.88ID:0j9h2TO/
>>158は別の検出ソフトの宣伝じゃなくて、オンラインのスキャンエンジンだよw
複数のエンジンを使ってファイルのウィルス感染をチェックできる。
0162デフォルトの名無しさん2015/01/05(月) 18:44:59.06ID:IMLJk69F
キングソフトを使わせる会社ってw
それならMSEでいいだろ
0163デフォルトの名無しさん2015/01/05(月) 18:55:04.32ID:wIPFuinN
キングソフトってステマで有名なのに導入してる会社もあるんだな…値段か
0164デフォルトの名無しさん2015/01/05(月) 19:03:39.40ID:Y6BCcXgq
ああ・・・よいよね、の会社だっけ
0165デフォルトの名無しさん2015/01/05(月) 19:04:23.06ID:0j9h2TO/
ステマっていうか、むしろWEB上のレビューを見るとネトウヨチックな奴が顔真っ赤にして
ネガティブキャンペーンをやってる印象だね個人的にはw(Made in Chinaだからな)

実際使ってみると悪くないよ。
フリーのは広告が鬱陶しいが、昔のAviraみたいにちょっと工夫すれば抑止できるしw
0166デフォルトの名無しさん2015/01/05(月) 19:07:23.80ID:FTlsmlFT
OSデフォルトじゃないウイルス探知ソフトなんて怖くて使えないよ
0167デフォルトの名無しさん2015/01/05(月) 19:24:18.77ID:r6Wcwu97
ひろみちゅが大公開したあれか>ステマ
0168デフォルトの名無しさん2015/01/05(月) 19:37:11.34ID:9dFgiezF
中国製か
たまに起動するアプリケーションなら考えてもいいが
常駐するなんてとんでもない
0169デフォルトの名無しさん2015/01/05(月) 19:40:00.20ID:rC18hp2B
中国製だったのか…うへぇ…
開発者が王さんとかなのかな

先ほど自分のPCのウィルスチェックが終わって
無事、感染ゼロでした。
やっぱり誤検出みたいですね。
どうもありがとうございましたー!
0170デフォルトの名無しさん2015/01/05(月) 21:13:23.55ID:kPyG7jB1
全然関係ないが、キングソフトのKDriveも無料で大容量で結構高速でなかなか良かった。
(ドキュメントのビューワーがないのはイケてなかったが)

これもネトウヨが必死でネガキャンしてたなw
そのせいかあんまり普及せずサービス終了になっちまった。
0171デフォルトの名無しさん2015/01/06(火) 09:35:34.64ID:WtIOryr0
キングソフト、「警告」ポップアップの悪質広告を釈明 「悪質業者によるものが意図せず配信」
http://www.itmedia.co.jp/news/articles/1402/21/news140.html

本当に意図して無かったのかすら疑問だけども、
どっちにしても審査がヌルいのは良くわかる
0172デフォルトの名無しさん2015/01/06(火) 10:02:15.40ID:lRJZAiuN
中国人がマルウエア仕込むのは仕様だから
余程のことがない限り避けるのは常識です
ネトウヨとか関係ない
0173デフォルトの名無しさん2015/01/06(火) 11:48:10.12ID:yfwVhuut
古いソースだが、今後も悪質なものも一定期間配信するよって言ってるなw
0174デフォルトの名無しさん2015/01/06(火) 12:02:23.77ID:mCwwAjJ3
人民解放軍謹製のもんに安全性期待する方がおかしい。
ビジネスでもそういう判断をするんだろうな。
まあ分かり易い指標だ。
0175デフォルトの名無しさん2015/01/06(火) 12:44:45.37ID:9BIJAN3Y
ネトウヨ必死だねw
0176デフォルトの名無しさん2015/01/06(火) 14:08:53.33ID:nQ44NX4P
ネトウヨ連呼厨はKingSoftの関係者なの?
Baiduとか使うやつも公共の敵だよ。
0177デフォルトの名無しさん2015/01/06(火) 14:18:25.59ID:9BIJAN3Y
ネトウヨ王に、俺はなる!まで読んだ。
0178デフォルトの名無しさん2015/01/06(火) 18:53:26.34ID:dav+eZ/8
>>175
韓国人によると、世界の指導者のや大企業経営者の殆ど、ダライラマ、ローマ法王あたりがネトウヨだそうだ。
0179デフォルトの名無しさん2015/01/06(火) 23:02:10.26ID:vxjA33Vl
=> をわかりやすく解説している本を紹介下さい。
0180デフォルトの名無しさん2015/01/06(火) 23:08:10.61ID:Bc4EA3Wj
Rubyでも覚えたら?
初心者向きの丁寧な本が多いし、インライン関数的なもの(ラムダとか匿名メソッドとかRubyのブロックとか)
の使い方がC#とよく似てる
1つの言語をマスターするには最低2言語だよ
0181デフォルトの名無しさん2015/01/06(火) 23:08:17.36ID:7yBhbcNM
ラムダの理論を知りたいの?
使い方を聞きたいの?
0182デフォルトの名無しさん2015/01/06(火) 23:28:38.99ID:yfwVhuut
google先生に聞くのが一番だろ。本とかあてにならない
0183デフォルトの名無しさん2015/01/06(火) 23:57:55.02ID:qlHRI5QU
>>179
川俣大先生の記事で十分。
0184デフォルトの名無しさん2015/01/07(水) 08:37:10.30ID:pOoHqu3J
ラムダまわりはRubyが充実してるな
当時C/C++しか知らなかったからRubyのコレクションとラムダすげーと思った
今はC#があるのでRubyの役目は終わったが・・・
0185デフォルトの名無しさん2015/01/07(水) 08:43:40.51ID:AKPWQzMr
いま再びHOTじゃないですか
外人に互換性についてdisられて
0186デフォルトの名無しさん2015/01/07(水) 14:43:56.39ID:pOoHqu3J
テーブルA(装備品)に現在所持している装備の名前が入っています
装備はテーブルB(武器)とテーブルC(アイテム)のどちらかです

装備品一覧を取り出すLINQはテーブルBとCを探して一致する名前のものを探してこなければいけないのですが、
ORに相当する部分がどう表現したらいいのか分かりません
1個ならこれでいいのですがORで続けてテーブルCも見に行くにはどうしたらいいでしょうか

from eq in Equipments
from wp in Weapons
where eq.Name == wp.Name
select new 〜
0187デフォルトの名無しさん2015/01/07(水) 15:11:52.24ID:CxxL7eUt
いや、joinしようよ…
0188デフォルトの名無しさん2015/01/07(水) 15:39:39.94ID:Gbxh4NCL
そもそもNameで管理するってどうなの
0189デフォルトの名無しさん2015/01/07(水) 15:59:31.58ID:pOoHqu3J
>>187
Joinを使ってAとBのクエリーとAとCのクエリーを結合する方法があるんでしょうか
省略しているところを詳しく教えて下さい
0190デフォルトの名無しさん2015/01/07(水) 16:12:38.25ID:DCfGACWV
文字列で比較とかちょっと
せっかくだし番号つけろよ
0191デフォルトの名無しさん2015/01/07(水) 16:31:33.02ID:GreZiodL
所持品に耐久度とか呪われ属性とか拡張したくなるからクラスオブジェクトのリストにしとこうよ
ItemBaseクラスから派生してさ

さて質問の回答だが
var e = Equipments.Where( eq => Weapons.Any( w => w.Name == eq.Name ) || Items.Any( i => i.Name == eq.Name ) );
0192デフォルトの名無しさん2015/01/07(水) 16:48:07.98ID:pOoHqu3J
あきらめました。ありがとうございました

http://ideone.com/DF8cmp
この2つのクエリー wps と its を1つのクエリーで書きたかったのですが。
このままだと勝手に武器が上にアイテムが下に並び替えられてしまうので
たぶん意図する動作と違うのですが、まあ表示しているものは合ってるのでこれで良いです
難しすぎる
0193デフォルトの名無しさん2015/01/07(水) 17:30:03.64ID:Jika4sDC
C#で
proj1
proj2
を作って、proj2からproj1を参照設定して使っているのですが、
proj1をビルドしてproj1.dllが更新された時に、proj2ではすぐに反映
されず、一旦proj2を終わってもう一度visual studioを起動して
初めてproj1の変更がproj2に伝わるようなのですが、それで正常ですか?
終わらずに瞬時に反映されないのでしょうか?
0194デフォルトの名無しさん2015/01/07(水) 17:53:14.32ID:Gbxh4NCL
すぐ反映ってのは、インテリセンスに表示されるとかそういうの?
dll参照じゃなくてプロジェクト参照してる?
あとVSのバージョンは
0195デフォルトの名無しさん2015/01/07(水) 18:03:41.04ID:Jika4sDC
インテリセンスに反英されません。
DLL参照です。VS2013です
プロジェクト参照というのは使った事が無いのですが、
その方式でないと、瞬時に反映されないのでしょうか?
0196デフォルトの名無しさん2015/01/07(水) 18:09:07.10ID:RuJhlOPs
short [] 配列から、List<short>へ一括コピーはどうすれば出来ますか?
0197デフォルトの名無しさん2015/01/07(水) 18:12:23.57ID:Gbxh4NCL
両方のプロジェクト並行していじるのにそれをDLL参照なんてのはしたこと無いからどうなるかは知らん

>>196
List<short>は既に要素があるのか無いのか、あるなら要素数は一致してるのか
List<short>の新しいインスタンス作って良いのか
0198デフォルトの名無しさん2015/01/07(水) 18:31:54.07ID:MT6qmnuW
Frame.Navigate()でページを遷移した時の音は消すことは出来ないんでしょうか?

また出来ない場合Navigateを使わないページ遷移はありますでしょうか?
0199デフォルトの名無しさん2015/01/07(水) 18:53:22.04ID:XLZDHvL7
stackoverflowでは、Windowsの設定で消すしかないって回答がベストになってますね
ハハハ
0200デフォルトの名無しさん2015/01/07(水) 18:57:32.33ID:XLZDHvL7
設定はこれらしいです
http://web.archive.org/web/20071011234150/http://weblogs.asp.net/plip/archive/2007/10/11/why-won-t-navigationservice-navigate-shut-up.aspx

ところで、俺がNavigation時は音を鳴らすと決めたなら
他の方法で遷移するにしても一貫して音を鳴らすと思いますわ
何がいいたいかというと
0201デフォルトの名無しさん2015/01/07(水) 19:21:57.89ID:2bJiQ9oz
フックで潰したことあるな。素のc#じゃ無理
0202デフォルトの名無しさん2015/01/07(水) 19:33:58.71ID:MT6qmnuW
ありがとうございます
ぐぐってもレジストリを書き換えればいけるとかいてありましたが
そのためだけにわざわざ何度も書き換えるってのはどうなんでしょう・・・
自分で遷移プログラムを書くしかなさそうですね
0203デフォルトの名無しさん2015/01/07(水) 20:15:57.04ID:VFqMjm5v
>>196
short[] array; List<short> list;
があるとして、arrayの全要素をlistに加えるなら
list.AddRange(array)
short[]からList<short>への変換でいいのなら
list = array.ToList() もしくは list = new List<short>(array);
0204デフォルトの名無しさん2015/01/08(木) 19:46:43.58ID:ofIEWV60
あるメソッドを実行して返る可能性があるサブクラスが沢山ある場合、
判別にはどのような方法が適切ですか?
asは微妙な気がするし、isは遅いとネットで見ました
親クラスへ判別用enumプロパティとかを持たせるのはありでしょうか?
0205デフォルトの名無しさん2015/01/08(木) 20:02:33.42ID:5QDHpAvi
>>204
返ってきたサブクラスを判別するより、親クラスにインターフェース持たせる等してサブクラスの種類を意識しない処理にすべきだと思います
0206デフォルトの名無しさん2015/01/08(木) 20:02:47.39ID:m9BFGJK5
サブクラスに判別後に実行する処理を仮想メソッドで追加する
0207デフォルトの名無しさん2015/01/08(木) 20:45:36.21ID:ofIEWV60
レス有り難うございます
>>205-206
説明不足でしたが処理のイメージ的には、
通信解析→通信のタイプ毎にサブクラス生成→UIへ表示するクラスが使う
Message::Parse(raw) → TypeAMessage、TypeBMessage
といった感じで、通信(データ)タイプが全然違う為難しい、というかどう実装すればいいのか思い浮かびませんorz
0208デフォルトの名無しさん2015/01/08(木) 20:55:08.70ID:ZIphMHjt
抽象化は処理の内容じゃなくて目的を考えろ
アプリでどう使うかを前提にするの
0209デフォルトの名無しさん2015/01/08(木) 21:02:07.01ID:5iJyKn99
個人的には
「isは遅いとネットで見ました」
の文言だけでマサカリで膾に刻んでやりたくなる
0210デフォルトの名無しさん2015/01/08(木) 21:10:55.92ID:5iJyKn99
ところで、.NET Frameworkの中にも実クラスを意識せずに取り替えて使えるクラスがたくさんありますよ
StreamとかCollectionとか
眺めてみてはどうですかね
0211デフォルトの名無しさん2015/01/08(木) 21:14:53.49ID:ZIphMHjt
class 207の処理の目的 {
 void 207の処理の目的を達成する(raw) {
  var parser = new MessageParser();
  var message = parser.解析(raw);
  message.UIへ表示(); }}
class MessageParser {
 Message 解析(raw) { return 種類に応じたMessageのサブクラスのインスタンス } }
abstract class Message {
 abstract void UIへ表示(); }
class TextMessage : Message {
 override void UIへ表示() { テキストボックスへ表示 } }
class ImageMessage : Message {
 override void UIへ表示() { ピクチャーボックスへ表示 } }

こんな感じかな
UIへ表示する処理は分離したほうが汎用的になるが、そういうのは必要になってからでいい
あくまで「アプリに適した形で」な
0212デフォルトの名無しさん2015/01/08(木) 23:53:01.59ID:Jy4Wtr7o
MathクラスのExpression版ってありますか?
たとえばMath.Pow(x, 2)ってやると、xの値を2乗した値が返ってきますが
そうではなくx => x * xっていうExpressionが欲しいです
0213デフォルトの名無しさん2015/01/09(金) 00:04:44.62ID:76U25EWY
ExpressionクラスにPowerがあるので、そこから察するに無いんじゃないですかね
0214デフォルトの名無しさん2015/01/09(金) 00:34:33.95ID:1mFh64Ft
>>213
ほうこんなメソッドがあったんですね
でもたまたま累乗があっただけで、Mathの中にある対数関数や平方根関数などさまざまな数学関数のExpression版は無いみたいです、やっぱり自分で作るしかないんですかね
0215デフォルトの名無しさん2015/01/09(金) 03:06:56.48ID:98XsWO7K
エラー無視だけが目的の場合、
try-finally と
try-空catch でどっちを標準にしようか悩んでいます。

finallyはcatch内でthrowしても実行されるから便利だと思いますが、
try-finallyの存在意義が分からず、今のところtry-空catchを標準にしています。
世の中的にはどうなんでしょうか?

private bool disposed = false;
protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
try { Db.Dispose(); }
catch { }
try { Da.Dispose(); }
catch { }
try { Cmd.Dispose(); }
catch { }
disposed = true;
}
}

これをfinallyで書くと意味もなく多重ネストになりますよね?
0216デフォルトの名無しさん2015/01/09(金) 07:09:54.96ID:P+mbU2ix
WindowsFormで
private void button_Click(object sender = null, PaintEventArgs e = null)
みたいにするとbutton_Click()と呼び出せて助かるんですが、一般的なC#の作法的にはこれはありですかね
0217デフォルトの名無しさん2015/01/09(金) 07:12:35.57ID:zvjrVf2X
デフォルト引数はありですが
イベントハンドラーを呼び出すのは無しです
0218デフォルトの名無しさん2015/01/09(金) 07:18:42.64ID:P+mbU2ix
すみません適当にコピペしたせいで混ざってますがPaintEventArgsはEventArgsのつもりです
0219デフォルトの名無しさん2015/01/09(金) 08:08:14.47ID:Xchv982B
そもそもイベントハンドラのメソッドを直接呼び出すのがナシ
内部的な処理ならモデルに実装してそれを呼び出す
UIの処理なら別のメソッドをフォームに定義してそれを呼び出す
0220デフォルトの名無しさん2015/01/09(金) 08:19:27.08ID:MRPcFk1U
>>215
finallyがどういう動作するか理解してないから使い分けできねえんだろ
世の中とかいう話じゃないぞ

あなたのコードでどっち一択なのか言うのは簡単だが
この際だから入門サイトでも読んで自分で考えろ
0221デフォルトの名無しさん2015/01/09(金) 08:35:31.88ID:Xchv982B
>>215
マネージリソースならDisposeでコケるとか考えなくていいよ
最悪GCで消えるんだから
0222デフォルトの名無しさん2015/01/09(金) 08:55:20.47ID:TQr0rLaC
そもそも例外とか考える必要ないよ
0223デフォルトの名無しさん2015/01/09(金) 09:05:56.09ID:MRPcFk1U
スーパーフリー
0224デフォルトの名無しさん2015/01/09(金) 09:32:37.60ID:98XsWO7K
>>221
Db.Disposeで落ちたので空catch付けました
0225デフォルトの名無しさん2015/01/09(金) 13:04:34.68ID:XlbbotlH
>>224
Db.Dispose()で例外が発生するとして、その場合DbはDisposeせずそのままで良いわけ?

常識的に考えて、Disposeを呼んでも例外が発生しないような状態にする手順が存在するはずで、
問題はその手順をスキップしていることだと思うんだけど。
02262072015/01/09(金) 16:52:12.94ID:J2IM1wYA
>>211
具体例まで挙げていただいて有り難うございます
しかし今一どう実装すればいいかイメージが掴めないため勉強し直してきます・・・
他に辞書やVisitorパターンや拡張メソッドによるselect的実装とかもあるみたいですね
綺麗に実装しようとすると本当難しいorz
0227デフォルトの名無しさん2015/01/10(土) 07:59:12.06ID:8dmjK2++
>>225
二度と再現しないのでなんともw
Disposeしないと落ちる律儀なクリレポのせいかもしれません
0228デフォルトの名無しさん2015/01/10(土) 08:54:03.59ID:kTT0/GFr
>>226
そんなもん必要になってからリファクタリングしろ。
>>211でもほとんどの場合は相当なオーバースペックだ。
最初はクラス使わないで普通にswitchなどで分岐して処理することにして、
あとで度々追加が入るようなら考えればいい。
それは207が初心者だからじゃなくて、誰でも最初から未来を予見した最適な設計なんて不可能だから。
だからこの手の質問は「現在こういうコードを書いてるんですがどうリファクタリングしましょうか?」
となるはずで、現物がないなら「目の前の課題だけを達成できる最小限の仕様でやれ」が正解。
0229デフォルトの名無しさん2015/01/10(土) 09:34:08.40ID:C4apcuaR
リファクタリングは勉強になるよな

昔は一度書いたら手を加えるな的だった当時は、ぐちゃぐちゃなコードを書いてたけど、
リファクタリングを覚えてからは、その過程でかなりコーディング力、設計力が上がって、
むしろ最初から綺麗なコードが書けるようになったし。
0230デフォルトの名無しさん2015/01/10(土) 10:41:38.01ID:D1+6ni17
エンバアアアアアアアアアアアアアアアグ
0231デフォルトの名無しさん2015/01/10(土) 10:52:26.30ID:7vXwcAQE
昔はユニットテスト書きまくってたけどリファクタリングの邪魔になるから書くの止めたわ
どうせ一通りテストしたら用済みだしリファクタリングするとテストも書き直さないといけないのがつらい
がんがん実装してテストしてリファクタリングした方がトータルの品質は上がると思った
0232デフォルトの名無しさん2015/01/10(土) 11:01:59.82ID:kTT0/GFr
ユニットテストを自動化するのはリファクタリングで壊さないためだろ
そりゃ毎回手動でテストできる程度の規模ならいいけど
0233デフォルトの名無しさん2015/01/10(土) 11:06:43.37ID:D1+6ni17
テスト書き直しってリファクタリングの前後で「仕様が変わっている」ってことだろ
怖い怖い
0234デフォルトの名無しさん2015/01/10(土) 11:09:16.65ID:kTT0/GFr
>>233
そりゃリファクタリングした箇所の仕様は変わるでしょ
そうでない箇所への影響がないことを既存のテストスイートで確認するんだよ
0235デフォルトの名無しさん2015/01/10(土) 11:11:55.53ID:7vXwcAQE
えっ、リファクタリングしたらクラスもメソッドも画面の遷移も全部変わるだろ
何言ってるんだ
0236デフォルトの名無しさん2015/01/10(土) 11:15:32.46ID:D1+6ni17
ハァ?馬鹿らしいからこれ以上追求しないけど
お前らとはプログラミング上の関わりが生涯一切無いことを祈るわ
0237デフォルトの名無しさん2015/01/10(土) 11:18:09.79ID:kTT0/GFr
一般的にはリファクタリングでプログラムの内部動作は変わるが
同時にその機能を変えてはいけない
機能(つまり客向けの仕様)だけを仕様と呼ぶなら仕様は変わらないね
0238デフォルトの名無しさん2015/01/10(土) 11:21:31.32ID:LrSUtGoP
リファクタリングでpublicメソッド変えちゃまずいだろ…
0239デフォルトの名無しさん2015/01/10(土) 12:33:46.75ID:RVXGAA0v
おまえら全員「リファクタリング」の定義=どこまでやる想定かが違うからはなしが咬み合わないんだよ。ばかばっか
0240デフォルトの名無しさん2015/01/11(日) 00:16:14.55ID:2dm74RqT
>>238と>>235はその通り馬鹿だが
>>237は前提付きで話してるから正しいだろ
0241デフォルトの名無しさん2015/01/11(日) 00:30:30.02ID:8e7vlna2
どこまでをpublicと考えるかによるわな
>>231が想定してる程度の規模なら、ユーザーから見た最終的な振る舞いが変わらない限りそれはリファクタリングなんだろうし、
例えばファサードクラスの中のクラス群をリファクタリングするんなら
中のクラス構成は変わってもファサードクラスを外から見たときの仕様は変えちゃいけないだろうし、
単にprivateメソッド内のwhileループをforに変えるだけの修正ならそのprivateメソッドの動作を変えちゃいけないだろう
そんなもん一律に言える話じゃないよ
ただ、一つのクラスの中で完結するような変更はあまりリファクタリングとは呼ばれないね
0242デフォルトの名無しさん2015/01/11(日) 03:53:23.37ID:4kOuNpF9
ちゃんとファウラーの本読んだのか?クラスの中だけでもリファクタリングだよ
0243デフォルトの名無しさん2015/01/11(日) 05:14:19.16ID:JaKqjIgB
馬鹿の基準では
「俺が読んだ本=基本の最低限」
「俺が読んだ本の内容=世間の常識」
0244デフォルトの名無しさん2015/01/11(日) 05:16:12.96ID:JaKqjIgB
というか意味を理解せずにパターン認識で形を真似ることしかしてないと
>>242のようなとんちんかんなレスが出てくるのだろう
0245デフォルトの名無しさん2015/01/11(日) 05:40:37.93ID:4kOuNpF9
お前大丈夫か?振る舞いをかえないで変更するならリファクタリングだ
241 は正しいが最後の一文は間違いだ
0246デフォルトの名無しさん2015/01/11(日) 05:55:19.47ID:xvMwjBJo
お前ら、何のリファクタリングの話してるの?
メソッド?クラス?ライブラリ?アプリケーション?システム?
0247デフォルトの名無しさん2015/01/11(日) 05:55:46.39ID:aKOigJYt
マウスで透過度50%程度のフォームを他のアプリに被せて、
被せた上のフォーム上からクリックした場合、
そのフォームではなくて、
そのフォームの裏側にみえている部分をクリックする。
というのは可能でしょうか?
X,Y軸はそのままにZ軸のみ
現フォームをスルーするイメージなのですが。
0248デフォルトの名無しさん2015/01/11(日) 07:01:53.88ID:obIPEUqu
ここまで全員バカ
0249デフォルトの名無しさん2015/01/11(日) 08:24:31.10ID:klTNrN6a
ばっかばか
0250デフォルトの名無しさん2015/01/11(日) 08:25:51.25ID:6rCvq4Xh
うんこ
0251デフォルトの名無しさん2015/01/11(日) 09:13:13.37ID:fxK+EsZ/
例えばリファクタリングで結果的にバグフィックスされた場合、挙動が変わったからリファクタリングじゃないと言われると
理屈じゃわかるが納得出来ないな
0252デフォルトの名無しさん2015/01/11(日) 09:40:30.07ID:GJvhev2K
>>251
あんたのいうことも分からんでも無いが
デバッグはやっぱ、デバッグなんだなぁ みつを

あんたの例は デバッグ+リファクタ なんだなぁ 
0253デフォルトの名無しさん2015/01/11(日) 09:46:00.78ID:aOUO6IlL
乱れ飛ぶバカ
0254デフォルトの名無しさん2015/01/11(日) 10:24:51.04ID:Od8Gwx5S
リファクタリングにこれをしちゃいけないとかないよな
気に入らないところは全部直す。これが新のリファクタリング
0255デフォルトの名無しさん2015/01/11(日) 10:30:04.56ID:D8UjnNuz
真
0256デフォルトの名無しさん2015/01/11(日) 10:32:29.87ID:aOUO6IlL
正直、プライベートなコードでは大手術をしてしまうこともある
0257デフォルトの名無しさん2015/01/11(日) 10:58:39.68ID:oX1bE0bV
>>251
そんなリファクタリングじゃエンバグの可能性だってあるだろ
0258デフォルトの名無しさん2015/01/11(日) 11:11:18.37ID:K5Jd2PXD
定義の問題だけど、さまざまな理由で行われるプログラム修正のうち、
機能追加やバグ修正に当てはまらないものを分類してリファクタリングと
呼ばれていると思うんだけどな。
0259デフォルトの名無しさん2015/01/11(日) 12:05:03.09ID:aKOigJYt
>>247
これだれか可能性をおしえてください。
むりなんでしょうか?
0260デフォルトの名無しさん2015/01/11(日) 12:20:46.99ID:aOUO6IlL
いま小さいけど高価なプライドをかけた争いをしているんですよ
ひっこんでいなさい
0261デフォルトの名無しさん2015/01/11(日) 12:25:47.62ID:pjcb3Str
>>260の目にはそう見えるんだな、なぜかw
0262デフォルトの名無しさん2015/01/11(日) 15:01:24.21ID:EVi5A9Z+
>>259
やったことないけどできるらしいよ。
http://msdn.microsoft.com/ja-jp/library/ms997507.aspx

ここの「ヒットテスト」の項にヒントが書いてある。
っていうかググるといろいろ出てくる。
0263デフォルトの名無しさん2015/01/11(日) 15:28:16.87ID:Od8Gwx5S
IEnumerable<A> を期待する関数に IEnumerable<B> を渡すとエラーになるのですが何とかなりませんか
AとBは全く関係のないクラスですが暗黙の型変換が存在します
勝手に変換して欲しいのですが
0264デフォルトの名無しさん2015/01/11(日) 15:34:54.39ID:aOUO6IlL
馬鹿言ってないで、死ね
0265デフォルトの名無しさん2015/01/11(日) 15:40:29.80ID:2uQnlC2S
別に馬鹿ではないだろう
残念ながら言語仕様的に無理なだけ
0266デフォルトの名無しさん2015/01/11(日) 15:59:27.30ID:aKOigJYt
>>262
ありがとうございます。
挑戦してみます!
0267デフォルトの名無しさん2015/01/11(日) 18:47:45.00ID:Mnsudu4t
教えてください
下記のように他のexeを実行して問題なく動作しています
Process.Start(@"C:\Program Files (x86)\Mozilla Firefox\firefox.exe");
Process.Start(@"E:\Application\JaneXeno\Jane2ch.exe");
var pri = new ProcessStartInfo();
pri.FileName = @"D:\hogehoge\hoge";
pri.Verb = "explore";
Process.Start(pri);

ところが自作のアプリケーションを起動しようとすると例外で落ちます
Process.Start(@"E:\Application\JisakuAppli\JisakuAppli.exe"); // ダメ
エラー内容は"JisakuAppli.iniが見つかりません"です
JisakuAppli.exeは起動時にJisakuAppli.iniを読み込んでいます
JaneXeno等も大量のファイル読み込みなどをしているはずなのですが何故自作のだけがダメなんでしょうか
0268デフォルトの名無しさん2015/01/11(日) 18:50:10.46ID:BqofO7st
自作アプリケーションの作りが糞だから落ちるんだろ?
自分で出したエラーメッセージくらい自分で何とかしろ
0269デフォルトの名無しさん2015/01/11(日) 18:54:29.80ID:CYF8relG
>>263
Select(a => (B)a)するしかない
0270デフォルトの名無しさん2015/01/11(日) 19:06:10.36ID:YzoMt1+V
絶対パス指定でないのならAssembly.GetEntryAssembly().Locationからの相対パスにするとか
0271デフォルトの名無しさん2015/01/11(日) 21:01:41.57ID:U/S2RJhF
1)アプリパスは AppDomain.CurrentDomain.BaseDirectory を使ってますが、世の中的にはどうなんでしょうか?
2)アプリ名は Application.ProductName を使ってますが、なぜアプリパスとアプリ名が違うクラスにあるんでしょうか?
3)フォーム内に子クラスを作るとなぜコントロールが見えなくなるんでしょうか?
 そのためどの業務も 呼出、スレッド、アボート という構成にしたいのに、
 コントロールが見えないと無駄に複雑化するため、
 業務A呼出、業務Aスレッド、業務Aアボート という長い関数名の古臭い構成になってしまいます
 あるいは目的からすると、クラスじゃなくても名前空間でもいいんですが
 なぜクラス内に名前空間が作れないんでしょうか?
 この2つの仕様により、徹底的に1階層の長い名前で頑張れと言われてるような気がします
0272デフォルトの名無しさん2015/01/11(日) 21:15:02.36ID:hXDAFv79
2に関してはアプリケーションとアプリケーションドメインは1対1の関係じゃないからです
1つのアプリケーションは複数のアプリケーションドメインを持つことができます
0273デフォルトの名無しさん2015/01/11(日) 21:17:46.45ID:8e7vlna2
3はそこまで巨大なフォームクラスを作成することが想定されていないからです
正しくオブジェクト指向でクラスを分けましょう
0274デフォルトの名無しさん2015/01/11(日) 21:59:35.26ID:YzoMt1+V
>>273
コントロールの可視性はプロパティでModifiersを弄ればprivate以外に変更できるので違います
0275デフォルトの名無しさん2015/01/11(日) 22:05:55.80ID:8e7vlna2
>>274
ネストクラスから親クラス(フォーム)のコントロールが見えないって言ってるんだからアクセスレベルは関係ない
ネストクラスのインスタンスにフォームの参照を渡せばprivateのままでアクセスはできる
なんでJavaみたいにデフォルトで渡るようになってないかというと、C#にはデリゲートがあるからだけど
それ以前に利用者が正しくOOPを理解しているのは大前提だ
0276デフォルトの名無しさん2015/01/13(火) 09:26:25.47ID:ItHN1w7Z
型Tの制約としてインターフェースのみを受け付けたい時はどう書けばいいですか?
いろんなオブジェクトの配列から特定のインターフェースを持った物だけを取り出す
 T GetInterfece<T>() where T : (インターフェース) {
  return list.Where (x => x is T);
 }
みたいな
0277デフォルトの名無しさん2015/01/13(火) 10:09:25.11ID:NaldXlx/
無いし、インターフェイスに限定する必然性が分からない
0278デフォルトの名無しさん2015/01/13(火) 10:19:21.17ID:AqTwJbr7
特定のインターフェイスじゃない「インターフェイス」という制約に意味ないだろ
そもそもなんの制約にもなってないし
「インターフェイス」という実体があるわけじゃないんだから
0279デフォルトの名無しさん2015/01/13(火) 10:43:30.78ID:Bzux8NDL
謎
02802762015/01/13(火) 11:01:35.88ID:ItHN1w7Z
???
GetInterface<T>の戻り値が必ず(クラスではなく)インターフェースであることを保証したい
これは一般的な要求だと思いますが。
インターフェースのみに限定する型制約が見つからないのは言語の不備?
0281デフォルトの名無しさん2015/01/13(火) 11:08:54.71ID:NaldXlx/
それが一般的な要求だと思う人にとっては言語の不備なんだろうな
ヘルスバーグにとっては一般的な要求ではなかったようだ
0282デフォルトの名無しさん2015/01/13(火) 11:20:46.85ID:Bzux8NDL
お前の頭の不備だよマヌケ野郎
0283デフォルトの名無しさん2015/01/13(火) 11:31:59.42ID:bA3D0Sru
ぼくのおもうきのうはすべてじゅんびされてなければだめげんごです
0284デフォルトの名無しさん2015/01/13(火) 11:35:54.05ID:BTahNs+b
>>280
一般的な要求ならCLRに用意されてる筈だが、.NETの他の言語にもないので、一般的な要求じゃないのだろう
0285デフォルトの名無しさん2015/01/13(火) 11:48:24.27ID:vpT+sQRl
Goなんかから入門するとそういう思考になるかもしれん
0286デフォルトの名無しさん2015/01/13(火) 12:33:00.46ID:Ev7UJkAF
そもそも何を言ってるのか意味が分からんなw
これがデリゲートなら確かにある程度一般的な要求と言えるかもしれんが。

そもそもある型が「インターフェイスである」ってどいう意味だよ。
classでもstructでもない、interfaceのインスタンスなんてものが存在するとでも思ってるのかなw

yield returnだって実態はクラスだろw
0287デフォルトの名無しさん2015/01/13(火) 15:19:59.33ID:EgpJPdyV
Form1にlabel1とButton1を貼り付けて
以下のコードを実行しても赤い文字で「赤い文字」というラベルに変わらないのですがどういうことなんでしょうか?

http://ideone.com/l0ECQ9

エラーは出力されずに実行されるのですが
元のlabel1が表示されたままで色もテキストも変わりません・・・
0288デフォルトの名無しさん2015/01/13(火) 15:32:09.18ID:NaldXlx/
FormのControlsに追加してないじゃん
ていうか既存のLabelがあるんなら、わざわざ新しいLabelをnewしなくても
既存のLabelのプロパティ操作するだけじゃ駄目なの?
0289デフォルトの名無しさん2015/01/13(火) 15:34:47.07ID:yhjeAfR4
>>276
>>return list.Where (x => x is T);
これはないわ、OfType<T>()使えばいいだけだろ
0290デフォルトの名無しさん2015/01/13(火) 15:44:36.72ID:BTahNs+b
>>287
いろいろつっこみどこのおおいこーどだな
test メソッドstaticでいいやん
つかなぜ貼り付けてるLabelのプロパティ変えないのかと
0291デフォルトの名無しさん2015/01/13(火) 15:49:36.37ID:uNhlsIS+
インスタンスと変数の区別がつかない初心者の「バカの壁」だなw
コントロールはNameなんてのもあるせいで余計混乱しやすい
0292デフォルトの名無しさん2015/01/13(火) 16:03:42.49ID:5XhR7bQ4
typeof(T).IsInterface見て判断するんじゃダメなんか?
0293デフォルトの名無しさん2015/01/13(火) 22:40:51.22ID:sZyk+VqX
>>270
268です
遅レスですがJisakuAppliの.iniファイルの指定を
private const string configFileName = @"\JisakuAppli.ini";
...
var configFilePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + configFileName;
で解決出来ました
ありがとうございました
0294デフォルトの名無しさん2015/01/13(火) 23:03:48.73ID:2vD2D518
new Uri(new Uri(Assembly.GetExecutingAssembly().Location), configFileName).LocalPathにすべきだったね
0295デフォルトの名無しさん2015/01/15(木) 09:18:13.25ID:k20V67BW
にゃーんで?
0296デフォルトの名無しさん2015/01/15(木) 20:50:54.07ID:r4XhfXoN
別にPath.Combineでもいいけど>>293は文字列結合だからね
0297デフォルトの名無しさん2015/01/18(日) 00:02:13.53ID:bftrsdY7
んでんでんで〜
0298デフォルトの名無しさん2015/01/18(日) 16:38:10.79ID:+FloxSLW
以下のコードで選択ノードを1つ上に移動させているのですが、
移動後の選択ノードが元ノードの位置の1つ下になってしまいますが
移動先のノードを選択ノードにしたいのですが、どうすればよいでしょうか。

TreeNode tn = treeView1.SelectedNode;
if (treeView1.SelectedNode != null)
{
if (tn.Parent == null)
{
return;
}
else
{
if (tn.PrevNode != null)
{
treeView1.Nodes.Remove(tn);
treeView1.Nodes[1].Nodes.Insert(tn.Index - 1, tn);
// ここまで成功

tn = tn.PrevNode; // ダメ
}
}
}
0299デフォルトの名無しさん2015/01/18(日) 21:07:20.86ID:6tjPVM37
Formクラスと他のクラスが互い関数が呼び合うのってコーディング的にみたらどうなんでしょうか?
たとえばFormクラスから他のクラスに処理を投げた後で他のクラスでユーザーにエラーを通知するために
メッセージボックスやログの表示などをするためにFormクラスの関数を呼ぶ等なです
0300デフォルトの名無しさん2015/01/18(日) 21:41:23.80ID:vYre8goe
あまり良くはないが、相手が同じプロジェクトのフォームやコントロールなら無くはない
表示より下の階層のコンポーネントならやめとくべき
0301デフォルトの名無しさん2015/01/18(日) 22:25:14.93ID:RIcPSvtC
>>299
相互参照なんて論外。
そんなものはイベントや戻り値でいくらでも通知できるじゃないか。
0302デフォルトの名無しさん2015/01/19(月) 19:05:42.45ID:La8xFARY
>>298
自己解決しました。
treeView1.SelectedNode = tn;
これだけのことでした。
0303デフォルトの名無しさん2015/01/20(火) 03:08:42.79ID:vQGgnXvS
WebClientクラスを利用して、必要な情報をもってくる
簡易的なクローラーを作成したのですが、
アクセスが高頻度になってしまう事が懸念点です。

アクセスは最初の一度だけでその後、動的に変わる
ウェブ情報を更新し続けることは可能でしょうか?
0304デフォルトの名無しさん2015/01/20(火) 07:00:19.07ID:quI2Cspp
そんな都合のいい方法はない
ページが更新された場合だけ中身をダウンロードするというのは一般的に行われるが、
それはWebClientを使ってるなら勝手にやってくれてるから自分で実装する必要はない
0305デフォルトの名無しさん2015/01/20(火) 15:52:49.81ID:qQPTO4lD
>>303
逮捕されかねないぞ
0306デフォルトの名無しさん2015/01/20(火) 16:07:14.64ID:e9cTGLx2
MDISが作ったシステムとか怖いからな
0307デフォルトの名無しさん2015/01/20(火) 20:08:29.46ID:u9ORHPvB
三菱?
0308デフォルトの名無しさん2015/01/20(火) 20:11:18.33ID:xzrs5cc2
>>303
高頻度ってなんだ
1秒に一回とかとってきてんのか?
そんなに見に行く必要あんのか?
0309デフォルトの名無しさん2015/01/20(火) 20:34:25.28ID:kZYmWoxz
用途によっちゃもっと高頻度で見に行きたいなw
0310デフォルトの名無しさん2015/01/20(火) 20:36:22.15ID:JNlE/+5w
上限が撤廃されたりするからな
0311デフォルトの名無しさん2015/01/20(火) 20:38:39.51ID:clWb25BP
>>301
イベント等はわかるんですがどうやって通知すればいいのかわからないんです
いつもはこんな感じでコード書いているんですがどうやってイベント通知したらいいんでしょうか?

http://ideone.com/mDqg5L
0312デフォルトの名無しさん2015/01/20(火) 20:53:07.77ID:pE35F5iH
Class1側に

public event EventHandler Complete;
public event EventHandler Timeout;

とか定義しといてForm1側で

var c = new Class1();
c.Timeout+= (s,args) => MsgBox("タイムアウト");
c.Complete+= (s,args) => LogWrite("ファイル書き込み成功");
Thread t = new Thread(new ThreadStart(c.Method));
t.Start();

Class1でイベント呼ぶのは

var h = Complete;
if (h != null) {
 h(this, EventArgs.Empty);
}

って感じ
0313デフォルトの名無しさん2015/01/20(火) 21:31:23.44ID:8DiBARKh
>>312
そのまままねして例外で落ちたりしてな。
0314デフォルトの名無しさん2015/01/21(水) 04:52:33.72ID:fywMFlf1
>>305
台北された事例があるので辞めます。
>>308
元々構想に入れてた仕様は1秒に一度です。
しかし、あまり宜しくないことだと認識したので別の方法を模索してみます。
0315デフォルトの名無しさん2015/01/21(水) 10:16:40.19ID:kXmnileJ
>>314
相手にとってはサイバー攻撃されてるのと同じやな
RSSが来たら受け取るだけじゃダメなんか
0316デフォルトの名無しさん2015/01/21(水) 18:40:22.14ID:Og46V39G
Taskの中でTaskを使うとTask.Delayが効かないのですがどうやって待機させればいいのでしょうか?
http://pastebin.com/zDYve5ZT
0317デフォルトの名無しさん2015/01/21(水) 19:30:19.13ID:aQ3JrQMd
>>316
subTask.Result.Wait();
0318デフォルトの名無しさん2015/01/21(水) 19:54:29.58ID:Og46V39G
>>317
subTask.Result.Waitが見つかりません。
0319デフォルトの名無しさん2015/01/21(水) 20:17:44.38ID:nBliafqs
そらそうやろな…
0320デフォルトの名無しさん2015/01/22(木) 03:08:18.76ID:hIWBDotb
ふう、2日がかりでやと
http://www.atmarkit.co.jp/fdotnet/csharp_abc/index/
の「C#入門」「C#2.0入門」「C#3.0入門」読み終わった・・・。
C++しか知らない身としてはLINQが辛かった。
ところで質問なんだけど、
http://www.atmarkit.co.jp/fdotnet/csharp30/csharp30_08/csharp30_08_04.html の
var q = a.Select((n) => new { n, cn = conversion(n) })
  .SelectMany((c)=>b, (d,m)=>d.cn + m);
の最初のSelectで匿名型作って返しているのなんで?
「n」は返さなくてもそれ以降もう使わないと思うんだけど。なんでなんで?

あと、C#4.0の入門用お勧めサイト教えてください。
上記サイトはC#3.0までしかないです。
0321デフォルトの名無しさん2015/01/22(木) 05:05:28.16ID:S4q300HG
>>320
他の言語知らない素人ですが、C++経験者として、そこのサイトはわかりやすかったですか?
0322デフォルトの名無しさん2015/01/22(木) 06:36:28.77ID:hIWBDotb
>>321
著者はちょっとひねくれてるけど、
説明自体は分かりやすいし、
重箱の隅を突っついたような細かな部分まで
サンプルコードを挙げて説明してくれているから
C#の言語仕様を網羅したい人にはお勧め。
今は同じ人の書いたC#4.0の解説サイト見つけたから
そっちを読みふけってる。
http://www.atmarkit.co.jp/fdotnet/csharp4/index/
しかしC#はシンタクスシュガーが多いな。
バージョンによって、古い書き方と新しい書き方が生まれるし。
これは混乱するわ。最早C++の方が簡単だね。
0323デフォルトの名無しさん2015/01/22(木) 06:55:02.14ID:G5fG+bs3
式木はリフレクションでMethodInfoのIDを直接使うってプログラマーには真似できない方法をしているのでシンタックスシュガーとは言えない
0324デフォルトの名無しさん2015/01/22(木) 06:59:36.70ID:1sL6fqub
赤魔法使いの黒魔法なんて本当のC++じゃないわ
ヒヨッコめ
0325デフォルトの名無しさん2015/01/22(木) 07:07:09.45ID:2Z4eL2CM
>>320
letの書き換えの説明だからだよ
0326デフォルトの名無しさん2015/01/22(木) 16:02:20.55ID:QOe1Cpix
>>322
どの辺りがひねくれているんですか?
0327デフォルトの名無しさん2015/01/22(木) 16:06:50.81ID:CNlyFltm
著者乙
0328デフォルトの名無しさん2015/01/22(木) 21:18:47.02ID:gVENBEDJ
C++できるのに LINQ 辛いって分かんねーな。SQL できなそう
0329デフォルトの名無しさん2015/01/22(木) 21:29:35.28ID:4sEng1fw
本当に2日で全部読んで理解したのならその方がむしろ驚きだよ。
俺なんか川俣大先生の記事のLINQのところだけで2週間ぐらいもがいてたよ。
0330デフォルトの名無しさん2015/01/22(木) 22:01:43.37ID:TqsVCR2I
LINQはspl知ってればやりたいことや使い方はわかるんだが、ienumerableの存在を知らないと、どうなってんのか意味不だよね
そしてストアアプリでsqlite-netを使う際に使う場合、spl文作るように実装しないと滅法遅いという、、、
0331デフォルトの名無しさん2015/01/23(金) 01:21:44.67ID:+c6UXNL0
>>322
C++も大量に機能追加してさらにカオスに進化したじゃん
コンパイラの実装が終わらないけど

C#は新しいバージョンでシンタックスシュガーを追加しようといろいろ検討中だから、むしろこれから増える
string interpolationとか初期化が簡単になるとかは楽しみ
0332デフォルトの名無しさん2015/01/23(金) 09:35:21.43ID:POFL5ryg
ちは、XP/C#2010Express/.NET4CL/System.Windows.Forms.Buttonな質問です。
ボタンを押すとボタンの表面に「四角点線」が表示されます。TABで移動するあれです。
これを表示させないようにしたい。
0333デフォルトの名無しさん2015/01/23(金) 09:42:05.25ID:JgobxQVM
そっすか。がんばってね。
0334デフォルトの名無しさん2015/01/23(金) 09:54:20.31ID:1WTkYST8
・つーか表示させないようにすんな
・やりたきゃ完全に自前で描画しろ
・回答すんのマンドクサ
0335デフォルトの名無しさん2015/01/23(金) 10:25:34.68ID:POFL5ryg
>>334
レス感謝。イイヤナやつだな。
そういう使い方はやんねーしやったらダメー、っつー意味でいいか?
自前描画という手段があるんね、ググッて勉強になった。ちと荷が勝つのでこの際はやめとく。

表示させない方法は見つけられなかったが、別のコントロールにフォーカスを移すことで
見た目の問題は回避できそう。自己解決。
0336デフォルトの名無しさん2015/01/23(金) 13:11:44.36ID:IU9tr6gN
>>335
どこが「イイヤツ」なんだw
ShowFocusCuesってプロパティーをoverrideすればいいんだよw
フォーカスを取ることそのものを抑止したいのならSetStyleでControlStyles.Selectableをいじってもいいと思うけど。
0337デフォルトの名無しさん2015/01/23(金) 14:57:26.50ID:OTVOs1P0
そもそも四角点線が表示されて都合が悪い状況って何だろう?
0338デフォルトの名無しさん2015/01/23(金) 15:11:53.45ID:1CZ66CIc
デザイン的に気になる場合はあるね。(ボタンのテキストが読みづらくなる場合がある)

あと個人的にはダイアログなど例外的な場面以外ではむしろボタンは
入力フォーカスを持たない方が適切のような気もする。
なまじボタンが入力フォーカスを持つばっかりに誤操作しちゃうことってありがちだからね。

キーボード派の人用にはショートカットキーを用意した方が喜ばれるわけで。
0339デフォルトの名無しさん2015/01/23(金) 16:59:24.77ID:POFL5ryg
>>336
自前で描画しろっていうアドバイスは、アドバイスとしてくれてるわけで・・・。
「自前で描画」を知らない俺には作業進めるヒントにはなったかな。
質問の仕方が気にいらん>>333よりもいいし、よりよいアドバイスくれる人も出てきてくれます。

ShowFocusCuesがもっとも適切みたいだけど、自作ボタンを作る事になりそうです
ので(だよね?だよね?)、今回は見送り。SetStyleはまだ勉強してないけど、とにかくありがとう!

>>337,338
デザイン的な話です。小さいボタンで目立つ^^;
消すことへの長所短所のアドバイス。勉強になりました。
0340デフォルトの名無しさん2015/01/23(金) 17:07:36.79ID:xgfc/mb+
Labelをボタンの代わりに使えばいいだけじゃないの?
0341デフォルトの名無しさん2015/01/23(金) 19:26:27.67ID:7iHRDcmC
>>339
自作と言ってもこれ書いてdesigner.csのButton書き換えるだけだぞ
public class NoFocusCueButton : Button
{
protected override bool ShowFocusCues
{
get
{
return false;
}
}
}
0342デフォルトの名無しさん2015/01/23(金) 19:51:24.86ID:rvBGt4Z5
そして何気なくエンター押したら全く予期しないボタンが押される地雷の出来上がり
何も表示しないくらいならフォーカス自体無効の方がマシ
0343デフォルトの名無しさん2015/01/23(金) 21:35:56.39ID:zQNi2Hpn
ちょっと教えてください

今日初めてC#を始めたんですがBitmapの一部を別のBitmapにコピーしようと
BitBltを使おうとしたんですが、認識すらされてないみたいなんです

これっと、どうやって使えばいいんでしょうか?
ちなみにVS2013です
0344デフォルトの名無しさん2015/01/23(金) 21:45:23.64ID:04z7/LVH
BitBltの定義以前にHDC確保できるとも思えないけど
Graphics.FromImageでGraphics確保してDrawImageする
0345デフォルトの名無しさん2015/01/23(金) 21:57:05.75ID:vZTvHtXG
普通にGetHdcで取れるよw
0346デフォルトの名無しさん2015/01/23(金) 22:46:59.42ID:mLTSA5Fh
ありがとうございます

BitBlt(hdc_bitmapB, 0, 0, bitmapB.Width, bitmapB.Height, hdc_bitmapA, 100, 100, .SRCCOPY);
って感じでコピーしたいんです

Graphicsを間に入れて試してみます
0347デフォルトの名無しさん2015/01/24(土) 00:32:26.31ID:dHy3lSTs
面倒でもいいから速くしたいんならDirectX使えばいいのに
なんでそんな時代錯誤甚だしいブツに拘るのか
0348デフォルトの名無しさん2015/01/24(土) 00:37:52.25ID:FYAe6dyz
速くしたいとは一言も書いてないのに何でDirectXを勧めるのさ
0349デフォルトの名無しさん2015/01/24(土) 00:47:27.92ID:7GL/S7tZ
普通はc#のでさくっとやるところ、わざわざbitbltなんて持ち出してきてるから速度求めてると思ったんだろ
0350デフォルトの名無しさん2015/01/24(土) 04:01:27.71ID:AMW8Hj7L
>>347
えっとBitmapの一部を切り取って別のBitmapにコピーし
他の処理した上で最終的にPictureBoxで表示したいんですが
特に速さには拘ってません

方法が分からなかったんです

GraphicsとRectangleってのを使うと任意のサイズで切り取れるんですね

ちょっと他の言語からの移植のためのテストで...
0351デフォルトの名無しさん2015/01/24(土) 04:47:09.25ID:h0gPQLJ2
https://msdn.microsoft.com/ja-jp/library/system.drawing.bitmap(v=vs.110).aspx
の例のコードを改造してやれば?
てか、Bitmap使ってるくせに読みもしないのかね
0352デフォルトの名無しさん2015/01/24(土) 06:49:45.21ID:41m++gH2
C#2010ExpressでPostgreSQL利用出来ますか?
0353デフォルトの名無しさん2015/01/24(土) 07:22:56.08ID:raV0h/Gd
Npgsqlとかそういうクソみたいな実装のプロバイダーがあったと思う
0354デフォルトの名無しさん2015/01/24(土) 12:20:56.57ID:c/HW6k0+
>>351
そのリンクにある例って1ピクセルずつ読み出して色を変えるヤツ?
0355デフォルトの名無しさん2015/01/24(土) 13:23:22.89ID:rMk5XLfc
treeViewのノードの移動についてなのですが

http://ideone.com/5Z2D9Q
これだと選択ノードがちゃんと上に1つだけ移動するのですが

http://ideone.com/9pEpfb
これだと選択ノードが一番下まで移動してしまいます。
ほとんど同じコードなのに何故なのかサッパリ分かりません
どうすれば選択ノードが1つだけ下に移動するのか教えてください
0356デフォルトの名無しさん2015/01/24(土) 14:37:36.41ID:raV0h/Gd
詳しく見てないけどなんでループになるの
消して入れなおすだけじゃないの
0357デフォルトの名無しさん2015/01/24(土) 16:47:46.35ID:rMk5XLfc
>>356
親ノードが3つあるのですが、
選択ノードがどの親ノードの配下なのかを取得して
親ノードの中でノードを移動させるためループにしていますがもっといい方法がありましたら教えて下さい。
0358デフォルトの名無しさん2015/01/24(土) 17:08:18.44ID:qV60IszQ
>>355
下に移動させて、次のループ処理でそいつ参照してるから、ループ終わるまで繰り返す
0359デフォルトの名無しさん2015/01/24(土) 17:21:05.56ID:rMk5XLfc
>>358
上に移動する場合は何故一番上にならないのでしょうか?
0360デフォルトの名無しさん2015/01/24(土) 17:24:24.20ID:qV60IszQ
>>359
index - 1に追加して、次はi++だからもう参照しないよね
0361デフォルトの名無しさん2015/01/24(土) 17:31:32.22ID:rMk5XLfc
>>360
下に1つだけ移動させる場合はどう書けばよいでしょうか。
0362デフォルトの名無しさん2015/01/24(土) 17:39:20.71ID:qV60IszQ
remove処理の後にforループ抜けるとダメ?
0363デフォルトの名無しさん2015/01/24(土) 18:22:17.29ID:raV0h/Gd
>>357
Parentプロパティのnullチェックしといてそれは無いわ…
0364デフォルトの名無しさん2015/01/24(土) 21:10:48.14ID:rMk5XLfc
>>362
ありがとうございます。
Nodes[1]についてはそれでうまくいったのですが
Nodes[2]の動作時に[1]の方でArgumentExceptionが出るので考え中です。

>>363
例えば深さが未定の時に
treeView1.Nodes[i].Nodes[i].Nodes[i].Nodes[i]...と
しなくてもParentプロパティその他で処理する方法がよく分からないので教えてください。
0365デフォルトの名無しさん2015/01/24(土) 21:22:46.42ID:raV0h/Gd
おうよ

var tn = treeView1.SelectedNode;
if (tn != null)
{
 var i = tn.Index;
 var p = tn.Parent;
 if (i > 0)
 {
  p.Nodes.RemoveAt(i);
  p.Nodes.Insert(i - 1, tn);
  treeView1.SelectedNode = tn;
 }
}

下移動なら条件がif (p != null && i + 1 < p.Nodes.Count)でInsert位置がi + 1
0366デフォルトの名無しさん2015/01/24(土) 21:35:57.49ID:raV0h/Gd
あとルートノードも動かしたいならp.Nodesの代わりにvar nodes = p !=null ? p.Nodes : treeView1.Nodes;とか使うといいんじゃない
0367デフォルトの名無しさん2015/01/25(日) 02:06:51.66ID:1pGv/mUF
クラススコープのフィールドでvarを使用することができないのはなぜでしょうか?
型を自分で宣言すれば済む話なのですが、どうして使うことができないのか気になります。
0368デフォルトの名無しさん2015/01/25(日) 07:01:19.28ID:pU/FRDse
>>365-366
どうもありがとうございます。
お忙しいところご親切にコードまで書いていただき、恐れ入ります。
思い通りの動作です。素晴らしいとしか言いようがありません。
かなり悩んでいたので非常に助かりました。本当にありがとうございました。
0369デフォルトの名無しさん2015/01/25(日) 07:27:55.82ID:aMjnETsO
>>367
varを解決するためには右辺の型を先読みしないといけない
フィールドでやると先読みが何回でも発生しうるし循環参照もあり得る
メソッド内に比べて色々ハードルが高いからやらないって感じ
0370デフォルトの名無しさん2015/01/25(日) 09:51:39.87ID:uqb9vwxo
C#でなんか作りたくなったんだが、こんなソフトが欲しいとか、無い?
0371デフォルトの名無しさん2015/01/25(日) 10:08:38.92ID:qu6gEcQz
「C#でなんか作りたくなったんだが、こんなソフトが欲しい」とか言ってくれるソフト
0372デフォルトの名無しさん2015/01/25(日) 10:30:21.62ID:Yku4ZPdv
>>369
ありがとうございます
0373デフォルトの名無しさん2015/01/25(日) 10:41:20.60ID:00Tnp13p
>>370
デスクトップ版2chmateみたいの
0374デフォルトの名無しさん2015/01/25(日) 10:46:21.99ID:p3bk5TEE
>>371
顧客が何を求めているか、Watsonとか答えられるんだろうか
やれそうな気はするよな
0375デフォルトの名無しさん2015/01/25(日) 12:44:56.61ID:82uqmraw
>>370
iPadで使ってるBB2Cがゲーム系の一覧出ないから不便なの
あと、よく見る一覧とかも出ない
見れるの作って( ̄▽ ̄)
0376デフォルトの名無しさん2015/01/25(日) 12:59:54.96ID:ZkHIwu+N
タッチ操作しやすい2chビューアーはもう少し選択肢欲しいわなぁ
0377デフォルトの名無しさん2015/01/25(日) 13:35:19.26ID:IuKqfEWW
>>370
◆こんなソフトウェアつくってください〜Part18〜◆
http://anago.2ch.net/test/read.cgi/software/1387352479/
0378デフォルトの名無しさん2015/01/25(日) 13:48:03.29ID:82uqmraw
>>374
最近そんなニュースみたな
ロボットが判断して主人に何か提供してくれるとか…
03793702015/01/25(日) 16:36:03.41ID:uqb9vwxo
>377
ちょっと見てくる。

みんな、期待しないでいてくれ
0380デフォルトの名無しさん2015/01/26(月) 10:41:06.06ID:r+JVdd/E
C#でExcelと同じフーリエ変換を行うには、どうしたら良いのでしょうか?
そもそもExcelのフーリエ変換がどの方式なのかすらわかってないですが・・・。
(ググってもDFTって書いてあったりFFTだと思うって書いてあったりで)
速度は必要無いのですが、毎回Excelシートを開いてシートを操作してってのも面倒なので、何か良い方法がありましたらよろしくお願いします。
0381デフォルトの名無しさん2015/01/26(月) 11:15:21.68ID:o1VLw7QU
Excelと同じってんならExcelをオートメーションで使うことになる
マクロ記録でフーリエ変換操作を記録してVBAでの操作方法を調べる
C#でExcelをCOM参照してExcel.Applicationオブジェクトから色々やって
上で調べたVBAでの操作方法をC#に翻訳して実行する
0382デフォルトの名無しさん2015/01/26(月) 14:59:21.68ID:r+JVdd/E
>>381
確かに全く同じならオートメーションが安定ですね。
ありがとうございました。
0383デフォルトの名無しさん2015/01/26(月) 16:54:02.14ID:UeEZ7Dsw
WPFでDispatcherTimerを使っています。
フォームでApplication.Current.Shutdown()した時にDispatcherTimerのTickイベント発生中だと
プログラム自体は終了せずTickがイベントが終了するとプログラムが終了します。
プログラム終了時に必ずアプリケーションエラーが発生してしまうので、
アプリケーション終了時に同期的にDispatcherTimerも終了させたいのですが、
プログラムで終了しているかどうかのフラグを追加して、Tickイベントの随所に終了判定いれるしか方法はないでしょうか?
0384デフォルトの名無しさん2015/01/26(月) 20:21:13.68ID:ZDev19ph
純粋にc#でなくてwindows絡みのお話しもこちらでよいのでしょうか。

c#からwindowsのサービスを単純にstart/stopしようと

http://www.risewill.co.jp/blog/archives/1744
のようにプログラムを作成した場合、
管理者権限をつけて起動しないと、実際に操作するところで例外が発生してしまいます。
管理者権限をつけて起動するためには、UACによるユーザー操作が必要ですよね。

ところが、「コントロールパネル ⇒ 管理ツール ⇒ サービス」で表示される
サービスの操作画面ではUACを使わなくてもサービスの操作が出来ます。
これはどうしてなのでしょうか。c#側の方でなにか特権を取得する事で
回避可能なのでしょうか。
0385デフォルトの名無しさん2015/01/26(月) 20:41:39.97ID:GK3GKNVX
>>384
Windowsがユーザ操作での変更であると認識した場合のみUAC出さない
「アプリがコンピューターに変更を加えようとする場合のみ通知する」で検索
回避できたらセキュリティホールだ
03863842015/01/26(月) 20:47:46.09ID:ZDev19ph
>>385
ありがとうござます。
サービスの操作画面もアプリの一種だと思いましたが
電子署名かなにかでwindowsのバイナリと一般アプリを区別しているのですね。
0387デフォルトの名無しさん2015/01/26(月) 20:58:06.45ID:JvppgqBh
>>384
その手のプログラムって作ったことないが、プロジェトにマニフェストを追加して
requestedExecutionLevelのlevel属性をrequireAdministrator あたりにすれば
起動時に強制的に例のUACのダイアログが出るようになるんじゃないの?

この手の話ってVistaが出た時にちょっと盛り上がったけど
日本では書いてる人少ないね。
0388デフォルトの名無しさん2015/01/26(月) 21:05:04.64ID:JvppgqBh
ああ、ここに説明があるな
http://www.atmarkit.co.jp/fdotnet/dotnettips/958uacmanifest/uacmanifest.html
0389デフォルトの名無しさん2015/01/26(月) 21:13:18.46ID:xfABKP07
>>384
タスクスケジューラによる管理者起動ならUACダイアログを見ずに済むのでそれを応用する手もある
0390デフォルトの名無しさん2015/01/27(火) 05:36:14.93ID:giG1hU9r
>>384
たぶんGUIで、コンパネからサービスを起動する際には、
一々認証する手間を省くために、
「ログインユーザ = 管理者」と自動的に認証するのだろう
0391デフォルトの名無しさん2015/01/29(木) 17:16:32.00ID:9wbYTCO/
>>303
これって、robots.txtに従ったディレイ守れば大丈夫だよね?
0392デフォルトの名無しさん2015/01/29(木) 21:53:14.89ID:Vl4KJLr6
robots.txtはサーチエンジンのためのものであって、お前みたいな泥棒の免罪符じゃねえよ
まあrobots.txtをちゃんと置いてるようなところなら目を付けられても
いきなり通報とか非常識な対応はしないでアク禁になるだけだろう
0393デフォルトの名無しさん2015/01/30(金) 03:04:29.46ID:TDcbCjV4
Test obj はメンバ変数です。
objに対して必要な処理をした後、
endメソッドで最後の処理を行います。
その時にメンバ objをnullにするようにできますか?

Testobj = new Test();
test.action();
test.end();
obj = null; //nullを代入するのが億劫なので省略したい
0394デフォルトの名無しさん2015/01/30(金) 03:09:33.25ID:4OUnbjaq
自ウィンドウ上以外にあるシステムカーソルを消す方法はありますでしょうか。
Mouse.Noneのように、見えないがカーソルそのものは存在して、クリックなど
マウスメッセージは発生する状態を、デスクトップや他アプリ上で実現したいと
考えています。
例えばマウスカーソルより前面に何か描画するなどしてマウスカーソルの描画を
ユーザから隠せないかなどと試行錯誤していますが、中々良い方法が見つからなく。。。
0395デフォルトの名無しさん2015/01/30(金) 06:58:34.12ID:aVk8cNPy
自分のウィンドウ以外の設定をいじるの?

他のアプリの邪魔をするわけだから、テロ行為!
0396デフォルトの名無しさん2015/01/30(金) 07:22:56.58ID:+qqExt9e
そういうことするツールですとちゃんとアピールして、ユーザーが納得して実行するなら何も問題ない
で、>>394への回答は残念ながら持っていないw
0397デフォルトの名無しさん2015/01/30(金) 07:36:08.78ID:aVk8cNPy
自分のウィンドウ内で、カーソルを消すなら理解できるが、
そのウィンドウの外側で、カーソルを消すのは理解できない

PCを操作不能にする、テロアプリでも作りたいのか?
0398デフォルトの名無しさん2015/01/30(金) 07:47:17.53ID:x2QQOjZO
やかましいな
てめえの安っぽい正義感ウンコみてえに垂れ流してオナってんじゃねえぞクソムシ野郎
0399デフォルトの名無しさん2015/01/30(金) 07:58:38.41ID:Zw4KAUSH
例えばマウスカーソル消してくれない動画プレイヤーとか
理解できないってちゃんと考えてから言ってる?
0400デフォルトの名無しさん2015/01/30(金) 08:22:00.96ID:BLh6y3ic
何でみんな怒ってんの…?
多い日?
0401デフォルトの名無しさん2015/01/30(金) 11:59:36.06ID:76X+Pw8B
おれも作法について質問したら泥棒呼ばわりだぜ
04023942015/01/30(金) 13:17:21.75ID:4OUnbjaq
マウスメッセージ透過のフルスクリーン上に独自のマウス画像を描画することで、
他アプリ上でも擬似的にマウス形状を管理したい、と考えて質問させてもらった
次第になります。
#勿論ユーザが理解した上で
0403デフォルトの名無しさん2015/01/30(金) 13:59:45.15ID:sTOEtwTN
>>402
それにどういう有用性があるのかちゃんと説明したら(まあ絶対にないと思うが...)
誰か興味持って調べてくれるかもよ。

https://social.msdn.microsoft.com/Forums/vstudio/en-US/c705ba49-b4d9-4745-ab70-baf135c4fe8b/changing-the-global-mouse-cursor
0404デフォルトの名無しさん2015/01/30(金) 14:14:58.41ID:Z+/zQODe
どうしてC#の言語は大文字小文字を区別するようになってるのでしょうか?
DelphiをちょっとやってC#触ってみただけなんですが
すごく不便です
0405デフォルトの名無しさん2015/01/30(金) 14:17:08.13ID:VX1uKuEQ
言語作った人の趣味
0406デフォルトの名無しさん2015/01/30(金) 14:29:30.43ID:Z+/zQODe
そうなんですか、ありがとうございました
0407デフォルトの名無しさん2015/01/30(金) 14:52:37.11ID:7u+Ygwkn
>>404
VB.NETおすすめ
0408デフォルトの名無しさん2015/01/30(金) 15:07:37.10ID:DKahlUFK
>>405
趣味っつーかPASCALとかBASICとかはコンピュータ上で
小文字が使えるようになる前に開発されたからな
区別するって概念がそもそもなかった
0409デフォルトの名無しさん2015/01/30(金) 19:42:15.95ID:KamiXVzn
現在利用者の多い言語の中で大文字と小文字を区別しないのなんてVBとCOBOLくらいだろ
今時それが便利だという感覚を持ってること自体が恥と知れ
0410デフォルトの名無しさん2015/01/30(金) 19:59:45.78ID:xN12zoCl
利用者多い言語だったのかよ。cobol。そして忘れ去られたアセンブラ
0411デフォルトの名無しさん2015/01/30(金) 20:02:53.45ID:uh9xdyj7
HTMLやSQLより利用者の多い言語はちょっと思いつかない
0412デフォルトの名無しさん2015/01/30(金) 20:13:03.05ID:KamiXVzn
HSQLはメインフレーム時代の遺物だからね
0413デフォルトの名無しさん2015/01/30(金) 20:17:33.86ID:ozIt89G9
>>409
こういう教条主義(デキない奴に多いw)も馬鹿臭い。

ただ>>404の意見もよくわからん。
C#とVBと両方やってみればわかるけど、ケースセンシティブなC#の方が
名前の自由度が高いぶん便利だ。
0414デフォルトの名無しさん2015/01/30(金) 20:36:19.23ID:VX1uKuEQ
IDEが十分に賢ければ

using入れさせるために適当にクラス名書いたときのが
大文字小文字区別しないようになるのはまだですかね
0415デフォルトの名無しさん2015/01/30(金) 20:40:33.26ID:TDcbCjV4
3項演算子で関数って呼び出せますか?
こんな感じで
IsTrue ? CallTrue() : CallFalse();
0416デフォルトの名無しさん2015/01/30(金) 20:42:44.16ID:uh9xdyj7
voidでない式なら何でもイケる
っていうか試せばいいのに
0417デフォルトの名無しさん2015/01/30(金) 21:03:20.99ID:BzgyBeS/
>>414
そういうエディタ(VBみたいな)使ってるとわかるが、本当に大文字と小文字の区別が付かなくなるよ
VBスレの書き込みでしばしば見られる、クラスやメンバ名の大文字小文字の間違いが
C#スレでは滅多にないことからもわかるでしょ
区別しない言語ならそれでもいいんだけど、C#でそうなってしまうとさすがに支障が出ることが多い
0418デフォルトの名無しさん2015/01/30(金) 21:16:48.82ID:Zw4KAUSH
>>417
そんなことないと思うよ
0419デフォルトの名無しさん2015/01/30(金) 21:19:30.31ID:1cEbPTnT
Windowsで複数のプログラム間でアクセスできるデータ領域ってなんて名前でしたっけ?
PCの電源切るまで有効で、数値なんかを保存しておける場所
0420デフォルトの名無しさん2015/01/30(金) 21:23:37.58ID:TDcbCjV4
>>416
voidじゃなきゃいけるのは知ってます
voidを呼びたいです。
0421デフォルトの名無しさん2015/01/30(金) 21:23:46.27ID:rjaqRN7Y
すぐに思いつくのはMemoryMappedFileだけど
あれは各アプリが明示的に作成/破棄するものだから
「PCの電源切るまで有効」とは違うな
0422デフォルトの名無しさん2015/01/30(金) 21:25:48.59ID:cONkm65s
String str = "01234567";
byte[] mByte = TextToByte(str);

mByte[0] == 0x01
mByte[1] == 0x23
mByte[2] == 0x45
mByte[3] == 0x67

このようなテキストをbyte配列に変換する関数を作りたいのですが
どのように作ればいいのでしょうか?
0423デフォルトの名無しさん2015/01/30(金) 21:38:00.52ID:BzgyBeS/
Enumerable.Range(0, str.Length / 2)
.Select(i => str.Substring(i * 2, 2))
.Select(s => byte.Parse(s, NumberStyles.HexNumber))
.ToArray();
0424デフォルトの名無しさん2015/01/30(金) 21:51:51.24ID:BuJnfGZn
>>419
レジストリ?
0425デフォルトの名無しさん2015/01/30(金) 22:00:27.46ID:xN12zoCl
共有メモリ
0426デフォルトの名無しさん2015/01/30(金) 22:41:40.42ID:n83m6OS1
>>419
グローバル・ヒープ領域
0427デフォルトの名無しさん2015/01/30(金) 23:43:00.47ID:35spw6To
>>420
適当にラップすれば?
そこまでする意味は無いが
0428デフォルトの名無しさん2015/01/31(土) 02:50:10.78ID:vCb5A+mD
voidならif elseでやればいい
三項演算子で書けなくもないがタイプ数逆に増える
0429デフォルトの名無しさん2015/01/31(土) 08:10:34.10ID:Ozkgovrm
(ifTrue ? (Action)CallTrue : (Action)CallFalse)();
PGがこんなコード書いて持って来やがったらぶん殴るわ
0430デフォルトの名無しさん2015/01/31(土) 10:54:38.15ID:QAJIITLa
String.IsNullOrEmptyはnull判定できるのにDBNull.Valueや数値が来ると落ちるからToStringが必要
でもToStringはnullで落ちるから、デッドロックですわw 結局前段にnull判断が必要
100万回施行したら、
o == null || o == DBNull.Value ? true : String.IsNullOrEmpty( o.ToString() )
これより
o == null || o == DBNull.Value ? true : ( o.ToString().Length == 0 )
こっちの方がほんの僅かに速いだわ
というわけでString.IsNullOrEmptyの存在意義がなくなりました

ただこれを関数化すると数倍遅くなるので、膨大に繰り返す関数内では裸で書くことね
コンパイル時にちっちゃい関数は展開してくれんかな(何文字以内の関数は展開みたいな)
でないと展開コーディングに凝ってしまってソースが煩雑になる

あといろいろ試したらヌルと空文字を同一視したい等価比較は
a + "" == b + ""
結局これが鉄板 ちなみにEqualsは遅い
昔コボラーの年寄りになんで空文字連結してんの!?って騒がれたことあるなw
しょうがないんだよオープン系はバラバラに設計されたコンポーネントを繋ぐんだから
0431デフォルトの名無しさん2015/01/31(土) 10:56:47.34ID:3i4sO4S/
string宣言したら同時に""で初期化しとけばいい
0432デフォルトの名無しさん2015/01/31(土) 11:03:43.85ID:gLo7TQE6
>>430
存在意義って、IsNullOrEmptyは「文字列がnullかEmptyかを判定する」のになんで文字列以外の物を想定しなきゃならんのよ
0433デフォルトの名無しさん2015/01/31(土) 11:03:53.63ID:lDrypSc6
>>430
典型的なノーセンス
0434デフォルトの名無しさん2015/01/31(土) 11:06:16.73ID:29y+W13d
年寄りじゃないけどお若いアホ
0435デフォルトの名無しさん2015/01/31(土) 11:07:18.20ID:gqntjGcK
(a ?? "") == (b ?? "")はどうか
0436デフォルトの名無しさん2015/01/31(土) 11:08:18.57ID:Zp0atq7E
真っ当な非文字列の型ならToString()が空文字を返すなんて想定はしなくていいよ
0437デフォルトの名無しさん2015/01/31(土) 12:03:31.31ID:Klh2e7Hk
デッドロック……
0438デフォルトの名無しさん2015/01/31(土) 12:35:44.38ID:M3ono60E
>String.IsNullOrEmptyは (略) DBNull.Valueや数値が来ると落ちる
これの意味が俺にわからんのだが
String.IsNullOrEmpty(数値型)やString.IsNullOrEmpty(DBNull.Value)が落ちるって言ってるの?
落ちる以前にコンパイル通らんと思うのだが
0439デフォルトの名無しさん2015/01/31(土) 12:46:17.77ID:Zp0atq7E
string.IsNullOrEmpty((string)obj)なんでしょ
0440デフォルトの名無しさん2015/01/31(土) 12:58:04.01ID:tZNGH4Bu
> o == null || o == DBNull.Value ? true : String.IsNullOrEmpty( o.ToString() )
違和感を感じるのは俺だけ?
0441デフォルトの名無しさん2015/01/31(土) 13:08:49.09ID:M3ono60E
だったらIsNullOrEmpty(obj as string)で良いんじゃ
0442デフォルトの名無しさん2015/01/31(土) 13:09:19.77ID:F5r8Sgl4
>>430
>ただこれを関数化すると数倍遅くなるので、膨大に繰り返す関数内では裸で書くことね

大丈夫。君のプログラムが糞遅いのはそんな所が原因じゃないから
0443デフォルトの名無しさん2015/01/31(土) 13:13:53.97ID:yb3noDXh
そんな微妙な速度アップ気にしないでさっさと組みなよ
0444デフォルトの名無しさん2015/01/31(土) 13:14:24.41ID:Zp0atq7E
速度語ってるけどTargetedPatchingOptOutとかAggressiveInliningとかそういうおまじないは知ってるのかな
0445デフォルトの名無しさん2015/01/31(土) 13:21:28.43ID:M3ono60E
o == null || o == DBNull.Value ? true : String.IsNullOrEmpty( o.ToString() )
だったら
o == null || o == DBNull.Value || String.IsNullOrEmpty( o.ToString() )
でいいけど、nullチェックは事前にやってるから
o == null || o == DBNull.Value || (o.ToString() = String.Empty)
でいいんじゃね
そしてDBNull.ToStringはString.Emptyらしいから
o == null || (o.ToString() = String.Empty)
でいいんじゃないか
これが速いか遅いかは知らんが
0446デフォルトの名無しさん2015/01/31(土) 16:24:52.12ID:aY15G0dS
WPFのDataGridで エクセルのように戻る機能を付けたいのですが、
どのように実装すれば良いでしょうか。

一般的にどうやっているのかお教え頂きたいです。
0447デフォルトの名無しさん2015/01/31(土) 16:48:42.19ID:Zp0atq7E
VMにMementoを持たせるとか
グリッド全体だとデータ量が爆発しそうだけど
0448デフォルトの名無しさん2015/01/31(土) 17:32:27.14ID:Eae2x+oN
グリッド全体を記憶する方法は考えたのですが、
やはりメモリが心配で、無理だろうなと思いました。

データの変更場所をピンポイントで記憶しようかとも考えましたが
列ソートした時に、どうしたものかと悩み。。。

地味な機能の割に、ロジックは大変そうだと思いました。
0449デフォルトの名無しさん2015/01/31(土) 17:39:47.34ID:mYXA+WPr
戻る機能ってundoのことか?
それ普通は「戻す」じゃないのかw
0450デフォルトの名無しさん2015/01/31(土) 19:20:49.55ID:yb3noDXh
ソートしても変更先のセルデータ参照しとけば関係ないんじゃね
0451デフォルトの名無しさん2015/01/31(土) 19:27:43.63ID:59f+qM6s
てかソートした事自体も戻すんだから問題なくね?
0452デフォルトの名無しさん2015/01/31(土) 20:54:27.48ID:QAJIITLa
>>445
o == null || o == DBNull.Value || o.ToString().Length == 0
ていうかこうだったね(? true とかアホだったね)
2段目はDBNull.Valueが来た場合、ToString通さないから速いの 1000万回で55ミリ秒
o == null || o.ToString() == String.Empty これだと155ミリ秒
あとLenghが速いらしくて、空文字が来て3段目まで行っても105ミリ秒なの

>>444
それかもしれません
でもクリレポのせいで.net3.5使わされてるからAggressiveInliningがないみたいどす…
それに
https://msdn.microsoft.com/ja-jp/library/vstudio/system.runtime.targetedpatchingoptoutattribute(v=vs.100).aspx
https://msdn.microsoft.com/ja-jp/library/system.reflection.methodimplattributes(v=vs.110).aspx
喧嘩売ってんのかってぐらい何の説明もないですねw
0453デフォルトの名無しさん2015/01/31(土) 20:59:34.87ID:Awmy6+Lg
>てかソートした事自体も戻すんだから問題なくね?

確かにそうですね。

セルチェンジイベントの度に、グリッド全体を記憶しておけば、
実現は出来る気がしてきました。

問題は、メモリですね。。。
0454デフォルトの名無しさん2015/01/31(土) 21:34:29.93ID:QAJIITLa
>>441
それはnullやDBNullが70ミリ秒台に落ちるかわりに空文字も70ミリ秒台で優秀ですな
それにするかも
String.IsNullOrEmptyに謝らなきゃいけないな 申し訳ございませんでした
0455デフォルトの名無しさん2015/01/31(土) 21:45:20.85ID:Zp0atq7E
何作ってるのかは知らんけど、大抵の用途ではデータアクセス層以外がDBNullを意識したり
stringとその他の型を判別する必要がある状況自体が間違ってるからな?
0456デフォルトの名無しさん2015/01/31(土) 22:01:29.02ID:QAJIITLa
>>454
危ない危ない
これは数値が来るとヌル判定になる
やっぱりさっきの3段式で決定しますた
0457デフォルトの名無しさん2015/01/31(土) 22:02:59.65ID:Ozkgovrm
そもそもDBアクセスが絡む時点でアプリ側の空文字チェックのコストなんか誤差だろ
数桁違うわ
0458デフォルトの名無しさん2015/01/31(土) 22:14:59.72ID:QAJIITLa
DataAdapterモドキみたいの自作したからかなぁ?
中でぐるんぐるん回ってるから
(DB→DataTable→コントロール→DataTable→SQL→追記加工(これがたぶんdaだとやりにくい)→DB)
人間の目って不思議で、僅かな速度差で印象が変わる
パン!と一瞬で入るか、微妙にモチっとするかっていう
0459デフォルトの名無しさん2015/01/31(土) 22:16:50.42ID:3i4sO4S/
去年ここかどっかに上げてたソースのか。あれ使ってたらスパゲティになるのはしゃーないなw
0460デフォルトの名無しさん2015/01/31(土) 22:23:07.12ID:gqntjGcK
データ増えたら一瞬じゃなくなるじゃん
非同期にしたら?
0461デフォルトの名無しさん2015/01/31(土) 22:50:14.38ID:bIQGKKnd
>>455 >>457
それな

そーいうのが分かってないあたり経験が無さすぎるというか
カンが悪すぎるというか…
0462デフォルトの名無しさん2015/01/31(土) 23:20:11.44ID:Ozkgovrm
UI周りの処理作ってるんなら尚更だな
WinFormsが(彼の目から見れば)どれだけ無駄な処理をしてると思ってるんだ?
裏でとんでもなく重い膨大な処理をやってるんだぞ
0463デフォルトの名無しさん2015/02/01(日) 05:41:44.63ID:gxx6hjcz
もしこれがDB使ってるなら
stringか数字かどっち来るかわからんなんて状況にどうやったらなるのか
数字と文字の区別が無いDBMSなんてあるのか?

あと(DB上の)NULLと空文字列は別物として扱うのが当然だと思ってるが
これはメジャーな某DBMSが区別できないから微妙ではあるが
0464デフォルトの名無しさん2015/02/01(日) 05:50:47.48ID:zuLa2GqR
>(DB上の)NULLと空文字列は別物として扱うのが当然

糞言語に脳味噌洗脳されすぎ
ユーザーが画面入力するときには0文字=未入力って思考してんだから合わせろよ
長さ0の文字列という考えがそもそもおかしい
0465デフォルトの名無しさん2015/02/01(日) 06:05:53.12ID:gxx6hjcz
C#の世界や画面上やユーザの意識では0文字=未入力でもいいけど
まともなDBの世界では0文字=NULLじゃないよ
DB上のNULLは特殊な概念だから
出来るならそれはC#の世界には持ってこない方が良いんだけどね
実際DB上の文字列項目がNULL可でないとダメなケースは、なくはないが少ないと思うが
0466デフォルトの名無しさん2015/02/01(日) 06:24:32.86ID:WbEj9GF4
>>465
リレーショナルデータベースには属性項目値の欠如の概念が無いので値の欠如を列のUnknownで代用してる場合の話をしている時に
話をかき乱すなよ。
0467デフォルトの名無しさん2015/02/01(日) 08:11:22.77ID:PJUlZZR8
意図して長さ0なのとNULLは違うというか、少なくとも区別することがメリットになる用途はある
0468デフォルトの名無しさん2015/02/01(日) 13:09:52.92ID:KeDq3fPD
つ Oracle
0469デフォルトの名無しさん2015/02/01(日) 13:11:33.50ID:oSQFn4wP
WHERE '' IS NULL
0470デフォルトの名無しさん2015/02/01(日) 15:32:09.06ID:i7T7vcWH
Oracle マジウンコ
0471デフォルトの名無しさん2015/02/01(日) 17:03:56.91ID:0fcIApHw
長さゼロの文字列が使えるDBMSなら
全項目NOT NULLにして初期値を’’にしておくと
アプリ側が楽チン
0472デフォルトの名無しさん2015/02/01(日) 18:34:29.11ID:4OFuJ5Ii
EF使えよ
DBNullとかもnullにしてくれるぞ
0473デフォルトの名無しさん2015/02/01(日) 20:36:24.47ID:i7T7vcWH
EF重くね?
0474デフォルトの名無しさん2015/02/01(日) 20:51:52.75ID:PJUlZZR8
重くならないように使えとしか言えない
0475デフォルトの名無しさん2015/02/02(月) 01:26:33.03ID:NU5Zauz1
left join使う場面だと頻発にnullと出会うけど、それをわざわざ''に変換して返す事って無いな…
0476デフォルトの名無しさん2015/02/02(月) 12:12:56.56ID:RMNv3QRU
PDFを画像に変換したいのですがイカすライブラリ教えてください。
WP8とXamarin.Adnroid、iOS向けなのでピュアマネージドなライブラリを探しています。
0477デフォルトの名無しさん2015/02/02(月) 13:42:11.48ID:Y2ImThse
ググった?のコピペ
↓
0478デフォルトの名無しさん2015/02/02(月) 14:52:41.26ID:rpJAeBi3
>>476
ない
C#でPDFは扱えない
0479デフォルトの名無しさん2015/02/02(月) 14:56:28.84ID:wVwiflJK
>>476
買え
https://components.xamarin.com/view/apitron-pdf-kit
0480デフォルトの名無しさん2015/02/02(月) 15:13:28.78ID:Z7TxNbBd
まあないよねw
WEBにつながってる前提なら探せばそんなサービスありそうだけど
0481デフォルトの名無しさん2015/02/02(月) 16:57:28.15ID:J97xaIKF
timer処理を同時に10個程度回したいのですが、これはひとつのスレッド処理となってしまうのでしょうか?
負荷分散させたい場合、bgworkerを複数設置するべきですか?
0482デフォルトの名無しさん2015/02/02(月) 17:05:23.41ID:mcXsvKWc
どうすべきかは要件次第。
「timer処理を同時に10個程度回したい」っていうのは要件と言えるだろうか?
0483デフォルトの名無しさん2015/02/02(月) 17:07:15.02ID:SlkKLBRG
タイマ処理のはずなのにどっからbgworker(BackgroundWorker?)が出てきた
0484デフォルトの名無しさん2015/02/02(月) 17:17:38.90ID:EGOZhIE+
10個のスレッドになるよ
0485デフォルトの名無しさん2015/02/02(月) 18:04:36.10ID:w/aGrY+/
Timerクラスは3種類あって
一つは確実にメインスレッドでしか動かない
残り二つはスケジューラーとスレッドプールの状況次第でスレッド数可変(のはず)
あまりマニアじゃないから自信ない
0486デフォルトの名無しさん2015/02/02(月) 18:36:30.37ID:6dl798Fe
つまりどうゆうことだってばよ
0487デフォルトの名無しさん2015/02/02(月) 18:56:08.57ID:V3GmxBlb
まず10個回してみる
それで問題ないなら端から問題じゃない

実際にボトルネックになるようなら、処理とタイマーの種を検討しよう
スレッドが出てくるのはそれからでいいです
0488デフォルトの名無しさん2015/02/02(月) 23:52:44.72ID:12FdXkNd
>>476
PDFsharp
http://www.pdfsharp.net/

iTextSharp
http://www.itextpdf.com/product/itext
https://github.com/itext/itextsharp

とかがあるけど、ざっと見たところできそうなのはPDFsharpの方
GDI+のものしかないみたいなので、プラットフォーム毎の描画クラスに変えたものを
書かないといけないな
具体的には、このクラス辺り
http://pdfsharp.codeplex.com/SourceControl/latest#PDFsharp/code/PdfSharp/PdfSharp.Drawing/XGraphics.cs
0489デフォルトの名無しさん2015/02/03(火) 00:40:51.09ID:391xjjB+
iTextはライセンスがね・・・
0490デフォルトの名無しさん2015/02/03(火) 07:38:44.25ID:uSJof6v6
ネタばらすなよ
痛い目みないと覚えないぜ
0491デフォルトの名無しさん2015/02/03(火) 09:11:23.87ID:gaOVDtO+
質問です。
ライブラリで、.net35, .net4.0, .net45 など複数のバージョンのdllがある場合、
どういう基準で選べばいいのでしょうか?
PCにインストールされている.NetFrameworkの一番大きいバージョンに近いものがいいのでしょうか?
0492デフォルトの名無しさん2015/02/03(火) 09:12:31.93ID:LXCDBIZ8
うん
0493デフォルトの名無しさん2015/02/03(火) 16:28:46.49ID:vbeiF6Sp
Predicate は日本語で言うとなんと呼べばいいでしょうか
ぷれでぃけーと?
0494デフォルトの名無しさん2015/02/03(火) 16:39:07.73ID:JzYUkqOD
述語。
あんまりいい日本語訳と思えないからカタカナ語で読んだ方がいいかもね。
0495デフォルトの名無しさん2015/02/03(火) 17:22:30.23ID:vbeiF6Sp
>>494
ありがとうございます。日常では使わない単語ですね。
しょうがいないそれでいきます
0496デフォルトの名無しさん2015/02/03(火) 21:35:32.59ID:eoHNwajz
述語論理を選択した俺涙目
0497デフォルトの名無しさん2015/02/03(火) 22:12:00.60ID:391xjjB+
>>491
配るなら自分がつかう機能の最低環境のやつ
http://www.atmarkit.co.jp/ait/articles/1211/16/news093.html
0498デフォルトの名無しさん2015/02/03(火) 23:08:33.15ID:bG0U6oBo
Task使用必須です。
0499デフォルトの名無しさん2015/02/03(火) 23:13:45.82ID:rhxr8Hwo
実行環境によるとしか
自分しか使わないオナニーなら最新の使っとけ
0500デフォルトの名無しさん2015/02/05(木) 20:52:13.29ID:UBmnnLkm
オンライン、もしくは東京周辺でおすすめのC♯スクールみたいなのありますか?独学でやってるけど、セオリーがわからないから課題をこなしつつ成長したいです。
0501デフォルトの名無しさん2015/02/05(木) 20:55:01.30ID:UcSytSrS
そこら辺に転がってるソースじゃだめなのかな
カプセル化さえ意識しとけばそこそこいけると思うんだけど
0502デフォルトの名無しさん2015/02/05(木) 21:20:09.57ID:FMVnSlsS
そこそこの規模のプログラムを作っては捨てを繰り返すのが一番ためになるよ
目的のない写経ほど意味のないものはない
0503デフォルトの名無しさん2015/02/05(木) 21:43:19.66ID:Omd6cUWA
interface I {void test();}のとき
class C : I {public void test(){}}って書けるのに

abstract class AC : I {pulbic abstract void test();}
class C : AC {public void test() {}}って出来ずに
class C : AC {public override void test() {}}ってしなきゃいけないのは仕方ないの?

これはabstractメソッドを継承、という形を経由したらoverrideって書くのが必須になるってこと?
0504デフォルトの名無しさん2015/02/05(木) 22:04:46.64ID:4svq36dE
>>503
overrideは「オーバーライドしたつもりができていなかった」を防ぐためにあるので
その意味ではインターフェイスメンバの実装や抽象メソッドのオーバーライド時にoverrideは必要ない

インターフェイスの実装メソッドと既定クラスのメソッドをオーバーライドしたメソッドとでは
デフォルトでvirtualかどうかとかシャドウイングの扱いとか色々違いがあって
そこに更に「抽象メソッドをオーバーライドしたメソッドの場合」を別扱いすると無駄に複雑になりすぎるから
一律「クラスのメンバをオーバーライドする際にはoverride必須」というルールにしてあるんだろう
0505デフォルトの名無しさん2015/02/05(木) 22:05:59.21ID:sRceiApV
下らないことにこだわるなあw

オーバーライドするのが(1)仮想メソッドか (2)抽象メソッドか (3) オーバーライドされた抽象メソッドか
によって必要なキーワードが変わったら覚えるの面倒だからじゃないの?
0506デフォルトの名無しさん2015/02/05(木) 22:06:11.43ID:LBbAtoIq
書かないといけないというか、同じ名前にした意図を明確にする為に書くんだよ
継承ならoverride
隠蔽ならnew
0507デフォルトの名無しさん2015/02/05(木) 22:13:25.22ID:Omd6cUWA
>>504
> インターフェイスの実装メソッドと既定クラスのメソッドをオーバーライドしたメソッドとでは
> デフォルトでvirtualかどうかとかシャドウイングの扱いとか色々違いがあって

フヒヒヒヒ…既に複雑すぎるんだなぁw
まあ、今回のは違和感ありつつもつけなきゃコンパイルできないから黙って付けるだけのことなんだけど

>>505
(3)の場合もoverrideつけるんだよね?
いや、もちろんそうか
0508デフォルトの名無しさん2015/02/05(木) 22:15:11.03ID:Omd6cUWA
>>506
ありがとうございます
コツはnewの存在にありって気がしてきました

newについては先日勉強したとこだったんですが…
https://msdn.microsoft.com/ja-jp/library/6fawty39.aspx
0509デフォルトの名無しさん2015/02/05(木) 22:22:46.45ID:4svq36dE
newなんか積極的に使うもんではないよ
>>508の例の通りで非常に泥臭い状況で騙し騙し保守するためのもの
0510デフォルトの名無しさん2015/02/05(木) 22:46:47.56ID:LBbAtoIq
確かにnewって泥臭い場面で騙し騙し使った事しかないや
Form.Showオーバーライドしたいけど出来ないどうしよう仕方ない隠蔽しとくか誰もキャストなんてしないよね?って
0511デフォルトの名無しさん2015/02/06(金) 18:40:50.95ID:g953HKX2
>>509
ありがとうございます
一応newにつていもしっかり勉強しておきたいと思ってます
0512デフォルトの名無しさん2015/02/06(金) 18:48:34.78ID:g953HKX2
これはC#に限らず、昔から長年の疑問ではあったんですが
メンバ変数を持たないインスタンスのサイズってどうなります?

object o = new Foo()するとき、左辺はまぁ参照型変数がスタックなり
メンバ変数の場合はヒープに確保される、まあそれはいんです
右辺はnewによってヒープに容量が割かれる、そのサイズは?

public class A {}
public class B {byte b;}
public class C {int i;}

// 戻り値 マネージ メモリに現在割り当てられているバイト数の近似値を表す値数。
long a = System.GC.GetTotalMemory(true);
object oa = new A();
long b = System.GC.GetTotalMemory(true);
object ob = new B();
long c = System.GC.GetTotalMemory(true);
object oc = new C();
long d = System.GC.GetTotalMemory(true);

long _a = b - a; // 12
long _b = c - b; // 12
long _c = d - c; // 12

手元の環境じゃあこんな感じ
System.GC.GetTotalMemoryが大雑把な値を返すのか
それともnewする際には大雑把に要領を取るのか…
0513デフォルトの名無しさん2015/02/06(金) 19:03:26.65ID:g953HKX2
http://ideone.com/1djT0A
どうもこれじゃあダメっぽい
無念
0514デフォルトの名無しさん2015/02/06(金) 19:48:26.40ID:cza7UTEU
>>512
空でも32bitなら4バイト、64bitなら8バイト余分に確保するらしい
普通は空じゃないから余分にならず効率的なんだろう多分
このページの2個目のコードで説明してた
http://codeblog.jonskeet.uk/2011/04/05/of-memory-and-strings/
0515デフォルトの名無しさん2015/02/06(金) 20:04:04.10ID:kGu0ocwH
>>513
10万でも100万でも生成して(合計÷インスタンス数)-4=1インスタンスあたりのバイト数
でいいんじゃね?
0516デフォルトの名無しさん2015/02/06(金) 20:59:33.39ID:g953HKX2
>>514
うおおお!! ナイス情報ありがとうございます!
この人の例でも12バイトに収まってますね

4バイト境界で確保
最低は12バイトで
メンバ変数int一個分までは12のまま収まる、と

12バイトもか…そうか12バイトか…

>>515
https://ideone.com/s0PDl3
mono-3.10だとこんな感じですね
0517デフォルトの名無しさん2015/02/06(金) 22:23:36.97ID:RfWtovQk
LINQで、下記コードの「money」をSumして、「ID」をGROUP BY し、
DataGridViewに表示させたいのですが、
「ID」のGROUP BYまでしか表示させられません。
どのように書けば実現できるのでしょうか?

class IDSum
{
public string ID;
public int money;
}

private void test()
{
var dtData = new List<IDSum>();
dtData.Add(new IDSum { ID = "1", money = 10});
dtData.Add(new IDSum { ID = "2", money = 20});
dtData.Add(new IDSum { ID = "1", money = 20});
this.dataGridView1.DataSource = dtData.GroupBy(a => a.ID).ToArray();
    }
0518デフォルトの名無しさん2015/02/06(金) 22:30:29.35ID:WMGEQcdT
ID以外に何表示させたいのよ
moneyのSUMなのかAVERAGEなのかなんか別のものなのか
0519デフォルトの名無しさん2015/02/06(金) 22:35:48.56ID:RfWtovQk
舌っ足らずで申し訳ありません。

結果としては、
ID money
1 30
2 20

と表示させたいんです。
(IDのORDER BYは、今のところ考えていません。)

SQLで書くと、
SELECT ID,SUM(money) FROM hoge GROUP BY ID
となるでしょうか。

LINQは、GROUPBYだけで書くサンプル等は見かけるのですが、
SUMしてGROUPBYするようなものは見つからず。。。

書き方をご存知でしたら、よろしくお願いします。
0520デフォルトの名無しさん2015/02/06(金) 22:37:48.00ID:ESgGf2CK
GroupByってIEnumerable<IGrouping>>返すじゃん
IGroupingに対してSumすればいいだけじゃね?
0521デフォルトの名無しさん2015/02/06(金) 22:48:43.39ID:kGu0ocwH
>>519
こんなかんじ?
dtData.GroupBy(a => a.ID, (key, list) => new IDSum { ID = key, money = list.Sum(t => t.money) }).ToArray()
0522デフォルトの名無しさん2015/02/06(金) 23:03:20.18ID:RfWtovQk
>こんなかんじ?

LINQの書き方について、非常に参考になります。
ありがとうございます。

ただ、教えて頂いたコードを試しましたが、
表示はされませんでした。。。
0523デフォルトの名無しさん2015/02/06(金) 23:06:25.87ID:WMGEQcdT
DataGridViewに表示させるのならフィールドじゃなくてプロパティじゃないと駄目よ
取りあえず自動実装プロパティで良いから
public string ID { get; set; }
みたいな

クエリ式バージョン
var src = from dt in dtData group dt.money by dt.ID into g select new IDSum { ID = g.Key, money = g.Sum() };
dgv.DataSource = src.ToArray();
0524デフォルトの名無しさん2015/02/06(金) 23:17:14.08ID:kGu0ocwH
クエリ式はなんか苦手
0525デフォルトの名無しさん2015/02/06(金) 23:33:32.18ID:RfWtovQk
>フィールドじゃなくてプロパティじゃないと駄目よ

アドバイスに従いプロパティにしたら表示されました。
ありがとうございます。

やはり、C#のコアの部分を理解してないとダメだなと
思い知りました。
0526デフォルトの名無しさん2015/02/06(金) 23:41:12.63ID:VJ9IpT0a
いやそんなもんコアでもなんでもなくDataGridViewの仕様に過ぎない
0527デフォルトの名無しさん2015/02/07(土) 06:29:38.00ID:L5zJgfED
リフレクション技術はC#の核心、と言いたいのかもしれない
0528デフォルトの名無しさん2015/02/07(土) 07:23:42.30ID:UxV2OHq5
フィールドでもリフレクションできるしバインディングを実装するのに何の不足もない
どうせみんなプロパティ使うだろうというのとpublicフィールド使いまくるバカが出るのを防ぐために
フィールドはサポートされていないだけで
0529デフォルトの名無しさん2015/02/07(土) 07:31:24.22ID:qfWrFtjj
>バカが出るのを防ぐために
>フィールドはサポートされていないだけで

ソースは?
バインディングシステムの依存関係プロパティを実装する上で
プロパティじゃないと実装しづらいからだと記憶しているが
0530デフォルトの名無しさん2015/02/07(土) 07:48:16.01ID:L5zJgfED
2015年にもなってプロパティをpublicフィールドにするバカもいるしな
https://msdn.microsoft.com/en-us/library/system.numerics.vector2_fields%28v=vs.111%29.aspx
0531デフォルトの名無しさん2015/02/07(土) 07:56:09.73ID:UxV2OHq5
>>529
DataGridViewはWinFormsのコントロールだぞ
それはともかく、俺の主観抜きでいうなら
一般論として、開発者としてはコスト削減のため重複した機能はなるべく入れたくない
当時のリサーチでフィールドをバインディングしたいと考えているユーザーが多ければ
当然プロパティに比べて制限が多くても導入されてたはずだよ
0532デフォルトの名無しさん2015/02/07(土) 21:00:48.60ID:Rbi5vmZR
>>463
逆かな c#に区別がない
DB系のコントロールはバインド元が何型でも全部objectになるから型別にオーバーロードできない

だからこうなる
public static string Qot( object o )
{
 if( o == null || o == DBNull.Value || o.ToString().Length == 0 )
 {
  return "null";
 }
 else
 {
  return "'" + o.ToString().Replace( "'", "''" ) + "'";
 }
}

とはいえ、これでオーバーロードできもそれほどメリットもないけど
引用符処理はSQLリダイレクト防止の意味もあるので、
型やコントロールの違いで個別対応するより1個の関数で標準化する方が安全性のメリットが大きい
0533デフォルトの名無しさん2015/02/07(土) 21:05:34.30ID:L5zJgfED
寝言はC#文化とQuoteの綴りを覚えてからにしてくれ
0534デフォルトの名無しさん2015/02/07(土) 21:07:52.99ID:ZU+2HUn7
ぼくはSanitizeちゃん!
0535デフォルトの名無しさん2015/02/07(土) 21:20:16.78ID:o5egNras
C#のコードが公開されているサイトなどないでしょうか。
出来れば随時更新されるサイトがいいのですが・・・。
0536デフォルトの名無しさん2015/02/07(土) 21:23:43.79ID:atkDEiHt
reference sourceのこと?

http://referencesource.microsoft.com/
0537デフォルトの名無しさん2015/02/07(土) 21:27:37.66ID:cHCTx7Qf
コントロールの配列が参照で便利だからよく使ってるんだけど、Stringフィールドとかプロパティも参照の配列にできない?
0538デフォルトの名無しさん2015/02/07(土) 21:31:35.56ID:o5egNras
>>536
ありがとうございます。
こういったサイトがあるのは知りませんでした。
独習C#を読み終えた所なのですが、いろんな人のコードを
読みたいと思って質問させていただきました。
0539デフォルトの名無しさん2015/02/07(土) 21:47:43.43ID:VI6IEFmh
>>532
SQLリダイレクトってなんだ?
0540デフォルトの名無しさん2015/02/07(土) 21:53:46.74ID:L5zJgfED
SQLインジェクションに知ったかフィルターを適用したんだろ
普通の人はDbParameterを使うけど
0541デフォルトの名無しさん2015/02/07(土) 21:53:54.03ID:1aiUva8z
もしかして:SQLインジェクション
0542デフォルトの名無しさん2015/02/07(土) 21:59:41.21ID:PU3wJuy+
何というか、トンチンカンなんだよなぁ
0543デフォルトの名無しさん2015/02/07(土) 22:18:01.13ID:lj0cy6Ha
>>538
プログラミング歴と独習に掛けた時間を参考までに教えてください。
自分も独習読んでるけど、後半はいまいち理解しきれなくて困ってます
0544デフォルトの名無しさん2015/02/07(土) 22:27:21.06ID:o5egNras
>>543
プログラミング歴:1年半
独習C#:1週間くらい
です。
0545デフォルトの名無しさん2015/02/07(土) 22:34:34.06ID:UxV2OHq5
力を付けたいならC#はそこそこにして別の言語もやった方がいいよ
1つに集中してまず1つを極めようとすると変な癖が付くから良くない
0546デフォルトの名無しさん2015/02/07(土) 22:40:30.77ID:o5egNras
>>545
なるほど。
C言語とPHP、JAVAは勉強したことはありますが、
何かお勧めな言語はありますか??
0547デフォルトの名無しさん2015/02/07(土) 23:41:22.90ID:YRqC9rwk
それだけやってまだ言語をやるの?
目的は?
0548デフォルトの名無しさん2015/02/08(日) 00:39:08.59ID:/WGb+9gP
>>546
PHPやってJavascriptはやってないの?
Javascriptとかは知って損はないけど、C#の続きやってもいいと思う

>>537
式木つかえばできそうだけど、下手なことやるとかえってわかりにくくなるぞ
0549デフォルトの名無しさん2015/02/08(日) 00:45:17.96ID:c2KxA2L0
>>547
純粋に勉強したい欲求です。

>>548
Javascriptはさわりくらいです。
C#を極めてみたいのでがんばります。
0550デフォルトの名無しさん2015/02/08(日) 00:55:11.67ID:agUJrlVh
勉強してないでモノ作れよ
0551デフォルトの名無しさん2015/02/08(日) 01:17:50.86ID:c2KxA2L0
>>550
一応、モノは作ってるよ。
ただ大学で物理ばっかでITはあまり知らないから
参考にと
0552デフォルトの名無しさん2015/02/08(日) 06:18:04.64ID:JKy44BG4
井戸型ポテンシャルの計算とか?
シミュレーションや数値計算はやるんだろうから Web 系かな
SQL やっとけば?
0553デフォルトの名無しさん2015/02/08(日) 10:57:33.26ID:c6TFzFPp
すみません。try catchはどんな例外でもキャッチできるものでしょうか?
というのもとあるサービス・プログラムがtry catchしているのに
数ヶ月に一度落ちてしまうのです。
0554デフォルトの名無しさん2015/02/08(日) 11:04:17.56ID:8BxICIem
知らんがな
原因を知りたいなら落ちた時のログくらい晒せ
ログ取ってないなら取るように今すぐ直せ
0555デフォルトの名無しさん2015/02/08(日) 11:08:12.25ID:3TtwSuol
StackOverflowExceptionとかはcatchできない
0556デフォルトの名無しさん2015/02/08(日) 11:15:02.77ID:Wac/ZBhZ
>>553
間違っては無いけど自スレッドのスタックトレースの奥でthrow exceptionされたものしか拾わないよ
それに原因によっては例外が発生しない事もある
とりあえずThread.GetDomain().UnhandledExceptionで別スレッドでの例外もキャッチしたらどうかな
WinFormsならApplication.ThreadExceptionもだね
0557デフォルトの名無しさん2015/02/08(日) 11:23:56.26ID:c6TFzFPp
>>554
落ちるのでログが取れないんです
>>555
なるほど
>>556
なるほど
0558デフォルトの名無しさん2015/02/08(日) 11:28:39.03ID:+9BTZ+B8
>>540
失礼、インジェクションねw
「データセット」でxsdとかワケワカラン巨大ゴミ作られてから、
.NET特有のDB機能は基本的に使わないことにしてる
0559デフォルトの名無しさん2015/02/08(日) 11:28:41.75ID:8BxICIem
>>557
落ちてもイベントログに残るでしょ
0560デフォルトの名無しさん2015/02/08(日) 11:34:28.08ID:c6TFzFPp
>>559
イベントログのログって信用できるんですか?
もしそうならあれが原因なんだが。
0561デフォルトの名無しさん2015/02/08(日) 11:41:02.91ID:5CTZvvRC
アクセス違反やEnvironment.FailFastはfinallyを無視して落ちるよ
0562デフォルトの名無しさん2015/02/08(日) 11:41:11.13ID:Wac/ZBhZ
あれってなんだよ(怒
0563デフォルトの名無しさん2015/02/08(日) 11:42:49.38ID:c6TFzFPp
>>561
なるほど
>>562
特定機密です。
0564デフォルトの名無しさん2015/02/08(日) 12:03:17.04ID:7++NHH4w
>>563
毎回特定機密で落ちてるならそこでしょ
0565デフォルトの名無しさん2015/02/08(日) 12:37:38.02ID:/WGb+9gP
>>558
専門家でさえ自分でエスケープだけは絶対するなと言っているのに
0566デフォルトの名無しさん2015/02/08(日) 12:52:59.56ID:i1ECf4Ro
別にいいじゃねえか初心者スレなんだから
死ぬまで初心者やってろって思うけどな
0567デフォルトの名無しさん2015/02/08(日) 16:28:47.14ID:mgJO6FZw
ワケワカラン ← 理解が足りないだけでは^^;
0568デフォルトの名無しさん2015/02/08(日) 16:37:06.33ID:5CTZvvRC
TypedDataSetGeneratorがウンコだからってDbParameter使わない理由にはならんだろ
0569デフォルトの名無しさん2015/02/08(日) 17:02:55.48ID:7RfeHHN8
>>532みたいな人みると、
入門スレより下の赤ちゃんスレが必要だなって思う。
0570デフォルトの名無しさん2015/02/08(日) 18:09:14.58ID:Wac/ZBhZ
無自覚な初心者相手じゃ意味ないだろう
0571デフォルトの名無しさん2015/02/08(日) 18:30:27.16ID:5CTZvvRC
どんな職場で教育されたらこういう残念なPGになるんだろうか
まさか個人じゃないよな
0572デフォルトの名無しさん2015/02/08(日) 19:12:58.28ID:2bUxbOzK
このスレってUnityとかWindows以外も範囲に入ってるの?
0573デフォルトの名無しさん2015/02/08(日) 19:18:01.98ID:8BxICIem
Unityに依存しない質問ならいいんじゃね
0574デフォルトの名無しさん2015/02/08(日) 19:23:37.92ID:3TtwSuol
別にしても良いけど適切な回答が返ってくるとは限らない
特にプラットフォームを初めに示しておかない場合
0575デフォルトの名無しさん2015/02/09(月) 11:32:27.58ID:EstXLtoj
C#でfriend指定ってどうやるんですか
現在publicにしているメソッドが特定のクラスからしか呼ばれません
むやみやたらにインテリセンスに出てくるのが邪魔なので
friend指定したいのですが(ないのは知っています)
0576デフォルトの名無しさん2015/02/09(月) 11:49:11.78ID:cxy5oANg
無いのにできると思う理由ってなんだよ。
沸いてるのか?
0577デフォルトの名無しさん2015/02/09(月) 11:55:10.50ID:Qr3WwpBc
>>575
https://msdn.microsoft.com/ja-jp/library/0tke9fxk.aspx
C#でfriend指定 でググったらトップに出てきたけど
0578デフォルトの名無しさん2015/02/09(月) 12:05:41.10ID:L/zcsg1F
internal/Friendは575が言ってるであろうfriendとは別
05795752015/02/09(月) 12:07:12.86ID:EstXLtoj
不可能を可能にする方法を聞いています
よろしくお願いします
0580デフォルトの名無しさん2015/02/09(月) 12:16:54.76ID:cxy5oANg
そーか
死ね
0581デフォルトの名無しさん2015/02/09(月) 12:45:21.63ID:AeE2gSds
>>575
インテリセンスに出てくるのがって話ならEditorBrowsable属性ね
0582デフォルトの名無しさん2015/02/09(月) 13:31:18.43ID:Qr3WwpBc
>>578
575が言ってるであろうfriendの解説プリーズ
0583デフォルトの名無しさん2015/02/09(月) 13:45:02.14ID:Mgxxu5HK
変数名はキャメル、メソッド名はパスカルを使っているのですが、
Windowsフォーム内のコントロール名はいまだにハンガリアン記法を使っています。
コントロール名の推奨は何でしょうか?
0584デフォルトの名無しさん2015/02/09(月) 13:47:36.77ID:L/zcsg1F
class A {
&nbsp; &nbsp; friend class B;
private:
&nbsp; &nbsp; void Exec();
};
class B {
public:
&nbsp; &nbsp; void DoExec(A& a) {
&nbsp; &nbsp; &nbsp; &nbsp; a.Exec(); &nbsp; // privateだけど呼べちゃう
&nbsp; &nbsp; }
};
class C {
public:
&nbsp; &nbsp; void DoExec(A& a) {
&nbsp; &nbsp; &nbsp; &nbsp; a.Exec(); // コンパイルエラー
&nbsp; &nbsp; }
};
0585デフォルトの名無しさん2015/02/09(月) 13:48:15.84ID:KciKHH5+
>>583
他人が読んで理解できる日本語を書けよ。
馬鹿じゃないの。
0586デフォルトの名無しさん2015/02/09(月) 13:49:01.33ID:L/zcsg1F
>>583
コントロールなんてprivateだろ
privateなんぞ好きにしろ
というのがMSの見解
0587デフォルトの名無しさん2015/02/09(月) 13:56:04.22ID:cxy5oANg
俺が言うのもなんだが今日はみんなキツい
月曜日だから?
0588デフォルトの名無しさん2015/02/09(月) 14:13:43.56ID:Qr3WwpBc
>>584
公開範囲決めるのはアセンブリ分けるのとInternalsVisibleToAttributeで出来るはずだけど
それC++か。privateにもアクセスできるんだな
つか、それC++にFriend/internalに相当するアクセス制限ないからか
C#ならちゃんと区別しろって事だな
親しき仲にも礼儀あり。友達でもプライベートは侵しちゃいかん
0589デフォルトの名無しさん2015/02/09(月) 18:06:23.84ID:eBrgAMyt
>>568
使ってもいいけど1つ書けばいいものを3つ書くことになるし、工数的に今回は無理
「@hoge」の禁則文字を自動エスケープとか、それ用の共通関数作ってからになるし
(nullと空文字のDBNull.Value変換機能がなければそれも)

それはやっぱり型不問の共通関数になると思うけど(引用符は一例として出しただけで)
数値カラム向けでも、入力がテキストボックスなのかコンボボックスなのかで型は違うし、
その問題はパラメータ使おうが同じだと思うんだけど
(引数がobjectだからどっちも入るんだろうけど、てことは俺の発想と同じだねw)

面倒そうなのは、DbConnectionのParameters.Addが引数1個っていう…
基本クラスがDbConnectionで仮に書いたジェネリックなので、基本クラスで書けないかも
0590デフォルトの名無しさん2015/02/09(月) 19:22:05.49ID:cxy5oANg
長い割に中身のない
0591デフォルトの名無しさん2015/02/09(月) 19:47:07.40ID:zlMe0X4O
使ってもいいというか使わないとダメだと思うな
0592デフォルトの名無しさん2015/02/09(月) 19:47:59.51ID:Q2Me71F1
自分が赤ちゃん呼ばわり(>>569)されてたことの意味に早く気付けるといいですね
0593デフォルトの名無しさん2015/02/09(月) 19:50:07.10ID:AeE2gSds
コントロールの都合による型変換まで考慮するの?
DBの話だよな
0594デフォルトの名無しさん2015/02/09(月) 20:10:17.23ID:4ZSUJx2g
自分の技量が見えていない点と
あまりに無邪気すぎる点

> 引用符処理はSQLリダイレクト防止の意味もあるので、
> 型やコントロールの違いで個別対応するより1個の関数で標準化する方が安全性のメリットが大きい

↑どんな顔してどんな相手想定してこれ書いたんやろな?
ここに赤ちゃんしか居ないと思ってこんなこと書いたんやろか?
0595デフォルトの名無しさん2015/02/09(月) 20:15:10.55ID:8otGfvRp
>>587
年度末が見えてきたから
0596デフォルトの名無しさん2015/02/10(火) 00:44:28.71ID:hufqgp5Q
DBNullが嫌だったらEF使えよ
linqのオーバーヘッドが気になるなら生SQLも使えるし…
0597デフォルトの名無しさん2015/02/10(火) 04:18:47.41ID:bTC6DiOH
>>594
その辺まではまだ、正しいかどうかは別にして、言ってる事は理解できる

>面倒そうなのは、DbConnectionのParameters.Addが引数1個っていう…
>基本クラスがDbConnectionで仮に書いたジェネリックなので、基本クラスで書けないかも
この辺になるともう何を言ってるのか俺には解らねぇ
0598デフォルトの名無しさん2015/02/10(火) 11:39:21.33ID:xe5WlwkD
VS2008でDataGridViewのヘッダーや行のフォントサイズを大きくして保存しても、次に起動するとデフォルトサイズに戻っちゃってるんですが、
設定が保存されないのでしょうか?
0599デフォルトの名無しさん2015/02/10(火) 11:52:57.76ID:qtFGicH0
ある文字配列の中に指定文字列があるか調べて、無い場合にはそのまま指定文字列を追加して、
指定文字列が有る場合には指定文字列に連番を付けて加算していって
指定文字列1、指定文字列2、指定文字列3...とすることは出来たのですが
指定文字列の数をカウントして末尾に追加しているだけなので
例えば指定文字列5まで来て、指定文字列3を削除すると、次の文字列がまた指定文字列5になってしまいます。
その場合に抜けてる指定文字列3を作り、その次は指定文字列6という風にするにはどうすればいいでしょうか
要は指定文字列の重複しない連番が欲しいだけなのですが。

string[] arrayText2 = (string[])arrayText.ToArray(typeof(string));
string s2 = string.Join("", arrayText2);

if (0 <= s2.IndexOf(指定文字列))
{
s2を検索して指定文字列の数を数えて末尾に追加
}
else
{
指定文字列を追加
}
0600デフォルトの名無しさん2015/02/10(火) 12:05:53.05ID:xesR4i+G
追加するときは既存かどうかなんか気にせずどんどん追加 番号を追加とかしない
連番が欲しいときに調べる
0601デフォルトの名無しさん2015/02/10(火) 12:54:50.47ID:qtFGicH0
>>600
文字列が重複すると処理時に困るので文字列追加時に連番を付ける必要があります。
0602デフォルトの名無しさん2015/02/10(火) 13:49:55.07ID:SW06GOy5
そういう情報を保存してない限り、順番に全部見るしか無いよ
それとも保存するやりかた聞いてるの?
0603デフォルトの名無しさん2015/02/10(火) 14:35:39.83ID:qtFGicH0
>>602
そうなのですか。保存するには番号を配列に格納すればいいのでしょうか?
0604デフォルトの名無しさん2015/02/10(火) 14:56:01.94ID:NZ3MCRWw
指定文字列ごとに連番を管理するならDictionary
重複さえしなければいいなら最大値一つ持っておけば十分でしょ
0605デフォルトの名無しさん2015/02/10(火) 15:50:38.44ID:I3Nqh774
>>599
どうするか以前に要件が曖昧過ぎ。
0606デフォルトの名無しさん2015/02/10(火) 16:46:14.16ID:qtFGicH0
>>604
ありがとうございます。調べてみます。
>>605
曖昧といわれましても同一文字列が重複しないための連番が必要であるというだけです。
0607デフォルトの名無しさん2015/02/10(火) 17:17:49.90ID:I3Nqh774
絵に描いたようなダメな人だな。

>>599の何が曖昧かって、一例を挙げれば
初期状態で既に複数の「連番が振られた指定文字列」を含む文字列を与えられるケースの
有無によって処理の複雑さがまったく変わってくるが、それが不明。
0608デフォルトの名無しさん2015/02/10(火) 17:42:18.41ID:qtFGicH0
>>607
ありがとうございます。初期状態では通常連番は存在しません。
最初は指定文字列があり、次に指定文字列1、次に指定文字列2、指定文字列3...と言う具合になります。
そして指定文字列2を削除しても次に指定文字列3にならずに指定文字列2が出来るようにしたいのです。
0609デフォルトの名無しさん2015/02/10(火) 17:48:22.10ID:idz5uwmz
2じゃないとダメ?
最大値のひとつ大きいので良ければ楽なんだが
0610デフォルトの名無しさん2015/02/10(火) 17:53:18.38ID:SW06GOy5
ディクショナリに次に振る予定の値を書いておいて削除時にその数字より小さかったらそれを書き込み
その数字使用時に全体の数と合わなければスキャンし直す、とかでいいべ
でも指定文字列の末尾は数字が絶対に入らないか文字列の長さが決まってるのでないと
いろいろ面倒そうな。
0611デフォルトの名無しさん2015/02/10(火) 18:05:14.82ID:DGq7i7jd
これarryalistをtoarrayしてjoinしてんの?
["f", "oo b", "ar foooooo"]
↓
"foo bar foooooo"に指定文字列とやらを仮に"foo"として最終的に
↓
"foo bar foo1oooo"

みたいな結果が欲しいの??
0612デフォルトの名無しさん2015/02/10(火) 18:50:11.63ID:I3Nqh774
>>608
まだよくわからんけどこういうの?
https://ideone.com/esHg1c
0613デフォルトの名無しさん2015/02/10(火) 21:03:57.66ID:qtFGicH0
皆さん有難うございます。

>>609
重複しないならその方法で構いません。

>>610
割と簡単なのかと思っていましたがなかなかややこしいのですね。

>>611
思い付いた方法が、指定文字列が何回含まれてるか検索して、
その数を末尾に付ける、ということでそういう風になったのですが
指定文字列がfooとすると欲しいのはfoo1,foo2,foo3...です。
おかしな事をしているかもしれません。

>>612
ありがとうございます。今日は試す時間が無いので明日以降になると思いますが、
挙動としては例えばエクスプローラーで新しいフォルダを作った時に
新しいフォルダ、新しいフォルダ(2)、新しいフォルダ(3)、...等となりますが、
今回ファイルやフォルダは関係がないので、これの文字列版が欲しいのです。
0614デフォルトの名無しさん2015/02/10(火) 21:14:46.91ID:VwfV97cc
どうせだから最後に一回だけ詳しく聞くわ。

> string[] arrayText2 = (string[])arrayText.ToArray(typeof(string));

このarrayTextはArrayListのインスタンスだよね?
それには何が入っているの?
あるいは、何しか入れない、などあるの?

> 指定文字列がfooとすると欲しいのはfoo1,foo2,foo3...です。

最終的に欲しいのは、joinした結果の文字列をいじったものじゃなくて、
編集された文字列を中身にもつ配列かリストなの?
0615デフォルトの名無しさん2015/02/10(火) 21:17:55.14ID:iqkv3ykJ
文字列を並べといて前方一致するか二分検索→該当するのがあれば頭出しして隙間を探すって感じじゃないの
hoge+12とhoge1+2を区別するのかとか疑問はあるけど
0616デフォルトの名無しさん2015/02/10(火) 21:23:54.54ID:NN8LXSdA
手段と目的が
0617デフォルトの名無しさん2015/02/10(火) 21:30:40.05ID:6GP4C07+
人間相手に自分の要件をちゃんと説明できない人が
融通が利かない機械相手のコードなんか書けるわけない。

>>599みたいな曖昧な質問に何の疑問も感じずにほいほい答える人もたぶん同類。
0618デフォルトの名無しさん2015/02/10(火) 21:36:37.09ID:NN8LXSdA
そう怒るなよ
明日休みだろ?
0619デフォルトの名無しさん2015/02/11(水) 14:32:43.46ID:EYo3sy3C
ArrayListを使う時点で意味不明なのは突っ込んじゃいけないところだったのかな
0620デフォルトの名無しさん2015/02/11(水) 14:38:17.93ID:gRGm+ax3
やんごとなき理由があるんだろうと思ってそれについては黙っておいた
0621デフォルトの名無しさん2015/02/11(水) 15:03:11.79ID:uxm1HOmW
まあ本質じゃないので解決してから突っ込めばいいしなw
0622デフォルトの名無しさん2015/02/11(水) 17:04:49.62ID:HV6QGBu9
元の質問自体、やりたいことは別にあるんだと思って読んでた
それを実現する手段として質問者が考えたのが「文字列と最大値を連結していく」方法
んでこのアプローチが奇妙だから質問も奇妙になってると
0623デフォルトの名無しさん2015/02/11(水) 19:31:17.62ID:R3Qa2gos
>>614
>それには何が入っているの?
treeViewのノード名の文字列が入っています。
ノードのコピーや新規作成時にこれが重複しないようにしたいのです

>最終的に欲しいのは、joinした結果の文字列をいじったものじゃなくて、
>編集された文字列を中身にもつ配列かリストなの?
そもそもそれが必要であるのかどうかも分からないのですが、
上記が実現出来る方法であれば無くても何の問題もありません。

>>619
当方もどういうやり方でそれを実現したら良いのかが分からないので何とか考えた方法が
文字を配列にして検索する方法だったのですが理解度が足りないためおかしな事をしているようですが
通常であればどういう風にするものなのでしょうか。

>>622
その通りです。要するにこちらもそのやり方が分かっていないので
こちらで思い付いた方法でやっていたのですがそれがおかしな方法だったようです。
0624デフォルトの名無しさん2015/02/11(水) 20:25:22.78ID:ZcZ2X23Z
あかん、こいつ丸投げの気配出しよる
0625デフォルトの名無しさん2015/02/11(水) 23:01:43.86ID:OTymHSQA
動的にLinqクエリを生成するにはExpressionを使うしかないですか
0626デフォルトの名無しさん2015/02/11(水) 23:24:15.22ID:dL/lsdcn
streamオブジェクトをコンストラクタの引数にとって読み書きの処理をするクラスを作る場合、
そのstreamのClose()やDispose()をするべき場所は呼び出す側でしょうか?
それともクラスにIDisposableを実装して丸ごとDisposeしていいのでしょうか?
0627デフォルトの名無しさん2015/02/11(水) 23:50:30.30ID:XzdqNrda
>>625
EFなら文字列でカラム指定したりできるでしょ
IEnumerable<T>に対するクエリならExpressionとか無関係な普通のラムダだからどうとでもなる

>>626
そのクラスの役割によるだろ
Stream全体のラッパーとして機能するならIDisposable実装して閉じるようにしたほうが便利だろうし
1つのStreamに対してインスタンスを複数作って読み書きするようなことがありうるんなら当然閉じちゃダメでしょ
0628デフォルトの名無しさん2015/02/12(木) 00:17:55.83ID:yPnETwQj
EFとは何の略?
0629デフォルトの名無しさん2015/02/12(木) 00:33:54.52ID:LiRnTcwy
コンストラクタで例外が throw された場合、デストラクタ (ファイナライザ) は呼ばれますか?
0630デフォルトの名無しさん2015/02/12(木) 01:13:32.49ID:/kBvo1zT
これ読むと呼ばれるみたいだが、c# language specificationには特に書いてないと思う
http://stackoverflow.com/questions/188693/is-the-destructor-called-if-the-constructor-throws-an-exception
0631デフォルトの名無しさん2015/02/12(木) 14:34:04.31ID:Xeyy+uCj
クリップボードのデータの取得元のウインドウ情報って取れますか?
IEのこのページからコピーしたとかこのアプリからコピーしたとか
0632デフォルトの名無しさん2015/02/12(木) 15:04:38.66ID:Xil7wJZK
よくあるバイナリを構造体に、のMarshal.PtrToStructureが4.5.1でジェネリックメソッドが増えていると思いきや、
単なるunboxingするラッパーで、案の定パフォーマンスが出ないんですが、コールスタックの無駄ではないでしょうか

特に構造体配列の場合、固定サイズバッファは言わずもがな、MarshalAsにしろ固定サイズなので、
要素数が可変となると、ポインターキャストか、Marshal.PtrToStructureを要素分というのも嫌らしいので、

ttp://ideone.com/P6ZpjV

System.Runtime.InteropServices.SafeBufferが誂え向きなんではと思い立ったのだけど、
マーシャリングされないのとアライメントが問題になる場合がある事くらいですか?
0633デフォルトの名無しさん2015/02/12(木) 15:12:27.74ID:ozrGSMbY
dllに自作クラスを引数で渡したい時ってどういう渡し方をすればキャストエラーが起きなくなりますか?
dllも呼び出し側もC#で、どっちも同じクラスを定義してあります。

例
dll側:
public void test(Test t){

}

呼び出し側:
public void main(int args, char** argv){

 Test t = new Test();
 dll,test(t);  <-- 実際はdynamic使ってもうちょっと手間かけてコールしてます

}


これでdll側でキャストエラーが起きてしまいます。
System.InvalidCastException: [A]Test は [B]Test にキャストできません。
0634デフォルトの名無しさん2015/02/12(木) 15:59:14.47ID:WU7UMI6b
どうせクラスの定義が二カ所にあるんだろそうだろ
0635デフォルトの名無しさん2015/02/12(木) 18:18:00.02ID:ozrGSMbY
>>634
はいそれですw
どっちからも参照する静的なdllを用意すればおkですか?
0636デフォルトの名無しさん2015/02/12(木) 20:57:33.10ID:yDIkiztO
いや単純にdll側にクラスを定義して呼び出し側がそれを参照すればいい
Testの実装を呼び出し側に書かなきゃいけない事情があるなら
dll側にインターフェイスだけ宣言してそれを呼び出し側で実装するのが筋だが、
そのレベルだとまだ早い
0637デフォルトの名無しさん2015/02/12(木) 23:01:10.71ID:ZC1rcnQ2
html を SgmlReader で XDocument に変換した後、XDocument.ToString() で html に戻すと「&nbsp;」が「&amp;nbsp;」になる
ちなみに「&amp;nbsp;」はそのまま変わらない
↓
using( var reader = new StringReader("<html><body>&nbsp; &amp;nbsp;</body></html>") )
using( var sgmlr = new SgmlReader() { InputStream = reader, CaseFolding= CaseFolding.ToLower, DocType="HTML", IgnoreDtd=true } ) {
 var htmlDoc = XDocument.Load(sgmlr);
 Console.WriteLine(htmlDoc.ToString()); // <html><body>&amp;nbsp; &amp;nbsp;</body></html>
}

何とかする方法ある?

やりたいことは html → XDocument で編集 → html

HTML Agility Pack使った方がいいのか…
0638デフォルトの名無しさん2015/02/12(木) 23:14:32.31ID:cgP7seaL
>>637
stringreaderに渡すのは生htmlはNGで文字列として扱われるからじゃない?
その部分をstreamreaderなりほかのに変える
0639デフォルトの名無しさん2015/02/12(木) 23:33:55.84ID:ZC1rcnQ2
>>638
元々、StreamReader使ってて同じ現象が起きたんだ

簡略化&テストのためにStringReader使ってる
0640デフォルトの名無しさん2015/02/12(木) 23:48:58.50ID:sPQ65W3b
nbspはXMLではなくてHTMLの文字実体参照だからXDocumentで認識されないのは仕方ない
DTDとか使わないといけないんじゃないか
0641デフォルトの名無しさん2015/02/13(金) 00:26:47.42ID:QzpO+MVT
週末の趣味プログラマーで仕事は非エンジニアです。
最近プログラムって、もしかして最低限の文法さえ理解したら
あとはどう処理するかっていうアルゴリズムが全てで、
言語の機能を覚えきる必要なんてないんじゃないだろうか
って思えてきたんですが、どうなんでしょう?
0642デフォルトの名無しさん2015/02/13(金) 00:31:17.29ID:7qQ1ajDD
>>641
同じく趣味プログラマーだが、自分もそう思っていた時期があった
確かにそれでもだいたいはいけるんだが、言語機能をしっかり見ていくと面倒なことしてたなー、なんて発見することもあるから、アルゴリズムが全てとは思わなくなった
0643デフォルトの名無しさん2015/02/13(金) 00:36:20.62ID:TAmE7xP1
>>641
アセンブリだとそうだが、ライブラリ豊富な高級言語だと話は変わる
0644デフォルトの名無しさん2015/02/13(金) 02:44:04.12ID:qbqLjLmF
>>627
ラッパーなのでIDisposable実装することにしました。ありがとうございました

で、IDisposableに関してなんですが、
https://msdn.microsoft.com/ja-jp/library/fs2xkftw%28v=vs.110%29.aspx
このページの「派生クラスのDisposeパターン」のところに
>このメソッドは、基底クラスの Dispose(Boolean) メソッドも呼び出して、それに disposing 引数の値として true を渡す必要があります。
と書いてあるのですが、例示のコードはどこからどう見ても基底クラスのDisposeを呼び出してるようには見えません。
https://msdn.microsoft.com/ja-jp/library/b1yfkh5e.aspx
こちらのぺーじでは普通にbase.Dispose(disposing);と書いてあるのですが、上のページでそれがない理由は何なのでしょうか?
0645デフォルトの名無しさん2015/02/13(金) 05:25:18.45ID:xPs0ME2U
>>641
高級言語になってくると、それはアルゴリズマーの仕事だね
予め用意された言語機能を巧く組み立てるのがプログラマー
もちろんアルゴリズムも考えられるに越したことはないけど

ライブラリからはインターフェイスだけでも覚えとくと捗る
0646デフォルトの名無しさん2015/02/13(金) 10:32:21.72ID:v+TGHMKt
1.SplitContainer1を配置する。
2.SplitContainer2をSplitContainer1のpanel2に配置し、FORMを3分割する。
3.SplitContainer2のpanel2にWebbrowserコントロールをドッキングする。
こうすると、Webbrowser上のマウスの左ダブルクリックが効かなくなる(文字選択が効かない)のですが、
この辺りの原因と解決策をご存知の方いますか?
0647デフォルトの名無しさん2015/02/13(金) 18:18:25.87ID:q9zHBFi5
>>646
再現しないな(Win7 32bit .Net4.0 IE古いの)
環境は?あとIEでは平気?
0648デフォルトの名無しさん2015/02/13(金) 18:39:12.78ID:v+TGHMKt
環境はwin7 64bit .net4.0でIEは11が入ってますが、普段はchrome使ってます。
documentTypeでchromeが入ってたので、この辺りが原因かと思ったんですが、
Splitcontaner1のpanel1にwebコントロールを組んだり、Formにだけwebコントロールを
組むぶんには、ダブルクリックが利きます。
この場合においてもdocumentTypeでchromeが入ってるので、レジストリを書き換えて、
レンタリングを変える事は試していません。
海外サイトも漁ってみたんですが、さっぱり分からず、お手上げの状態です。
0649デフォルトの名無しさん2015/02/14(土) 21:28:02.03ID:QP+RdFJJ
>>636
かなり理解出来た
サンクス
0650デフォルトの名無しさん2015/02/15(日) 07:42:49.77ID:ABT28a22
>>641
プログラムは「どんな結果が欲しいか、そのためにどんな入力が必要か」が全てであり、
その間の「どう処理するか」というのはくだらない瑣末事である、というのが今風のプログラミング
0651デフォルトの名無しさん2015/02/15(日) 10:34:06.82ID:o6bA+CQT
641です、なる程なる程。
たしかに先輩方の仰るとおりです。
危うく遠回りしてしまう所でした。
趣味プログラマーとしては、
時間が限られているため、
効率良い道を進むべきですね。
ありがとうございます。
0652デフォルトの名無しさん2015/02/15(日) 15:27:21.21ID:cK3DuXMn
趣味なら時間掛けてアルゴリズムのがオススメだと思うが
0653デフォルトの名無しさん2015/02/15(日) 16:32:09.87ID:ABT28a22
高レベルなら高レベルなりのアルゴリズムがあるよ
基本的なアルゴリズムやデータ構造も当然知っておくべきだが、
「できた。今後はこれをコピペしよう。」と考えるか、
「できた。今後はこれを部品として使えば、細かいことに煩わされずにより抽象的な物事に集中できる」
と考えるかがドカタとプログラマーの分かれ目
0654デフォルトの名無しさん2015/02/15(日) 22:13:51.80ID:R3PZcg+F
C++のconstやJavaのfinalに相当するものはありますか?
0655デフォルトの名無しさん2015/02/15(日) 22:16:43.77ID:kVvF3ixX
>>654
https://msdn.microsoft.com/ja-jp/library/ms228632(v=vs.90).aspx
0656デフォルトの名無しさん2015/02/15(日) 22:21:28.08ID:R3PZcg+F
readonly var i = 1;
って書いたらエラーになりました
error CS0106: 修飾子 'readonly' がこの項目に対して有効ではありません。
0657デフォルトの名無しさん2015/02/15(日) 22:31:40.81ID:uUtopMvY
>>656
finalやconstを異なる二つの意味で使うJavaやCと違って
C#はきちんと使い分けされてるからな
class A {
 readonly String s;
 A() { this.s = ""; }
 const int i = 100;
 void M() {
  const int j = 200;
  //readonlyは使えず
 }
}
0658デフォルトの名無しさん2015/02/15(日) 23:37:39.90ID:a4C3HHAU
>>637
これ結局XDocumentに入れる前に「&→&amp;」して、XDocumentから戻した際に「&amp;→&」するくらいしか思いつかなかった

>>640
SgmlReaderでのDTDの使い方が分からなかったから試してないけど、DTD使ってもXDocument内で半角スペースとして扱われるので戻す際に「&amp;」にするのは困難だよな…
0659デフォルトの名無しさん2015/02/16(月) 09:51:39.17ID:usoCkHa9
private void Form1_Load(object sender, EventArgs e)
{
 Thread threadVideo = new Thread(new ThreadStart(Display));
 threadVideo.Start();
}
private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
 bitmapBに描画; //(実際にはちゃんと書いてあります)
 bitmapC = bitmapA + bitmapB; //ここで合成(実際にはちゃんと書いてあります)
 pictureBox1.Image = bitmapC; //書き込み
}
private void Display()
{
 bitmapA = QueryFrame();
 while (bitmapA != null)
 {
  bitmapC = bitmapA + bitmapB
  this.Invoke((MethodInvoker)delegate
  {
   this.pictureBox1.Image = bitmapC;
  });
  bitmapA = QueryFrame();
 }
}
背景に動画を表示したままにし、マウスが動いたときに上に重ねるずを変化させたいと思ってます。
QueryFrameで1コマ取り出せます。この処理は10ミリ秒で終わるときも5秒かかるときもあります。
ずっと10ミリ秒で動いているならスレッドのなかでマウス位置を読めばできると思うのですが、
5秒かかるときもあり、その間マウスに反応しなくなってしまいます。
この状態では色々な例外が出ますので、根本的な問題があるのだろうと思います。
どうすればいいのか分かりましたら助かります。よろしくお願いいたします。
06606592015/02/16(月) 09:54:02.12ID:usoCkHa9
>重ねるずを
重ねる図を
でした。すみません。
0661デフォルトの名無しさん2015/02/16(月) 12:18:06.39ID:KOfWDBoD
>>659
レスを5回は読んだが、何を言ってるのか、何が聞きたいのか、さっぱり理解できない。
0662デフォルトの名無しさん2015/02/16(月) 13:14:26.02ID:l8DGHMCr
めちゃくちゃだから全部晒さないと分からない
06636592015/02/16(月) 17:51:29.41ID:usoCkHa9
申し訳ありません。それでは質問を変えます。
Form1のpictureBox1に1秒1コマの動画が表示されています。
その上でマウスを動かすと動画とは非同期で動画の上のマウスの位置に点が次々と
表示され、残ったままにしたいのですが、どうすれば実現できるでしょうか?
OpenCVSharpでサンプルを作りました。Thread.Sleep(1000)は遅い動画を作るための
ダミーで、この中では処理ができないものとします(ソースはこれですべてです)。
06646592015/02/16(月) 17:52:05.09ID:usoCkHa9
public partial class Form1 : Form
{
 public Form1()
 {
  InitializeComponent();
 }
 private void Form1_Load(object sender, EventArgs e)
 {
  pictureBox1.MouseMove += new MouseEventHandler(Form1_MouseMove);
  Thread threadVideo = new Thread(new ThreadStart(Display));
  threadVideo.Start();
 }
 private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
 {
  //
 }
 private void Display()
 {
  CvCapture capture = new CvCapture("C:\\test.avi");
  IplImage image = capture.QueryFrame();
  while (image != null)
  {
   this.Invoke((MethodInvoker)delegate
   {
    this.pictureBox1.Image = BitmapConverter.ToBitmap(image);
   });
   Thread.Sleep(1000);
   image = capture.QueryFrame();
  }
 }
}
0665デフォルトの名無しさん2015/02/16(月) 17:56:41.58ID:F4ixByMJ
MouseMoveの中でマウス位置を一定数保存しといて
Displayの中でキャプチャ後にそこにそれを表示
06666592015/02/16(月) 18:05:36.56ID:usoCkHa9
すみません。マウスにリアルタイムに追従しなければならないのです。
それだと1秒遅れてうごきませんか?
0667デフォルトの名無しさん2015/02/16(月) 18:07:45.54ID:a73kbkcR
Sleepはずす、、、処理が重い時もか
別スレッドでマウスの一を記録し続けたら
0668デフォルトの名無しさん2015/02/16(月) 18:10:06.56ID:F4ixByMJ
非同期でか
だったら透明ウインドウ重ねてそこにmoousemoveのたびにポインター描画
0669デフォルトの名無しさん2015/02/16(月) 18:12:08.73ID:FHNhFZHL
マウスの位置の更新周期は?
0670デフォルトの名無しさん2015/02/16(月) 18:17:39.71ID:dSDAr7lb
private void Display()
{
&nbsp; ...
&nbsp; while() {
&nbsp; &nbsp; var bmp = BitmapConverter.ToBitmap(image);
&nbsp; &nbsp; this.BeginInvoke(new MethodInvoker(() => {
&nbsp; &nbsp; &nbsp; this.bitmapA = bmp;
&nbsp; &nbsp; &nbsp; this.Invalidate();
&nbsp; &nbsp; }));
&nbsp; &nbsp; ...
&nbsp; }
}
private void Form1_MouseMove(...) {
&nbsp; this.bitmapBに描画
&nbsp; this.Invalidate();
}
private void Form|PictureBox_Paint(...) {
&nbsp; e.Graphics.DrawImage(this.bitmapA, ...);
&nbsp; e.Graphics.DrawImage(this.bitmapB, ...);
}
こんなんとか PictureBox.Imageは使わない方向で
06716592015/02/16(月) 20:55:34.00ID:usoCkHa9
皆さん回答ありがとうございます。
670さんのような方法を試してみます。

最初はpictureBoxを重ねようと思ったのですが、透明処理は
親ウィンドウを透過したようになってしまうようです。
0672デフォルトの名無しさん2015/02/16(月) 20:57:15.61ID:W3LLbnCZ
>>663
結局何を聞きたいんだろう。
とりあえずサンプルコード書いてみた。
http://ideone.com/RUF117
0673デフォルトの名無しさん2015/02/16(月) 20:58:40.44ID:l8DGHMCr
>>659
QueryFrameで5秒かかると無反応の理由が分からないな
06746592015/02/16(月) 22:12:21.72ID:usoCkHa9
670さんの方法のアレンジで出来ました。
サンプルで言えば、MouseMoveでマウス座標を記録、PictureBox_Paintでbitmapの上に描くという処理です。

他にもご回答くださいましてありがとうございました。
0675デフォルトの名無しさん2015/02/17(火) 00:03:04.16ID:C3iSO634
>>670
悪いけど激しく見づらい
0676デフォルトの名無しさん2015/02/17(火) 00:49:39.19ID:or7h50KG
お前ら優し過ぎwww
0677デフォルトの名無しさん2015/02/17(火) 19:22:12.43ID:eQlm+gbB
HtmlAgilityPackについて、例えば2chのスレッドをHTMLから抽出しようとする場合、
.DocumentNode.SelectNodes(@"//dd")
だと大丈夫なのに
.DocumentNode.SelectNodes( @"/html/body/div[2]/span/div[3]/dl/dd" )
だとダメなのは何故なのでしょうか?
0678デフォルトの名無しさん2015/02/17(火) 21:31:56.62ID:OjfdNU2j
xpathなら[2]とか言う書き方なんかできないが それがxpathかどうかしらんけど
0679デフォルトの名無しさん2015/02/17(火) 21:36:45.83ID:xa3IrafF
>>678
https://msdn.microsoft.com/ja-jp/library/ms256086%28v=vs.110%29.aspx#mt41
0680デフォルトの名無しさん2015/02/18(水) 00:35:00.96ID:AVZb1Mt2
asp.netでaspxのレスポンスをセッションに格納したいんだが、Response.Filterに自前Stream設定してもセッションに格納するタイミングが無いよな
※セッションはSQLServer使用

Stream.Flush()のタイミングでセッションオブジェクトにセットしても保存されないってことは、その前のイベントでSQLServerへのセッション保存が行われてる?

なんか良い方法ある?
Server.Execute使うしかない?
06816772015/02/18(水) 06:13:59.95ID:gVht9bak
>>677だけどわかりました
dtとddが閉じられて無くて、HAPが入れ子だと解釈してたようです
一応閉じなくていい事になってる筈なので、HAPのバグみたいなものと言えなくもなさそうです
0682デフォルトの名無しさん2015/02/18(水) 08:37:21.83ID:Cp8GNMdn
株価を取得して配列に格納していき、動的に移動平均を取りたいのですが、例えばMA[0]〜MA[20]に格納して、[0]には常に新しい値、20以上古い値は破棄していく仕組みを作りたいのですが、どのようにアプローチしていけば良いでしょうか?ヒントお願いします。
0683デフォルトの名無しさん2015/02/18(水) 08:44:24.00ID:CYU65RWt
que
0684デフォルトの名無しさん2015/02/18(水) 10:40:35.66ID:YBW6sHFz
>>683
queueですか?queue勉強します!
0685デフォルトの名無しさん2015/02/18(水) 13:25:36.24ID:CqZbM7Zr
キューっていうかリングバッファーかね。
標準のキューは柔軟性ゼロで使いにくいよな。

株やってる人なら知ってると思うけど、過去の値を使わずに移動平均的な
値を求める方法もあるよ。
デジタルフィルターでいうIIRみたいな考え方のやつ。
0686デフォルトの名無しさん2015/02/18(水) 14:35:55.33ID:iSXHPSyh
質問です。
数字の文字列で整数部分は3桁でカンマ区切りにして、小数第4位まで表示する
ToString()のフォーマット指定がわからないです・・・・。
0687デフォルトの名無しさん2015/02/18(水) 14:42:05.51ID:pmjO4Zhz
#,###.####
0688デフォルトの名無しさん2015/02/18(水) 14:50:41.78ID:iSXHPSyh
>>687
即レスありがとうございます!うまくいきました!
0689デフォルトの名無しさん2015/02/18(水) 16:57:01.23ID:YBW6sHFz
>>685
ちょっとわからない単語が出てきましたがありがとうございます。調べてチャレンジしてみます。
0690デフォルトの名無しさん2015/02/18(水) 17:33:51.52ID:pqAxD0rj
1万件のデータが入っているDateTlabeクラスがあります。
そのデータを1件目〜1万件目まで順番に処理をすると時間がかかり過ぎるので
スレッドを複数つかって処理しようと考えています。

たとえば、スレッドを複数起動して1つ目のスレッドは1〜1000件目まで処理をさせて
2つめのスレッドは1000〜2000件目までといったかんじです。
ひとつのDateTlabeに複数のスレッドがアクセスすることになるので予期しない問題が発生したりするので
あまりよくないロジックではないかと思っているのですが、
どういう処理をさせるのがベストなんでしょうか?
0691デフォルトの名無しさん2015/02/18(水) 17:35:07.81ID:pqAxD0rj
× ひとつのDateTlabeに複数のスレッドがアクセスすることになるので予期しない問題が発生したりするので

○ ひとつのDateTlabeに複数のスレッドがアクセスすることになるので予期しない問題が発生したりしそうで
0692デフォルトの名無しさん2015/02/18(水) 17:40:10.35ID:206RiQwb
どういう処理かによる
0693デフォルトの名無しさん2015/02/18(水) 17:42:05.86ID:3bNFOmOE
DateTlabeなんてクラスは知らん
0694デフォルトの名無しさん2015/02/18(水) 18:01:24.04ID:xzrnQB2I
>>688
n4の方がいいよ、それカルチャ依存だから
0695デフォルトの名無しさん2015/02/18(水) 18:38:18.96ID:xzrnQB2I
>>690
MSDNから引用
「この型は、マルチスレッド読み取り操作に対して安全です。 すべての書き込み操作の同期をとる必要があります。」

読み取りだけなら問題ない、Parallel.Forでどうぞ
0696デフォルトの名無しさん2015/02/18(水) 18:49:05.21ID:pmjO4Zhz
>>694
同じNumberFormatInfo与えただけだと同じになったんだけど
どういう時に相違点が出るん?
06976902015/02/18(水) 18:55:39.97ID:pqAxD0rj
DateTlabeじゃなくてDataTableクラスした。すみません。

>>695
そうなんですよ。
DataTableに書き込むと「DataTable の内部インデックスが破損しています」や
「インデックスが配列の境界外です」とエラーが出るんですよ。

書き込むとなればDataTableを分割して個別に処理するのがベストなんですかねぇ?
0698デフォルトの名無しさん2015/02/18(水) 19:17:17.03ID:xzrnQB2I
>>696
日本以外で実行した場合とコンパネで書式変更した場合かな
要はデータの具体的表現は国や好みなどの要因で様々なので目的ごとの抽象的な表現で指定しましょうって事かな

>>697
手段が目的になっていないか?
本当にDataTableである必要があるのか?
他処理を改善してカバー出来ないか?
内容が分からないのでこれ以上突っ込んだ事は言えない
0699デフォルトの名無しさん2015/02/18(水) 19:31:26.75ID:pmjO4Zhz
>>698
> 日本以外で実行した場合とコンパネで書式変更した場合かな
> 要はデータの具体的表現は国や好みなどの要因で様々なので目的ごとの抽象的な表現で指定しましょうって事かな
カスタム数値書式指定文字列の , とか . はプレースホルダで、実際にはカルチャの各区切り文字列を使うよ
区切り桁数も
0700デフォルトの名無しさん2015/02/18(水) 19:40:05.69ID:NapCWFmn
>>697
マルチスレッドで実行して結果をシングルスレッドで書き込めばいいじゃん
なんか問題ある?
0701デフォルトの名無しさん2015/02/18(水) 19:40:43.19ID:xzrnQB2I
>>699
うん、何が違うんだろうな
0702デフォルトの名無しさん2015/02/18(水) 19:53:52.86ID:ZsWSUqlJ
少なくともうちのPCには#,#.####とn4で結果が変わるような糞カルチャは入っていない
0703デフォルトの名無しさん2015/02/18(水) 20:47:02.59ID:FooM0Je6
>>680
レスポンス出力時にはセッションの保存は終わってる
そもそも何のためにそんなことしたいのかわからんが
他の方法考えた方が良いんじゃね

あとWebProg板にASP.NETのスレあるぞ
まあ、過疎ってるけど
0704デフォルトの名無しさん2015/02/18(水) 20:56:57.65ID:xzrnQB2I
>>702
数値なら標準でもカスタムでもご自由にって事か
日付の場合でyyyy/MM/dd(ja-JP)がM/d/yyyy(en-US)に変換されるなんて事ないよな?
"d"なら変換されたはず
0705デフォルトの名無しさん2015/02/18(水) 21:01:25.42ID:pmjO4Zhz
日付時刻の要素の位置はそうね
0706デフォルトの名無しさん2015/02/18(水) 21:02:22.99ID:tactmY24
>>690
たった1万件の処理で時間がかかり過ぎるって色々おかしい気がする
07076902015/02/18(水) 22:26:32.48ID:pqAxD0rj
>>697
たしかにDataTableである必要はないですね
元々はシングルスレッドで稼働していたんですが、データ量が増えたので、マルチスレッドで処理しようとしているところでした

>>700
その結果なんですが、読み込むDataTableの行に書き込んでいるんです
下のテーブルだと1のURLを読み込んでアクセスします。その時間を2に書き込むような感じです
       1             2 
--------------------+----------------------
http://xxxxxxxxxxxx    2015/02/15  
--------------------+----------------------
http://xxxxxxxxxxxx    2015/02/15  
--------------------+----------------------

>>706
実際には1万件もないですが、Webのレスポンスを待つので時間がかかります
0708デフォルトの名無しさん2015/02/18(水) 22:33:44.66ID:ZsWSUqlJ
HTTP接続で律速されてるなら排他ロックで問題ないんじゃね
ある程度溜めてMergeって手もあるけど
0709デフォルトの名無しさん2015/02/18(水) 23:23:44.07ID:xzrnQB2I
>>707
こんな方法もあるね
private void Form1_Load(object sender, EventArgs e)
{
var table = new DataTable();
table.Columns.Add("No", typeof(int));
table.Columns.Add("URL", typeof(string));
table.Columns.Add("Date", typeof(Hoge));
//適当にレコード追加
for (int i = 0; i < 100000; i++)
{
table.LoadDataRow(new object[] { i, "http://"; + i, new Hoge() }, true);
}

Parallel.For(0, table.Rows.Count, idx => ((Hoge)table.Rows[idx]["Date"]).Value = idx.ToString());

//これだとエラー
//Parallel.For(0, table.Rows.Count, idx => table.Rows[idx]["Date"] = new Hoge() { Value = idx.ToString() });

this.dataGridView1.DataSource = table;
}

private class Hoge
{
public string Value { get; set; }
public override string ToString()
{
return this.Value ?? "";
}
}
0710デフォルトの名無しさん2015/02/19(木) 00:48:24.91ID:PTIPHmhs
>>680
自己レス
Renderイベントのオーバーライドでセッションに突っ込めた

こういう処理はMVCの方が簡単だな…

>>703
htmlからpdf作りたかったんだ
0711デフォルトの名無しさん2015/02/19(木) 02:46:45.39ID:ospk8Ukl
Jsonを読み込んでデータをセットしてくれるライブラリってありますか?
Jsonから戻すオブジェクトは元のクラスとは限らなくて、
共通の変数やプロパティを持っていれば使えるようにしたいんだけど。


class Hoge{
public int id {get;set;}
public string name {get;set;}
}

void SetJson(){

string json = {"id":1,"name":"test name","UselessVal":"useless"};

var obj = Json.Read(json).SetTo(new Hoge()) as Hoge;

}
0712デフォルトの名無しさん2015/02/19(木) 02:49:29.17ID:ospk8Ukl
.net 3.5まででお願いします
0713デフォルトの名無しさん2015/02/19(木) 07:01:52.68ID:s/sMO9RX
3.5SP1でJSONシリアライザーが追加されたような
0714デフォルトの名無しさん2015/02/19(木) 10:08:44.09ID:ytEOA/nj
デザインパターンって、趣味プログラマーでひとりでコード組む事前提なら覚える必要ありませんか?
それともいくつか覚えておくべきでしょうか?
0715デフォルトの名無しさん2015/02/19(木) 10:17:22.84ID:rMkNycoG
趣味なら好きにすりゃいい。俺は仕事で20年ぐらいプログラミングやってるがデザインパターンが何だかわからんwww
0716デフォルトの名無しさん2015/02/19(木) 10:22:39.12ID:ZO0MpjlW
> デザインパターンが何だかわからんwww

こういう人のほうが信頼できる
デザパタ知ったかぶるやつの多いこと多いこと
0717デフォルトの名無しさん2015/02/19(木) 10:38:44.35ID:I9xaTjpV
無知しか信用しないのかw
0718デフォルトの名無しさん2015/02/19(木) 10:50:52.81ID:1sikD8Lb
さすがになんだかわからんってのは信用できない。
プログラマたるもの一生勉強しなければならない。
07196902015/02/19(木) 11:22:51.30ID:XFJNtNQG
>>709
わざわざコードまで書いて頂いてありがとうございます
夜、家に帰ったら検証してみます
0720デフォルトの名無しさん2015/02/19(木) 12:29:17.28ID:+njrNn/A
>>714
GoFのデザインパターンは習うべきかどうか微妙
C#にはデリゲートがあるが、GoFのコードはデリゲート相当のものがない前提で作られているのでC#用に翻訳が必要になる

習うべき重要性がGoFよりも高いものはたくさんあるので
他の勉強した方がいいかもしれない
0721デフォルトの名無しさん2015/02/19(木) 12:37:22.82ID:I9xaTjpV
デザインパターンなんて気取って学んだわりにはあんまり意識して使うことがないな
気付けば知らないうちに2,3似たようなデザインは使ってるって感じ
0722デフォルトの名無しさん2015/02/19(木) 12:50:01.84ID:ytEOA/nj
たくさんの意見ありがとうございます。
いつも参考になります!
07236902015/02/19(木) 23:08:27.56ID:XFJNtNQG
>>709
フォームにDataGridViewを貼りつけて動かしてみましたが、理想的な動作です

このコードが理解出来なくて調べてみましたが、Parallel.Forやラムダ式とかVSに新しく採用された方式が使われてるんですね
プロがつくったコードって感じですね。なにをやっているかよく理解できてないですがw
Parallel.Forやラムダ式を理解するには、クリティカルセクションやデリゲートなどの基本からやり直さないとダメみたいですね
この度はありがとうございました。
0724デフォルトの名無しさん2015/02/19(木) 23:25:13.86ID:VcY9ys0a
>>723
parallelやラムダは別に無理して使う事無いよ
そのコードの意図はミュータブルなオブジェクト(Hogeクラス)を使う事でDataTable書き換えを回避出来るって所
副作用でGetChangesやRowChangedが効かなくなるので注意
0725デフォルトの名無しさん2015/02/20(金) 00:36:16.12ID:Etl3dC4W
>>724
そうでしたか。
コードがあまりにも難解だったので、なにがポイントがわかりませんでしたw
それにしてもラムダ式って難しいですね。
C#よりVBの方が慣れているのでラムダ式のコードをVBに変換したら、名前のないFunctionに
どこで宣言してるのかわからないパラメーターをつかっていたりして、初心者にはチンプンカンプンなコードになりますねw

それにしても助かりました。ありがとうございます。
0726デフォルトの名無しさん2015/02/20(金) 01:07:11.15ID:+Mjhnrp1
ラムダ式は慣れだが、VBのラムダ式は https://msdn.microsoft.com/ja-jp/library/bb531336.aspx があるのでオススメしない
0727デフォルトの名無しさん2015/02/20(金) 14:01:08.08ID:KoZ8UZGe
それCLRの仕様的に不自然なだけで、純粋に言語としてそこまでおかしな仕様ではないと思うぞ
通常の暗黙変換との一貫性を考えたらむしろ理に適ってる
0728デフォルトの名無しさん2015/02/20(金) 15:36:17.48ID:mxPSy3AK
PropertyGridにトラックバーを下記のコードで追加したのですが、DropDownで出てきたトラックバーを閉じずに
外部の変数に値を渡すにはどうしたらいいのですか?

public class TestClass{
 [Editor(typeof(SliderValueEditor), typeof(UITypeEditor))]
 public int IntegerValue{ get; set; }
}
public class SliderValueEditor : UITypeEditor
{
 public override System.Drawing.Design.UITypeEditorEditStyle GetEditStyle(System.ComponentModel.ITypeDescriptorContext context)
 {  
  return UITypeEditorEditStyle.DropDown;  
 }
 public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
 {
  IWindowsFormsEditorService editorService = null;
  if (provider != null)
  editorService = provider.GetService(typeof(IWindowsFormsEditorService)) as IWindowsFormsEditorService;
  if (editorService != null)
  {
   TrackBar trackControl = new TrackBar();
   trackControl.ValueChanged += new EventHandler(trackControl_ValueChanged);
   editorService.DropDownControl(trackControl);
   value = trackControl.Value;
  }
  return value;
 }
 private void trackControl_ValueChanged(object sender, EventArgs e)
 {
  value = trackControl.Value; // ←DropDownで出てくるトラックバーを閉じずに、外部変数に値を渡したい
 }
}
0729デフォルトの名無しさん2015/02/20(金) 18:56:57.92ID:eIai9tSN
>>726
C#は値型はNGだっけ?
0730デフォルトの名無しさん2015/02/20(金) 20:44:47.98ID:KoZ8UZGe
>>729
値型の場合デリゲートシグニチャの共変反変はNGだけど、>>726はそういうことじゃなくて
Int32→Int64のような継承関係にない型の間の変換の話
きっとコンパイラが引数を変換するだけのメソッドを生成してラップしてるんだろう
0731デフォルトの名無しさん2015/02/20(金) 21:20:17.47ID:+Mjhnrp1
>>727
SubとFunction間違えてもコンパイル通るのが怖い
マジで
0732デフォルトの名無しさん2015/02/20(金) 22:10:44.26ID:DIxqXptn
ヤフオクの検索をC#で作るにはどうしたらいいですか
ぐぐってもC#のバージョンやヤフオクのバージョンとか情報が古くてとっつきにくい
0733デフォルトの名無しさん2015/02/20(金) 22:21:36.39ID:UfbH1iWM
http://developer.yahoo.co.jp/webapi/auctions/auction/v2/search.html
これを読む限り

HTTP GETでクエリーパラメーター付きのリクエストが送信できる
XMLを処理できる

の2つの技術が必要だ
どうにかして覚えろ
…覚えるってほど高尚なものでもないが
お前さんにセンスがあれば、今日中に行けるだろ
0734デフォルトの名無しさん2015/02/20(金) 22:29:38.85ID:DIxqXptn
(T_T)
0735デフォルトの名無しさん2015/02/21(土) 03:04:20.82ID:4gnlgakh
hScrollBarが1〜4まである時に
intの変数に代入された1〜4の数字で該当する番号のhScrollBarのインスタンスを取り出すには
どうすればいいですか?
0736デフォルトの名無しさん2015/02/21(土) 08:30:20.47ID:KlquOfLf
親が同じであればControls["hScrolBar" + i]でイケる
あとリフレクションでフィールドを探す手もある
でも配列フィールドを宣言して自分でhScrollBar1〜hScrollBar4を入れとけ
0737デフォルトの名無しさん2015/02/21(土) 08:36:06.02ID:qhlX4NCN
Controls["hScrolBar" + i]でいいよ
手で配列に入れたりするのは保守時のミスの元になる
0738デフォルトの名無しさん2015/02/21(土) 08:41:03.35ID:KlquOfLf
コンテナ一緒じゃないと通用しないのはバグの原因にならないんですかねえ
0739デフォルトの名無しさん2015/02/21(土) 17:28:42.05ID:KsdCaxe/
RegisterHotKeyでALT+Eをフックすると全てのアプリのメッセージを奪ってしまう
素通ししたい場合はどうすればいいの?

考えもなく
DefWndProc(ref m);
を呼んでみてもダメ

m.HWnd = GetForegroundWindow();
SendMessage(GetForegroundWindow(), (uint)m.Msg, m.WParam, m.LParam);
としてもダメみたい(´・ω・`)
0740デフォルトの名無しさん2015/02/21(土) 17:58:31.71ID:DGU3n6av
リファクタリングでコントロールの名前変更したら一発で動かなくなるし
0741デフォルトの名無しさん2015/02/22(日) 10:23:57.21ID:+Mmh1x19
LLでフックしてNextに回す、とか?
0742デフォルトの名無しさん2015/02/23(月) 08:21:03.12ID:nfv3to+V
正規表現ってstaticメソッドでやるのとreadonlyなインスタンスを作ってそれを毎回使うのってどっちが良いの?
0743デフォルトの名無しさん2015/02/23(月) 08:23:37.37ID:WKsb+YHV
処理による
0744デフォルトの名無しさん2015/02/23(月) 08:33:46.03ID:2dcX2lQG
パターンが動的に変わったりしないならとりあえずRegexのstaticメソッドだけ使っとけ
動的に変わるなら変に自分でキャッシュしたりしないでループの外で毎回newしとけ
問題があったらその都度直せ、最初から色々心配するのは時間の無駄だし殆どは逆効果だ
0745デフォルトの名無しさん2015/02/23(月) 08:51:36.15ID:B9nSE12P
いやパターンが変わらないならstaticにインスタンス確保しとけよ
意味と実際のパターン定義が切り離されて読みやすくなる効果もあるし、実行効率ももちろん上がる
0746デフォルトの名無しさん2015/02/23(月) 09:11:13.99ID:nfv3to+V
readonlyなインスタンス作るのにパターンが動的に変わるわけないじゃん……
0747デフォルトの名無しさん2015/02/23(月) 11:48:02.75ID:2dcX2lQG
Regexのstaticメソッドはコンパイル結果を内部で自動的にキャッシュしてくれるんだよ
0748デフォルトの名無しさん2015/02/23(月) 12:40:49.92ID:B9nSE12P
コンパイル結果はキャッシュされるけど現状リンクトリストだから避けた方が無難だぞ
0749デフォルトの名無しさん2015/02/23(月) 13:58:59.39ID:Pw6BfwZP
キャッシュの数も限られてるほうが問題
まあシビアな用法でなければ誤差の範囲だろうけど
0750デフォルトの名無しさん2015/02/23(月) 17:25:21.47ID:kWjYst11
RegexのコンパイルってLCG使って本当にメソッドを動的生成&JITコンパイルしてるから結構重いしメモリ食うよ
何でもかんでも事前に初期化しちゃうと起動が遅くなったりする可能性もあるし、
オブジェクトを中途半端に長時間保持するとGCのパフォーマンスに悪影響を及ぼすこともあるから、
一概にキャッシュするべきだとも言えない
ただ一つ言えるのは、遅かったら直せ、動かないプログラムには何の価値もない
0751デフォルトの名無しさん2015/02/23(月) 19:00:48.54ID:bL49Hgzs
そんなことないよ
予算さえ取れれば
0752デフォルトの名無しさん2015/02/23(月) 19:49:53.31ID:c9YCt0Ce
>>750
キャッシュとコンパイルごっちゃにしたら駄目だろう
コンパイルはRegexOptions.Compiledとか事前コンパイルとかしない限りは行われん
0753デフォルトの名無しさん2015/02/23(月) 20:28:53.30ID:nfv3to+V
https://msdn.microsoft.com/ja-jp/library/8zbs0h2f%28v=vs.110%29.aspx
なるほど

アプリケーションを実行しているときは頻繁に使い続けるようなのだからRegexOptions.Compiledを指定したほうが良さそうだ
0754デフォルトの名無しさん2015/02/23(月) 23:01:19.58ID:Dm7tBi9D
static readonly Lazy<Regex> と Compiled がベストか?
0755デフォルトの名無しさん2015/02/24(火) 06:40:44.14ID:uqCdmZ4l
ベストなんか無い
使用頻度が低ければコンパイルなんかしない方がいい
コーディング時点でそれがよくわからないなら、
パフォーマンスへのインパクトが少ない方(非コンパイル)をとりあえず選んでおくというのも一つの考え方
0756デフォルトの名無しさん2015/02/24(火) 07:41:37.66ID:pSXif3Rr
馬鹿は一つしか記憶できないから唯一解を求める
0757デフォルトの名無しさん2015/02/24(火) 07:51:11.97ID:uqCdmZ4l
「頻繁に」というのも人間とコンピュータじゃ全く違うよ
ここで言ってるのはコンピュータから見た頻繁(タイトなループや秒間数百リクエストを捌くなど)
スタンドアロンなアプリで人間がボタン押すタイミングなんて、コンピュータから見りゃ数百年に一度のレアイベントだ
0758デフォルトの名無しさん2015/02/24(火) 21:49:18.98ID:zMK0GxAM
ライブラリに突っ込む場合はどっちなんだよ
0759デフォルトの名無しさん2015/02/25(水) 19:23:32.75ID:plZjtN54
WPFのdispatcherTimer2つをそれぞれ非同期に実行することはできますか?
具体的には以下のようなコードでタイマーそれぞれを動かしたいのですが、
dispatcherTimer2が動くとdispatcherTimerが停止してしまいます。

private DispatcherTimer dispatcherTimer;
private DispatcherTimer dispatcherTimer2;
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
dispatcherTimer = new DispatcherTimer(DispatcherPriority.Send);
dispatcherTimer.Interval = new TimeSpan(0, 0, 2);
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Start();
dispatcherTimer2 = new DispatcherTimer(DispatcherPriority.Normal);
dispatcherTimer2.Interval = new TimeSpan(0, 0, 5);
dispatcherTimer2.Tick += new EventHandler(dispatcherTimer2_Tick);
dispatcherTimer2.Start();
}
07607592015/02/25(水) 19:25:57.20ID:plZjtN54
void dispatcherTimer_Tick(object sender, EventArgs e)
{
dispatcherTimer.Stop();

Label1.Content = DateTime.Now.ToString("HH:mm:ss");
DoEvents();

while (true)
{
DoEvents();
System.Threading.Thread.Sleep(1000);
Label1.Content = DateTime.Now.ToString("HH:mm:ss");
DoEvents();
}
}

void dispatcherTimer2_Tick(object sender, EventArgs e)
{
dispatcherTimer2.Stop();
Label2.Content = DateTime.Now.ToString("HH:mm:ss");

DateTime timeOut = DateTime.Now.AddSeconds(180); //3分
while (true)
{
if (DateTime.Now > timeOut)
{
return;
}
}
}
0761デフォルトの名無しさん2015/02/25(水) 19:51:13.60ID:WM1X1jmO
自分でスレッド走らせてDispatcher.Run()呼べば出来なくもない
でもそんなことをするよりThreading.Timerを使うとかUIスレッドを占有しないような処理を書いた方が良いと思うぞ
0762デフォルトの名無しさん2015/02/25(水) 19:58:51.43ID:x5ByeytW
なんだこの残念なコード
dispatcherTimer2に至ってはもう一回3分のタイマ回せばいいだけじゃん
0763デフォルトの名無しさん2015/02/26(木) 01:59:40.63ID:FbPw2k+6
System.ArrayはIListを実装しているのに
int[] a = new[] { 1, 2, 3 };
でa.add(4)とできないのはなぜですか?
0764デフォルトの名無しさん2015/02/26(木) 03:36:52.74ID:PXLMJNGg
>>763
intarfeceの「明示的な実装」で実装しているはず。この場合、interface型に代入されないと、そのメンバが呼べない
Array a = null;
IList b = a;
b.Add(null); コンパイルは通る。実行時にはもちろんエラー
// a.Add(null); コンパイルエラー
0765デフォルトの名無しさん2015/02/26(木) 06:38:34.64ID:0igy2WbD
IListはIsReadOnlyとIsFixedSizeがfalseでないとAdd出来ないって仕様
配列は固定長
07667592015/02/26(木) 11:08:44.02ID:GZBg/B5A
>>762
アホだ俺。それで解決できそうです。有難うございました。
0767デフォルトの名無しさん2015/02/26(木) 17:37:08.29ID:K3mItyPC
マネージドDLLのプラットフォームが32ビットとか64ビットとか何に
なっているかを確認したいのですが、どのような方法があるでしょうか。
0768デフォルトの名無しさん2015/02/26(木) 17:44:07.02ID:FhL1ilmM
ildasmでMANIFESTの最後見るとか
0769デフォルトの名無しさん2015/02/26(木) 17:46:52.08ID:PT7k++54
ぐぐったらいくつか出るだろ
ttp://www.freeshow.net.cn/ja/questions/9d0066352ddfea549efe895cda71abf7eb0c95dc03fa296c4874b08f50845bff/
0770デフォルトの名無しさん2015/02/26(木) 19:03:03.13ID:MpeHe+g/
別スレッドで作成したフォームをフリーズさせないためにはどのように書けばいいのでしょうか。
下のプログラムは相当省略していますが、ラムダ式で書いた部分は実際には別モジュールにある大きな処理だとします。
このようなプログラムだと呼び出し元のフォームは固まらないのですが、form2が固まってしまいます。
form2を呼び出し元フォームのフィールドとしてnewし、form2.Show(); を非同期実行前にすれば固まらないのですが、
フォームの作成まで含めて別モジュールとして分離したいのです。
そもそも別スレッドでフォームを作ろうとすべきでないのでしょうか。よろしくお願いします。

private async void button1_Click(object sender, EventArgs e)
{
  await Task.Run(() =>
    {
      Form2 form2 = new Form2();
      form2.Show();
      for (; ; )
      {
        // 時間のかかる処理(省略)
        if (form2.IsDisposed) return;
      }
    });
}
0771デフォルトの名無しさん2015/02/26(木) 19:11:16.35ID:FhL1ilmM
> そもそも別スレッドでフォームを作ろうとすべきでないのでしょうか
基本はコレ。モーダル表示の関係で分けなきゃなんないこともあるけど。
その時間の掛かる処理だけ別スレッドにすればいい。

Form2 form2 = new Form2();
form2.Show();
await Task.Run(() => {
&nbsp; &nbsp; ...
});
form2.Close(); // とか
0772デフォルトの名無しさん2015/02/26(木) 19:12:50.14ID:tmCmJ/Fk
そもそも別スレッドでフォーム作るなが正解
どのようにも書けませんね

invokeを呼べるようにデリゲートでも渡せば別
0773デフォルトの名無しさん2015/02/26(木) 19:23:08.81ID:MpeHe+g/
>>771-772
やはりそうでしたか。ありがとうございました。
0774デフォルトの名無しさん2015/02/26(木) 20:55:12.37ID:lQSHYPPi
環境
VS2012
.NET4.5
C#

質問
オブジェクトが構造体(struct)であるかどうかのチェックをしたいんですが、方法が分かりません。
(myObject is Int32)
みたいなイメージでやれるかと思ったんですが…
方法があれば先生教えてください。
0775デフォルトの名無しさん2015/02/26(木) 21:00:54.81ID:0igy2WbD
myObject.GetType().IsValueType
0776デフォルトの名無しさん2015/02/26(木) 21:02:19.27ID:0igy2WbD
あとNullable<T>はボックス化するとnullになるからね
0777デフォルトの名無しさん2015/02/27(金) 00:03:58.63ID:yxodif9x
>>773
>フォームの作成まで含めて別モジュールとして分離したい
のなら、

void なんとかかんとか()
{
   Form2 form2 = new Form2();
   form2.Show();
   await Task.Run(() =>
   {
      for (; ; )
      {
        // 時間のかかる処理(省略)
        if (form2.IsDisposed) return;
      }
   });
}

ではダメだったのか
0778デフォルトの名無しさん2015/02/27(金) 00:41:32.64ID:kb0qHz5w
任意の座標を記録したいのですが、
System.Windows.Forms.Cursor.Position
で座標取得は出来ることが分かりましたが、例えばエンターキーを押した時点での座標を記録するにはどのように記述すればよいのでしょうか
0779デフォルトの名無しさん2015/02/27(金) 01:10:52.69ID:B5Awq/h6
private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) {
if (e.KeyCode == Keys.Enter) {
ほにゃらら
}
}

でとれまいか?
0780デフォルトの名無しさん2015/02/27(金) 02:10:51.51ID:kb0qHz5w
>>779
ありがとうございます。
朝方チャレンジしてみます!
07817702015/02/27(金) 02:43:51.65ID:pZeyxrlU
>>777
ありがとうございます。
>>770では省略しているのですが、awaitによる実行待ち後に
呼び出し元フォームを色々と変更するコードがあります。
なので別モジュール内のメソッドにawaitを置いてしまうと、
実行待ち中に呼び出し元に戻ってそのコードが実行されてしまいます。
何かうまいやり方があるんでしょうか…。
0782デフォルトの名無しさん2015/02/27(金) 05:02:28.94ID:Q1ExCnFg
>>781
そらーそっちでawaitしたら制御戻るってか、そのTaskを返して元でawaitすれば良いんだよ
ちなみにTaskはRunじゃなくStartNewはContinueWithならタスクスケジューラを指定できるので
TaskScheduler.FromCurrentSynchronizationContext()しといた物を渡せば元スレッドで動く…が
進捗報告なんかをするならProgress<T>.IProgress<T>を作って渡してReportさせる
07837702015/02/27(金) 05:54:20.12ID:RqxmJytD
>>782
>そらーそっちでawaitしたら制御戻るってか、そのTaskを返して元でawaitすれば良いんだよ
これで出来ました!ありがとうございました。
0784デフォルトの名無しさん2015/02/27(金) 11:12:56.28ID:kb0qHz5w
>>779
ありがとうございます。出来ました!
出来なかった主な理由としては
イベントハンドラが関連付けされていなかった事が原因でした。
0785デフォルトの名無しさん2015/02/27(金) 22:10:45.06ID:FVUBPcvN
VC++ C++/cli についての質問です。
TextBoxを継承したオリジナルクラス内で、
オーバーライドしようとするとエラーとなります。
原因と解決策を教えて下さい。

■構文
public ref class MyTextBox : TextBox{

void OnPaint(PaintEventArgs^ e) override{
}
};

■エラー内容
error C3252: 'MyTextBox::OnPaint' : マネージ 型で、仮想メソッドのアクセシビリティを制限することはできません

■備考
void OnPaint(PaintEventArgs e) override
とするとコンパイルは通るのですが、
どうしても PaintEventArgs^ 型の変数が必要です。
PaintEventArgs型をPaintEventArgs^ 型に変換できる手段があれば、
それでも良いので教えて下さい。
0786デフォルトの名無しさん2015/02/27(金) 22:39:04.88ID:tTWzpOSA
>>785
ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11142512116
0787デフォルトの名無しさん2015/02/27(金) 23:00:20.33ID:gIkiRnID
C#の基礎もできてないのにC++/CLIを使おうとすること自体間違い
0788デフォルトの名無しさん2015/02/27(金) 23:11:50.02ID:v/A3JJUH
C++/CLIはC#の補助に使うものであり、.NETが使える便利なC++では断じてありません
0789デフォルトの名無しさん2015/02/27(金) 23:35:14.06ID:0rXS1k1W
混在アセンブリが作れる便利なC++ではある。
0790デフォルトの名無しさん2015/02/27(金) 23:53:27.87ID:c9s4YfIW
C++でプラグイン作るのに
ダイアログ作るのにWinForms使ったりするからC++/CLI重宝してるわ
0791デフォルトの名無しさん2015/02/28(土) 00:39:35.88ID:E51084cW
高速化の時しか使わないかなぁ
レガシィライブラリはC#でも割と簡単にラップ出来るしCPPCLI使うほどでもない
0792デフォルトの名無しさん2015/02/28(土) 06:54:12.13ID:9HAbebkh
>>785
ですが、回答を提示出来る頭のキレる方はいらっしゃいませんか?
書き込みをみてると大分詳しい方が多いとお見受けするので・・・
よろしくお願いします。
0793デフォルトの名無しさん2015/02/28(土) 07:11:16.32ID:etIffAlK
>>792
おもいっきり回答でてんじゃん
おまえほど出来ない頭のキレない奴も珍しいな
0794デフォルトの名無しさん2015/02/28(土) 07:22:05.68ID:0dyfDzeo
サイコパスっぽいな
0795デフォルトの名無しさん2015/02/28(土) 07:26:50.61ID:BgScRhfi
C++/CLIを使う資格のある人(C#とC++が両方使える人)かつ正常な読解能力があるなら
そもそもエラーメッセージ見た時点で分かるわな
0796デフォルトの名無しさん2015/02/28(土) 11:07:30.76ID:hc+4Wmht
なぜ即出てきた回答を無視するのか
0797デフォルトの名無しさん2015/02/28(土) 17:09:44.05ID:PZW2GNsC
アセンブリのロードについて聞きたいのですが、
IDEでデバッグ実行するとプロジェクトで参照設定されいるアセンブリが
すべて読み込まれるのですが、デバッグ実行すると必要なアセンブリしか
ロードされません。
当たり前の挙動なのですが、特定のアセンブリを強制的にロードすることは
できないのでしょうか?

現在System.Drawing.dllを読み込ませるためだけに
Color c = Color.Red;
というダミーのコードを入れています。
0798デフォルトの名無しさん2015/02/28(土) 17:11:38.07ID:PZW2GNsC
誤記です
”デバッグなし”実行したときに特定のアセンブリを読みこむ。です
0799デフォルトの名無しさん2015/02/28(土) 17:54:04.56ID:rObtt+j2
Assembly.Loadとかすればそりゃ強制ロードはできるけど
0800デフォルトの名無しさん2015/02/28(土) 18:08:01.93ID:VNSN4Y6t
>>797
何のためにそんなことがしたいんだ?
0801デフォルトの名無しさん2015/02/28(土) 18:31:59.55ID:PZW2GNsC
>>800
RazorEngineというWeb向けテンプレートライブラリを通常のアプリで使用しています。
テンプレート(.cshtml)内で外部ライブラリを呼んだ時自動でアセンブリをロードして
くれない。ASPのプロジェクトだったらWeb.configとかに書いておくと自動で読んでく
れるらしい。
こちらでもいろいろ調べましたが、一番お手軽なのは>>799の方法でした。

ライブラリの膨大なダンプをHTMLで出力しようとしたときにぶち当たった問題でした。
0802デフォルトの名無しさん2015/03/01(日) 20:13:46.42ID:ZPPZmGUp
設定ファイルについてなのですが、Settings.settingsはexeからかけ離れた場所に作られるし
App.configはxmlを手動で操作しないといけないし
iniみたいにexeと同じ場所に作れる、数行で読み書き可能 なフォーマットというのは.netには無いのでしょうか

それか、settings.settingの保存場所を変更する事は出来ますでしょうか。
0803デフォルトの名無しさん2015/03/01(日) 20:18:26.49ID:hggaaQzI
XmlSerializer
0804デフォルトの名無しさん2015/03/01(日) 20:28:40.28ID:KW+So7wa
アセンブリのある場所が書き込み可能とは限らないし、ユーザースコープならユーザー別に場所を分けないといけないからuser.configはあそこになってるわけだけど
0805デフォルトの名無しさん2015/03/01(日) 20:28:58.67ID:PpU9Sdop
尻洗いザー
0806デフォルトの名無しさん2015/03/01(日) 21:40:43.46ID:v8QY628v
>>802
app.configにカスタムセクション作れば良いんじゃないの?
専用クラスに属性付きのプロパティ作るだけで簡単に作れる。
0807デフォルトの名無しさん2015/03/01(日) 23:51:28.67ID:Ltdi5/fJ
>>802
Settings.settingsの保存場所はSettingsProvider自作すれば指定できるよ
0808デフォルトの名無しさん2015/03/03(火) 09:37:15.64ID:2xjYWNh7
NGenってリスク無いの?
NGenした事が原因でバグが増える事は無いのかな
0809デフォルトの名無しさん2015/03/03(火) 11:15:09.39ID:CN+APPLy
こっそりスタートアップに入れるほうがいいよ
0810デフォルトの名無しさん2015/03/03(火) 13:16:43.47ID:bwxKcpFi
for (int i = 0; i < 9; i++) Console.Write("{0}", new Random(i + Environment.TickCount).Next(4).ToString());

↑これだと乱数が偏ってたり何か規則的なんですが

static class RandomManager
{
static Random rnd = new Random();

static public int Next(int num)
{
return rnd.Next(num);
}
}
for (int i = 0; i < 9; i++) Console.Write("{0}", RandomManager.Next(4).ToString());

↑これから呼び出すとあまり偏らず規則的にもならないのですが、どういう原理ですか?
0811デフォルトの名無しさん2015/03/03(火) 14:33:53.01ID:YZGlqDfB
シードがほぼ同じなるから
0812デフォルトの名無しさん2015/03/03(火) 17:59:53.28ID:TZKBUrl9
CILとCLIを咄嗟の状況でも間違えずに使える覚え方はありますか?
0813デフォルトの名無しさん2015/03/03(火) 20:00:40.21ID:pTJ1WATW
CILはILかMSILって呼ぶ
0814デフォルトの名無しさん2015/03/04(水) 01:36:10.07ID:uN9+QQQI
WEBサーバへアップロードするプログラムを開発しています。
はまっているので助けてください。

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(path_directory);
request.Credentials = new NetworkCredential(id, pass);
request.Method = WebRequestMethods.Ftp.ListDirectory;
StreamReader streamReader = new StreamReader(request.GetResponse().GetResponseStream()); ← エラー


さくらインターネット上のスタンダードサーバには
以下で普通にアクセス出来ました。
0815デフォルトの名無しさん2015/03/04(水) 01:38:14.50ID:uN9+QQQI
2chに書き込めません。
0816デフォルトの名無しさん2015/03/04(水) 01:43:40.38ID:avjBAkMW
リクエスト送信してなくね
0817デフォルトの名無しさん2015/03/04(水) 09:56:31.99ID:aF7DEoZL
XMLの呼び出しや書き込みをしたいんだけど、いろんなリファレンス試してっるけど全然動かない。
助けて神様。
0818デフォルトの名無しさん2015/03/04(水) 10:32:38.63ID:CfP3NAwM
そんな簡単なことができないなんてありえない
0819デフォルトの名無しさん2015/03/04(水) 10:33:20.18ID:kBmCpwoJ
xmlの呼び出し…?
どのリファレンス見てどういうXMLにどういうコード書いてどういう結果になったのか
を書けば答える人もいるんじゃね
コードとかは>>1にあるとこにね
0820デフォルトの名無しさん2015/03/04(水) 16:21:58.29ID:hq/TgDst
いまちょうどXMLの扱いについてききにきたんだけどすごいシンクロニシティを感じる

ソースデータの都合上どうしてもルートノードが一つではない可能性がある大量のXMLモドキを扱う必要が出てきたんだけど
探してみてもパースするときにルートノードを付け足したいケースの対応例が見当たらなくて困っている
XPathならルートノードがない場合にも対応できるとかSAXのXmlReaderならいけるんじゃない?みたいな記事は見つけたけど
SqlCommand.ExecuteXmlReader()経由だったり解答例がなかったりで試行した範囲では「ルートノードが複数あります」エラーになった

そもそもルートノードを設けていない時点でXMLと呼べるのかが分からないが無理やり読ませる方法って
事前にStreamで開いてルートノードの2行差し込む→XMLパース→処理→ファイルに保存→2行抜く しかないかな?
やたら種類多いけどこのパーサー使えば解決するじゃんとかそういうときはこうするのが普通みたいなのがあったら教えてほしい
0821デフォルトの名無しさん2015/03/04(水) 16:39:34.92ID:kBmCpwoJ
XmlReaderSettings::ConformanceLevel=FragmentのXmlReader.CreateでXmlReader作って、
最初のエレメントまでReadして、
順次XElement.ReadFromしていく
0822デフォルトの名無しさん2015/03/04(水) 16:41:57.24ID:CfP3NAwM
>>820
XMLじゃないものを事前にXMLにするしかないからそれしかないだろ
0823デフォルトの名無しさん2015/03/04(水) 16:49:56.55ID:hq/TgDst
>>821
即レス感謝! 速攻ぐぐってこんなかんじのコードで試してみたら通った

http://ideone.com/IPZ7tA

まさにこういうプロパティを探していたんだありがとう
0824デフォルトの名無しさん2015/03/04(水) 17:20:06.62ID:CfP3NAwM
そんなやりかたよくないと思う
0825デフォルトの名無しさん2015/03/04(水) 22:15:41.79ID:STcHcs0v
quartz.dllを参照の追加したいのですが、
「ファイルがアクセス可能で、有効なアセンブリまたはcomコンポーネントであることを確認してください」
というエラーで追加できません。
当方で試みた手段といたしましては、
「quartz.dll」をexeと同フォルダ内に配置、
「quartz.dll」をプロジェクトファイルと同フォルダ内に配置等を試してみましたが上記のエラーにより追加できませんでした。

開発環境は下記の通りです。
Windows7 64bit
Visual Studio Express 2013
解決法をご存じの方がいましたら、ご教示宜しくお願い致します。
0826デフォルトの名無しさん2015/03/05(木) 00:12:27.49ID:+Cm7fPEL
>>825
それってRegSvrで登録→PIA参照
ってタイプのDLLじゃなかったっけ
0827デフォルトの名無しさん2015/03/05(木) 13:29:47.82ID:GnTt3vv4
フォルダ参照ダイアログを表示して選択したフォルダにテキストファイルを作成するという動作を、
プログレスバーを表示しながらバックグラウンドでやりたいのですが

フォルダ参照ダイアログを出す動作を別スレッドで行うとエラーが出るので
フォルダ参照ダイアログを出したあと以降を別スレッドで行うしかなく、そうすると
フォルダ参照ダイアログで選択したフォルダのパスが取得できないため、どうしたものかと思っています。
こういう場合は普通どのように処理するのでしょうか
http://ideone.com/dlnlfV
0828デフォルトの名無しさん2015/03/05(木) 13:32:09.81ID:il65Aouj
>フォルダ参照ダイアログで選択したフォルダのパスが取得できない
どんなへっぽこPGだよw
0829デフォルトの名無しさん2015/03/05(木) 13:42:48.35ID:QTBcs+B4
カレントディレクトリに頼らないこと
0830デフォルトの名無しさん2015/03/05(木) 13:42:53.12ID:GnTt3vv4
>>828
ド素人日曜プログラマーには難しいです。
バックグラウンドでやる場合にはどうすればいいですか?
0831デフォルトの名無しさん2015/03/05(木) 14:44:26.15ID:y6orVuiR
>>830
非同期もいろいろ選択肢がある。下の記事の第1回を参照。
http://www.atmarkit.co.jp/ait/subtop/features/dotnet/app/masterasync_index.html

BackgroundWorkerを使うなら、取得したパスをフィールドがプロパティーに入れておくのが一番簡単。
それが泥臭いと思うならラムダ式を使う。

っていうか、こんなの当たり前じゃん。
こんな当たり前のことを人に教えられないと分からない人が非同期なんか手を出しちゃダメw
0832デフォルトの名無しさん2015/03/05(木) 14:49:23.05ID:RwLZZ47Q
>>830
日曜なら.NET4以降でも良いんじゃろ?TAPで書くのが定石ではないか
ttp://msdn.microsoft.com/ja-jp/library/jj155759.aspx
0833デフォルトの名無しさん2015/03/05(木) 14:55:57.63ID:GnTt3vv4
>>831-832
ありがとうございます。
よく読んでやってみます。
0834デフォルトの名無しさん2015/03/05(木) 19:34:21.61ID:fX1UTeLz
STAならダイアログ使えるはず
0835デフォルトの名無しさん2015/03/05(木) 21:43:43.16ID:2nY2bUQE
>>830
IProgress
CancellationTokenSource
ttp://devlights.hatenablog.com/entry/20120829/p1
0836デフォルトの名無しさん2015/03/07(土) 04:46:25.81ID:w1n2sCM/
>>831
書いてある内容は高度すぎてよく理解できませんでしたが、

>取得したパスをフィールドがプロパティーに入れておくのが一番簡単。
これで無事上手く行きました。どうもありがとうございました。
0837デフォルトの名無しさん2015/03/07(土) 11:06:24.01ID:3rnmskRG
改行記号を可視化する方法ってありますか?
テキストボックスって改行記号が見えないじゃないですか。
単に可視化するのなら、
textbox.Text.Replace("\r\n", "[改行]\r\n");
とかを考えたんだけど、これって、[改行]が文字だから、編集できちゃうじゃないですか。
アドバイスお願いします。
0838デフォルトの名無しさん2015/03/07(土) 11:52:08.87ID:BhIOrMc0
>837
そういう方法はあるかと聞かれれば、ある。
それを実現する処理を書けばいい
0839デフォルトの名無しさん2015/03/07(土) 11:58:57.90ID:9B0L6ggA
魔法の言葉 オーナードロー
0840デフォルトの名無しさん2015/03/07(土) 12:06:58.24ID:bKz+HhLo
全部自前で描画
一度は作ってみたいテキストエディタ
0841デフォルトの名無しさん2015/03/07(土) 12:14:51.75ID:2KiYbMBo
Fontをダイナミックに魔改造すればいいよ
0842デフォルトの名無しさん2015/03/07(土) 14:49:51.25ID:3rnmskRG
>>838さん
出し惜しみせず。

>>839さん
ListBoxだとDrawModeに、OwnerDrawFixedを設定できますが、TextBoxには見当たらないのですけど。

>>840さん
全部自前はちょっとすぐには無理。
作ってはみたいです。

>>841さん
どうやったらFontをダイナミックに魔改造できます?
0843デフォルトの名無しさん2015/03/07(土) 16:06:13.80ID:vMIWPrbn
俺も昔テキストエディタ作ろうとしたけど、DrawText してもずれるんだよ
その時は Win32 まで行かないとダメっぽかった。他に方法があるなら俺も知りたい
0844デフォルトの名無しさん2015/03/07(土) 16:32:22.62ID:YrpSI1fn
テキストボックス捨ててAzukiとか使えばいいんじゃないかな
改行可視化されてるか知らないけど
0845デフォルトの名無しさん2015/03/07(土) 17:56:15.13ID:ZMR62/B1
>>837
TextChangedイベントで、行末の[改行]が編集されたら強制的にもどすとか!
0846デフォルトの名無しさん2015/03/07(土) 19:33:20.30ID:3rnmskRG
thanks.
Azukiでできそう。
0847デフォルトの名無しさん2015/03/10(火) 11:24:55.81ID:jbppfSR2
フォームのタイトルバーに表示されるアイコンを
一括設定する方法はどうすれば良いですか?
0848デフォルトの名無しさん2015/03/10(火) 18:16:33.75ID:7j31Np5G
一括設定って何だよw
それで他人に伝わると思う神経が分からん。
0849デフォルトの名無しさん2015/03/11(水) 09:50:56.10ID:Dg3ppTi7
>>847
ここ参考にするのが良いんじゃない?
結局は別クラスに用意したのを頭で読み込む方法が良いと思う。
ttps://social.msdn.microsoft.com/Forums/en-US/1407da1f-75ae-45c1-b66c-cfe095277245?forum=vbgeneralja
0850デフォルトの名無しさん2015/03/11(水) 14:12:11.68ID:IOD5HMeY
class FormWithIcon : Form
{
 public FormWithIcon
 {
  this.Icon = new Icon( path );
 }
}

とか?
0851デフォルトの名無しさん2015/03/11(水) 15:00:51.57ID:m/g13ZdC
アプリスコープのIconリソースで
0852デフォルトの名無しさん2015/03/11(水) 18:20:50.70ID:RyKtCrlD
ログインが必要な画面の派生元フォームのLoadイベントでログイン画面をShowDialogし、
ログイン画面が閉じてからログインが必要な画面を表示してたのですが、
ログインが必要な画面のWindowStateをデザインでMaximizedにしたら、
ログイン画面と同時にログインが必要な画面が裏で表示されるようになりました。
これを止めてログイン画面が閉じてからログインが必要な画面を表示させるにはどうしたらよいでしょうか?

ログインが必要な画面のLoadイベントでログイン画面表示の前にVisibleをfalseにしたら一瞬見えてから消えます。
コンストラクタでVisibleをfalseにしたら無視されます。
MaximizedをデザインでなくShownイベントにしたら一瞬広がる前の画面が見えてしまいます。
0853デフォルトの名無しさん2015/03/11(水) 18:36:52.25ID:5qLiD8bb
>>852
ただちには表示したくない画面のLoadでログイン画面を表示する、
なんてお馬鹿な設計を止めるだけ。
08548522015/03/11(水) 18:49:20.59ID:RyKtCrlD
えっと、ログイン画面後にMaximizedにしたら普通に解決しましたw
最大化要件を持つ派生元フォームと、ログイン要件を持つ派生元フォームが別々だったので勘違いがありました。
両方のLoadイベントをOnLoadでoverrideしないと止められませんわね。
止める側だけOnLoadにして駄目かと早合点しました。
0855デフォルトの名無しさん2015/03/11(水) 19:05:58.37ID:RyKtCrlD
しかし、「表示される直前」と言ってるイベントより前に表示されてしまうのはC#のバグと言わざるを得ませんわね

https://msdn.microsoft.com/ja-jp/library/system.windows.forms.form.load(v=vs.110).aspx
> Form.Load イベント
> フォームが初めて表示される直前に発生します。
0856デフォルトの名無しさん2015/03/11(水) 19:06:28.31ID:BVBG/O4r
すみません、ブラックジャックゲームのソースコードを教えてください。
Visual C#で作ってコマンドプロンプトで開きます。

カードの画像などはいりません。
1枚目:X
2枚目:X
合計:X
もう1枚引きますか?
みたいなのを
自分 VS CPUでやりたいです。

お願いいたします。
0857デフォルトの名無しさん2015/03/11(水) 19:13:36.60ID:FMG3sxij
宿題か
0858デフォルトの名無しさん2015/03/11(水) 19:15:33.18ID:BVBG/O4r
もう卒業の時期なので、宿題ではないけど
教えていただきたいです。
0859デフォルトの名無しさん2015/03/11(水) 19:33:26.77ID:DShzvXQQ
そういうのはヤフー知恵袋のほうがいいよ マジレス
0860デフォルトの名無しさん2015/03/11(水) 19:35:30.25ID:k634rWxZ
>>852
普通はMainメソッドに書くと思う
0861デフォルトの名無しさん2015/03/11(水) 20:10:08.30ID:RyKtCrlD
>>860
トップ画面はログイン不要で、遷移先によってログインの要不要がある要件なので
よくよく考えると汎用機のイメージをPCに持ち込みたい古臭い客の要求なので、変な要件ですわね
自分で設計したらそもそもWindowsログインを拾うからログイン画面自体ないですな
それが一番セキュリティレベルも高い上に利便性も高いはず
0862デフォルトの名無しさん2015/03/11(水) 20:27:33.87ID:5EkQ77dJ
XPのPCにAdminアカウント一つという旧時代構成で動かすんだよ
0863デフォルトの名無しさん2015/03/11(水) 20:29:35.53ID:8pzVHB9L
>>856
player1.card=11
if もう一度引く=true then blackjack()
0864デフォルトの名無しさん2015/03/11(水) 20:42:05.34ID:BVBG/O4r
>>863
大変かと思いますけど。
全部教えていただきたいです・・・
無理を言ってるのは承知なのですが
0865デフォルトの名無しさん2015/03/11(水) 20:51:37.02ID:HrwqSKUj
Console.WriteLine("1枚目:X");
Console.WriteLine("2枚目:X");
Console.WriteLine("合計:X");
Console.WriteLine("もう1枚引きますか?");
0866デフォルトの名無しさん2015/03/11(水) 20:55:15.02ID:BVBG/O4r
そこじゃなくて、
変数っ宣言して、ランダムに4*13種類から選んで
11以上は10に変換して、1は1か11を選べるようにして。
自分とCPUを並行して処理して
勝敗を表示してください。
お願いいたします。
0867デフォルトの名無しさん2015/03/11(水) 21:18:12.13ID:AKrP83u8
追試験代わりの課題かな。
全部やれとか、教えるって範疇じゃないだろ。
0868デフォルトの名無しさん2015/03/11(水) 21:27:41.38ID:3Oe7COr6
ちょっと前にシャッフルで盛り上がってた暇人どもの出番だぞ
0869デフォルトの名無しさん2015/03/11(水) 21:47:16.16ID:HrwqSKUj
dealer.DealTo(player)
0870デフォルトの名無しさん2015/03/11(水) 21:53:14.24ID:AABpW1kb
金くれたら実装してやるよ
0871デフォルトの名無しさん2015/03/11(水) 21:54:45.63ID:BVBG/O4r
できないならいいっすわ
0872デフォルトの名無しさん2015/03/11(水) 22:18:07.16ID:aqPbj8yy
>>855
>>853の言う通りで無茶したのが原因
0873デフォルトの名無しさん2015/03/11(水) 23:07:45.44ID:RyKtCrlD
>>872
シングルスレッドに「無茶」とか「ただちに」なんて概念はありませんw
「直前」は「直前」、モーダルはモーダルです

言語仕様がやや怪しげではあるけど…
トップ画面で閉じると他の画面のFormClosedイベントが起きなかったり
これはシングルスレッドの怪しさとは別で、そういう仕様を意図的に選定したんでしょうが
見た目のオブジェクトの動き通りにイベントが起きないと、
オブジェクト指向の神様か、イベントドリヴンの神様か、いずれかの神様に怒られますよ
0874デフォルトの名無しさん2015/03/11(水) 23:23:21.69ID:/LrsYO6N
絵に描いたようなダメグラマだなこりゃ
0875デフォルトの名無しさん2015/03/12(木) 00:30:34.77ID:pW4YjKPd
ログインが必要なフォームのLoadイベントでログイン画面を表示する仕様だと
ログイン画面でキャンセルしたらLoadイベントでCloseすることになると思うんだけど、
LoadイベントでCloseって良くないんじゃなかったっけ?
0876デフォルトの名無しさん2015/03/12(木) 00:34:02.41ID:e/2Aq7q5
問題ないよ
0877デフォルトの名無しさん2015/03/12(木) 09:11:21.75ID:e/jReKQ7
>>873
確かに最大化にするとそのような動作になりますね。
Loadイベントを先に登録しても同じだから

ただし言語仕様とWinFormの仕様を混同してはいけません。
0878デフォルトの名無しさん2015/03/12(木) 14:10:03.93ID:RVCCounr
formのloadやモーダルがイメージ通りの動作にならないことはよくある
とりあえずmsdn読んで、それでもおかしかったら、msdnに書いてない隠し仕様だ
0879デフォルトの名無しさん2015/03/12(木) 15:04:17.35ID:Uro3nBcY
それほど問題が多いとも思わないが、MDIと.NET 2,0で追加された一部のコントロールには
修正されずに放置されてるバグ多いね。
0880デフォルトの名無しさん2015/03/12(木) 17:55:26.42ID:HYgstV6E
そもそも、ShowDialogって新しいスレッド作るんじゃないっけ?
親とメッセージループ独立してるよね
0881デフォルトの名無しさん2015/03/12(木) 17:59:34.98ID:3wAB729F
片手間に作っていたスパゲッティが最近腐りかけてる気がしたので,
データアクセスのコードを分離してDAOにでも纏めようかなとか考えています.

一般的に,DAOは静的なクラスとして定義すべきでしょうか?
あるいは,シングルトンパターンなんかを用いるべきでしょうか?
ユーティリティクラスのようにも捉えられると思うので,利用するたびにインスタンス化というのは不適切かと考えました.

ご意見お願いします.
0882デフォルトの名無しさん2015/03/12(木) 18:30:14.39ID:Xd09GMRF
>>880
おいおい
0883デフォルトの名無しさん2015/03/12(木) 18:41:53.52ID:FoeSZtqz
>>881
不適切?なの?
使う度にインスタンス作れば良いじゃない
0884デフォルトの名無しさん2015/03/12(木) 19:01:52.13ID:3wAB729F
>>883
返信有難うございます.

使うたびにインスタンス化させると,外部のデータにアクセスする際,操作が競合してしまう可能性はありませんか?
それともこの可能性は,>>881で示した他の2つの手法にもあるものでしょうか?
0885デフォルトの名無しさん2015/03/12(木) 19:08:14.38ID:oEapoR9d
教えてください。
以下をやりたいです。
・ブラックジャックゲーム(VisualC# コマンドプロンプト 画像なし)
〜ルール〜
�@じぶんVS"CPU"
�AJ以上は10として計算
�Bエースは1でも11でも選択可能
�CCPUはカードの合計数が13以下のときもう1枚カードを引く
�D22以上になったら終了

〜分からないところ〜
�@トランプの配列?の方法
→今は絵柄などの設定がわからず1~13の乱数しか出せない。
�A自分がnoと判断するまでカードを引き続ける方法
→loopさせる方法がわかりません。
�B22以上で終了させる方法
→”ゲームオーバー”など表示させて強制終了させたい。

http://ideone.com/liBTuW
途中経過です。
初心者なのでなるべく簡単にゲームを作成できればと思います。

本当にわからずどうしようもありません
よろしくお願いいたします。
0886デフォルトの名無しさん2015/03/12(木) 19:24:20.70ID:X1AA5gKC
まだ宿題やってるのか。がんばったなw

絵柄なんて考えずに、もともと1〜13のって数字のカードがあるって考えて、それで作りゃいい
ループはforでもwhileでもいいだろググれ
ifでループから抜けりゃいい。ifもループから抜ける方法もぐぐれ
0887デフォルトの名無しさん2015/03/12(木) 19:28:36.50ID:oEapoR9d
すみません

4種*13枚でやるルールなんです。
0888デフォルトの名無しさん2015/03/12(木) 19:34:58.72ID:3wAB729F
>>887
シンプルに作り始めて,あとから色々付け足していけばいいのでは
0889デフォルトの名無しさん2015/03/12(木) 19:38:57.19ID:oEapoR9d
正直、手詰まりです。
死ぬほどググりましたけど
C#のやり方が出ずC++ばっかり出ます・・・
0890デフォルトの名無しさん2015/03/12(木) 19:44:18.90ID:PNn68YoI
>>889
アルゴリズムが分からないだけならC#もC++も関係ないでしょ
0891デフォルトの名無しさん2015/03/12(木) 19:49:48.06ID:oEapoR9d
visualC#にC++のソース乗せたけどダメでした。
本当にお願いします助けてください・。。
0892デフォルトの名無しさん2015/03/12(木) 19:53:12.08ID:ojOGYEUG
スタックオーバーフローにでも書けば一人ぐらいは相手してくれるかもよ
0893デフォルトの名無しさん2015/03/12(木) 20:32:11.98ID:v6QxnA6v
>>891
 ググったら一発で出てきたけど
Console Blackjack game
http://codereview.stackexchange.com/questions/60314/console-blackjack-game
0894デフォルトの名無しさん2015/03/12(木) 20:53:42.54ID:oEapoR9d
難しすぎるんです。・・
もっと単純な記述はありませんでしょうか??
0895デフォルトの名無しさん2015/03/12(木) 21:16:34.65ID:gQ+iP7K4
お前ら親切だな

>>881
俺の場合、基本的に静的メソッドにDB接続オブジェクトと必要な引数渡す形にしてる
一度きりの呼び出しがある場合は、DB接続オブジェクトを省略するオーバーロードも作っとく

逆にDB接続オブジェクトをメンバに持たせた方がメリットがある場合は、インスタンスクラスにする・・あんまり無いけど
0896デフォルトの名無しさん2015/03/12(木) 21:28:24.96ID:ojOGYEUG
…と化石のようなことを言っている人がいますが、ADO.NETでは自分で接続を使いまわす必要はないのでインスタンスメンバーにして都度Disposeするのが基本
0897デフォルトの名無しさん2015/03/12(木) 21:35:24.01ID:gQ+iP7K4
トランザクションかける時どうすんの?
呼び出し側で持っといた方が便利じゃね?

using( var context = new DbContext() ){
処理色々…
context.SaveChanges();
}
みたいにさ
0898デフォルトの名無しさん2015/03/12(木) 21:37:15.92ID:ojOGYEUG
普通インスタンスのライフサイクルがトランザクションと一致するように設計するし、TransactionScopeという手もある
0899デフォルトの名無しさん2015/03/12(木) 21:39:14.04ID:L4E7dDcl
むかーしむかしメルセンヌ・ツイスタのクラス作った時にブラックジャックをConsoleでやったな
0900デフォルトの名無しさん2015/03/12(木) 21:48:40.11ID:gQ+iP7K4
2つ以上のテーブル更新する場合にTransactionScopeに頼るんだったら、DB接続オブジェクトの引数に持たせた方がいい気がする

ユーティリティっぽい使い方するメソッドにnewするのは抵抗あるし
0901デフォルトの名無しさん2015/03/12(木) 22:15:46.02ID:ojOGYEUG
ていうかDbContextがDAOそのものだからね?
0902デフォルトの名無しさん2015/03/13(金) 00:04:31.94ID:E+pj3tLB
結局のところドメイン次第なんだよね
接続先とかが固定的なシステムならシングルトンのが簡単に作れるかもしれないし
インスタンスが複数ないと都合が悪いシステムならシングルトン辞めればいいし
どんなシステムなのかもわからないこんなふわふわした状態でどっちがいいかなんて答え出ないよ
0903デフォルトの名無しさん2015/03/13(金) 01:43:11.64ID:f6Klltto
質問です。
以下のようなインターフェースを作り、
IBase<T>を継承したクラスを作りました。

同名で型が違うプロパティなんて定義できないんだろうなと思ったのですが、
見事にやってほしい挙動になりました。

実装をみるとobject型にはpublicがついていません。
どういった仕組みになっているのでしょうか?

interface IBase object Value { get; set; }
interface IBase<T> : IBase T Value { get; set; }
0904デフォルトの名無しさん2015/03/13(金) 02:50:35.23ID:nMWoJLTD
>>894
さ、さすがに今のC#文法理解度だと、作れないことはないが無理に近い
英語でたとえると、be動詞と名詞しか知らないのに、文章を作ろうとしているようなもの
if文、while文、for文、関数自作、配列やList<>の使い方は理解しないと辛いぞ

とりあえずそれを説明したソース書いたから、参考にしてくれ
http://ideone.com/Gbe2sB
0905デフォルトの名無しさん2015/03/13(金) 02:53:44.36ID:K4MTReFL
>>903
publicじゃない方はそのインターフェイス型にキャストしないと呼び出せない
https://msdn.microsoft.com/ja-jp/library/ms173157.aspx
09069042015/03/13(金) 03:02:26.60ID:nMWoJLTD
ちなみに、自分が作ったコンソールblackjackはシンプルに作ったけど
400行弱、ifやwhileのネストは一番多いところで4重になる(ナチュラルブラックジャック判定が原因だけど…)

ちょっときついな。今の>>894の水準から学習の時間込みだと、40〜100時間はかかると思う
カードを表すstringか、構造体(クラスでもいい)のどっちかは実装しなきゃいけないのが多分山場
09079042015/03/13(金) 03:17:56.87ID:nMWoJLTD
あ、あとはvisualstudioの基本的な使い方はわかるか?
実行を任意の行で中断するブレークポイント(行の左端クリックで設置もう一回で解除)
1行ずつ続行できるステップイン/ステップオーバー/ステップアウト(F11/F10/Shift+F10)
ダブルクリックで単語単位選択
ctrl+csvzyfあたりの基本的なショートカット
右クリック > すべての参照を検索
右クリック > 定義に移動
インテリセンス
は最低限押さえておかないときっつい

(もう少しなれたら、スニペット、immidiate、名前の変更、メソッドの抽出、あたりは覚えよう・・・)
0908デフォルトの名無しさん2015/03/13(金) 03:36:36.93ID:f6Klltto
>>905
使いこなせる気がしないな
一回実装して終わりならいいけど
0909デフォルトの名無しさん2015/03/13(金) 07:18:50.07ID:vdnNbtzi
明示的実装はうっかり名前が被ってしまったメンバをなんとか区別する手段に過ぎないので、
決して難しい概念ではないし、
また決して積極的に使うものでもない
ていうか紛らわしいから一から作るときには使うな
0910デフォルトの名無しさん2015/03/13(金) 07:21:55.57ID:jwQCgfp6
>明示的実装はうっかり名前が被ってしまったメンバをなんとか区別する手段に過ぎないので

お前の頭の中ではそうなんだろうな
0911デフォルトの名無しさん2015/03/13(金) 07:30:13.74ID:psLfEP5V
>>910
https://msdn.microsoft.com/ja-jp/library/ms173157.aspx
>ただし、2 つのインターフェイス メンバーが同一の機能を実行しない場合は、これらのインターフェイスの一方または両方の実装が不適切になる可能性があります。
>そこで、インターフェイス メンバーを明示的に実装し、特定のインターフェイス経由でのみ呼び出され、そのインターフェイスに固有のクラス メンバーを作成できます。

つまり互いに預かり知らない別のインターフェースの名前が偶然衝突した場合のことを言ってるわけ
0912デフォルトの名無しさん2015/03/13(金) 12:19:38.55ID:wPhu91KM
>>880
おいおい2
0913デフォルトの名無しさん2015/03/13(金) 22:12:52.25ID:+jXVpFLk
>>911
そういうプログラミングガイドは別に否定しないけど、言語仕様に書かれている明示的実装の目的は無視ですか?
0914デフォルトの名無しさん2015/03/13(金) 22:26:56.18ID:psLfEP5V
>>913
CloseとDisposeの例だって名前の都合に過ぎないでしょ
どちらにせよ好んで使うもんじゃないよ
0915デフォルトの名無しさん2015/03/13(金) 23:11:02.38ID:E+pj3tLB
64ビットプロセスから32ビットのappDomainってロードできないの?
諦めてリモーティングしないとダメか?
0916デフォルトの名無しさん2015/03/13(金) 23:44:10.19ID:7CBEWocs
>>914
インターフェイスの意味を考えれば、本当はインターフェイスのメンバーが
同名のインスタンスメソッドにマッピングされちゃうC#やJavaの仕様ってむしろ変だと思うんだけどね。
0917デフォルトの名無しさん2015/03/14(土) 03:58:25.28ID:OniGer9m
クラス自身のインターフェースと分離できる見たいに書いてあるね
つかみんな言語仕様とかちゃんと読んでんだな
0918デフォルトの名無しさん2015/03/14(土) 10:23:46.09ID:a8MVCj2e
メニューバーやツールバーがあるソフトで、
ツールバーなどが複数行ある場合に1行にまとめたりすると、
そのスペースを埋めるように自動的に下にあるコントロールが上に上がってくるという挙動は
デザイナーで出来るのでしょうか?コーディングが必要ですか?
0919デフォルトの名無しさん2015/03/14(土) 11:02:45.98ID:MvWLt3uz
インターフェースの実装は常にアダプタパターンで行い
実装クラスとは分離してしまうのが概念的に正しい
実行効率的には良くないからしぶしぶ単一のインスタンスでインターフェースを実装しているにすぎない
本来ならば名前がかぶるなんて事は無いんだよ
0920デフォルトの名無しさん2015/03/14(土) 11:08:49.98ID:Hlel4/Br
×実行効率
⚪︎実装効率
無駄に複雑なコードになるからそうしないだけ
0921デフォルトの名無しさん2015/03/14(土) 11:25:13.07ID:XFysm57y
インターフェースを幾つも継承するよりよっぽどわかりやすいと思うが
特に今の話題は名前の衝突とか同じ処理内容のメソッドの重複とかだろ
インターフェースが別のオブジェクトに分離されていればそんな面倒でわかりにくい状況にはならない
ソースは常にクリーンに保たれる
アダプタならどのクラスをどんなインターフェースにマッピングするために存在するクラスかということがはっきりと分かるから混乱しない
継承スタイルだとクラスの概念にそぐわないこ変な名前のメソッドはなんだ?CloseとDisposeなんで2つも解放処理があるの?といったように開発者にも利用者にも混乱が生じる
0922デフォルトの名無しさん2015/03/14(土) 11:51:38.16ID:Hlel4/Br
言いたいことは分かるが、インターフェイスを実装する度にクラスを増やして
処理をただ移譲するだけの冗長なコードを垂れ流す機械的な作業をやらなきゃいけないコストは常に正当化できると思うか?
言語側のサポートがあるなら別だが、それについてはC#にはデリゲートがあるから不要ということなんだろう
0923デフォルトの名無しさん2015/03/14(土) 12:00:42.67ID:XFysm57y
>>922
IL生成すればいい
つか継承スタイルでも機械的な作業は発生するよね
0924デフォルトの名無しさん2015/03/14(土) 17:46:03.10ID:kcM576Ed
出来るだけプロパティとかクラスの状態を変更したくなくて、全てのパラメーターを引数から取るようなメソッドを作る事があるんですけど
そういうメソッドを作るときにstatic宣言する事って何かデメリットありますでしょうか
C#と言うかコードの書き方の話になってしまいますが、皆さんはどう書いているのか教えて頂けたらと思います
0925デフォルトの名無しさん2015/03/14(土) 18:03:33.43ID:cPvvfz1n
>出来るだけプロパティとかクラスの状態を変更したくない

というのが中途半端な要求だな。出来るだけってなによ。少しなら構わんの?とか。
オブジェクトインスタンスと無関係ならstaticにするだけでしょう

staticにすることではパフォーマンス上メリットしかないけど
そのクラスに存在することが意味的に正しいのかな
そういう便利メソッドが乱立すると醜いと感じる
0926デフォルトの名無しさん2015/03/14(土) 20:18:06.74ID:I26yjrTx
thisを使う必要がないならstaticでいいよ

ユーティリティクラスとか拡張メソッドにするかは処理の内容による
0927デフォルトの名無しさん2015/03/14(土) 20:27:50.39ID:Zay2tm1W
>出来るだけプロパティとかクラスの状態を変更したくない

そもそもわざわざ無駄に状態を変更するわけ無いんだから、
出来るだけ、とか意味不明。
0928デフォルトの名無しさん2015/03/14(土) 21:43:19.02ID:/DGHddS8
>>924
できるだけ状態変えたくないならコンストラクタで全部与えろよ
0929デフォルトの名無しさん2015/03/14(土) 21:48:27.93ID:KVj9GXC6
>>924
標準ライブラリを参考にするといいよ

immutableにできるならした方がいいし、staticクラスにできるならした方がいい
0930デフォルトの名無しさん2015/03/14(土) 22:27:13.67ID:rlYkmabW
>>924
良い心がけだね。デメリットは全くないよ
ただしそれはリファクタリングすると値オブジェクトとそのメソッドに分離できるね
その方がよりエレガントだね
0931デフォルトの名無しさん2015/03/14(土) 22:34:32.15ID:Hlel4/Br
デメリットはあるぞ、変更の影響範囲が把握しづらく後々の修正が困難になる
>>930の言ってるように意味を持ったある程度の単位で不変クラスに纏めていくのがいい
0932デフォルトの名無しさん2015/03/15(日) 02:58:31.64ID:IG+uIRAd
よく初心者に取り合えずC#薦める人居るけど、どういうつもりなんだろうね。
いきなりC#やって理解できるものなんだろうか。
笑えるほど多機能な言語だからなー。
本当はCがシンプルで入門にはベストなんだが、コンテナが無いから
まともなプログラム書くには辛すぎるんだよなぁ。
まぁこれぐらい障壁があった方がバカ避けになってよいか。
0933デフォルトの名無しさん2015/03/15(日) 06:26:40.64ID:8oxchyen
C/C++ は意識高い系(笑)でない場合いつまでたってもダメだからね
C# の多機能なんぞ時間が経てば誰でも覚える、C# は独習が良書だし
0934デフォルトの名無しさん2015/03/15(日) 09:09:15.92ID:0tKSfbWr
>>932
同意
ワザワザ複雑で難しいCLIを勧めるなんて酷いよ
簡単なCから教える方が絶対に良い
0935デフォルトの名無しさん2015/03/15(日) 09:26:52.76ID:LJIxQHjb
Cってインストールがめんどそう
IDEなさそう
0936デフォルトの名無しさん2015/03/15(日) 10:25:26.29ID:yYr+bwae
C#はC/C++に比べて笑えるほど簡単だと思うんだが

GUIとかRAD系のポトペタで作れるし、
ライブラリが豊富だから、何かやりたいこともググれば大概見つかるし
IDEの支援も有るけど、多くのケースでC#の方がより短時間で作れるし

俺も、C#やってからオブジェクト指向が理解出来てC++でもそれで書けるようになったし、
0937デフォルトの名無しさん2015/03/15(日) 10:31:24.48ID:kJqM+4Ch
C#を薦めるってことは原則的にVC#が使える環境ってことだから
ついでにCも使ってみればいいんじゃないかな?
Visual Studio 2013 Community は、Professional と同等機能が無償だよ?(´・ω・`)
0938デフォルトの名無しさん2015/03/15(日) 11:09:13.03ID:zUFC8Q99
Cを勧めた場合→c言語入門が入門書になる。ヘッダやポインタや配列の引数に悩まされる

javaを勧めた場合→最初は楽。イベント周りやインナークラス、無名クラスで混乱しがち。

javascript→負の遺産により、誤った説明がヒットしやすい。クロージャが理解できるか、全てがオブジェクトが理解できるかが分かれ目

c#→序盤の学習コストはCに近い。但し意識高い系が書いたのを参考にすると、序盤からラムダ式や非同期が出てきて言語の下地が謎になる。非公式だが網羅的なリファレンスサイトがいくつかある。中盤以降はOOPやデリゲート

段階的に教える良書選べってことかな、、、
0939デフォルトの名無しさん2015/03/15(日) 11:29:05.60ID:Xf+cDl8y
Cはつまらんのだよ
C#でさくっとGUI作りながら学習した方がモチベーション維持できる
0940デフォルトの名無しさん2015/03/15(日) 11:38:53.01ID:ILrktvZ0
最初から本質を隠蔽して教えると使えるけど理解はできないって状態になる
トラブルが起こらないうちはそれでいいが現場ではそれは通用しない
日本の受験勉強と同じだね
受験まではツールとして使えるが大学では大して役に立たない
0941デフォルトの名無しさん2015/03/15(日) 11:48:38.61ID:Xf+cDl8y
結局は本人次第だし、何から始めても学ぶ奴は自らよく学び、学ばない奴は表面しか知らんよ
0942デフォルトの名無しさん2015/03/15(日) 13:12:32.42ID:kJqM+4Ch
まあ、学べるとか実際どうでもいいんだよ?(´・ω・`)
個人の趣味でやってるならね?(´・ω・`)
ただ、業界に入ってオイラと絡むようなら「使える奴」以外はいらないからね?(´・ω・`)
0943デフォルトの名無しさん2015/03/15(日) 13:27:56.11ID:Xf+cDl8y
使える奴以外いらないなんて誰だってそう思うわ
お前は人の首切れるのかよ
0944デフォルトの名無しさん2015/03/15(日) 13:30:50.85ID:kJqM+4Ch
切れないから、入らないで欲しいんだよ?(´・ω・`)
0945デフォルトの名無しさん2015/03/15(日) 14:21:56.41ID:MM08jHV1
c#は混乱する機能があるけど、
例えば、linqなんかがextensionのチュートリアルみたいになってていい感じよね
0946デフォルトの名無しさん2015/03/15(日) 14:45:06.17ID:Hpv3nNuK
推薦図書/必読書のためのスレッド に貼ってあるコレ
連載 改訂版 C#入門 http://www.atmarkit.co.jp/fdotnet/csharp_abc2/index/index.html

書籍だと何がいいんだろ?
0947デフォルトの名無しさん2015/03/15(日) 15:06:06.39ID:se6Ndpqj
プログラミング .Net Framework
入門書としてはこれが一番だろう
0948デフォルトの名無しさん2015/03/15(日) 15:16:20.94ID:8oxchyen
独習一択だ
0949デフォルトの名無しさん2015/03/15(日) 17:34:21.23ID:GwHhR35M
ポインタ理解できる人ならCから始めるのが一番だと思う
0950デフォルトの名無しさん2015/03/15(日) 17:57:48.11ID:zUFC8Q99
標準C#入門の1版だったな自分は。独習は読んだことないけど、どっちの方がわかりやすいんだろう。
0951デフォルトの名無しさん2015/03/15(日) 19:32:13.47ID:eZspYd/r
>>939
確かにつまらんな

ウィンドウ出してなんかやったほうがアプリを作ってる実感が出来て面白い
0952デフォルトの名無しさん2015/03/15(日) 20:49:42.50ID:4m4AvKc7
C#のバージョンも初学者の混乱のもとになりがち
4.0くらいで教えておいて
非同期まわりはまた別に依存バージョンごとに教えるみたいな
0953デフォルトの名無しさん2015/03/15(日) 20:54:56.29ID:Xf+cDl8y
awaitが偉大すぎて他の言語が苦痛になった
0954デフォルトの名無しさん2015/03/15(日) 21:30:45.62ID:iZTAK6Ur
デリゲートから先がわからん。
基本辺以降のわかりやすいのなにかないですかね
0955デフォルトの名無しさん2015/03/15(日) 21:43:39.93ID:S+QWGoMW
オブジェクト指向をちゃんとやりたいんだったら一旦Javaに行ってくるのもいいんじゃないか
あっちは初心者向けの良書が多いしJavaでObserver地獄を体験すればイベントの概念なんかは完璧にわかる
0956デフォルトの名無しさん2015/03/16(月) 05:44:38.02ID:3ZODMEse
プログラミングにも10000時間の法則というものは適用されますか?
0957デフォルトの名無しさん2015/03/16(月) 07:00:26.57ID:RXdrRRj4
>>956
1万時間って毎日出勤日に8時間で5年か。
c#の本質的な部分が分かった気がしたのは、5年目くらいからか。
0958デフォルトの名無しさん2015/03/16(月) 07:04:50.28ID:2MBhvkTz
Cppの経験があれば3日で十分
0959デフォルトの名無しさん2015/03/16(月) 07:17:58.08ID:X36/p0ud
C#の本質ってなんだろう?まさかラムダ式ではあるまいが‥
0960デフォルトの名無しさん2015/03/16(月) 10:48:57.53ID:DtGS1SHb
C#はまずdelegateで引っかかった。LINQは比較的楽だった。asyncは簡単すぎ。
0961デフォルトの名無しさん2015/03/16(月) 11:16:15.52ID:ItF+Xu8F
>>960
asyncはスレッドの罠があるが
0962デフォルトの名無しさん2015/03/16(月) 13:16:47.46ID:13dyZYX7
・デリゲート
・参照型と値型
・参照渡しと値渡し、ref
・GCとIDisposableの実装
0963デフォルトの名無しさん2015/03/16(月) 15:48:25.56ID:9NukSFE+
C#はポインターを使わないように作ったために、値と参照の区別が解り難くなってはいるな
0964デフォルトの名無しさん2015/03/16(月) 16:45:21.99ID:VWUCX6gA
ref Bitmap とかあまり意味ないしな
ポインタのポインタみたいな感じ
0965デフォルトの名無しさん2015/03/16(月) 17:37:58.68ID:3ZODMEse
だれか1万円でおれにデリゲートをマスターさせてくれませんかね
0966デフォルトの名無しさん2015/03/16(月) 17:50:07.14ID:dm8U0bp+
わいも。
ここでデリゲートや!Funcや!とかやろうとすると、構文忘れていつも躓く。

あと、ラムダで{}が増えるとどこにかっこ入れりゃいいんだか分からなくなってくる
0967デフォルトの名無しさん2015/03/16(月) 18:16:14.09ID:+Clh6a07
>>965
LINQはかなり苦労した(っていうか今も完全には使いこなせてないw)けど
デリゲートなんかまったく難しいと思わなかったけどなあ。

難しいと思う人はCの関数ポインタを知らない人かね。
0968デフォルトの名無しさん2015/03/16(月) 18:16:58.67ID:13dyZYX7
>>964
意味なくないが
0969デフォルトの名無しさん2015/03/16(月) 18:18:40.21ID:eIjhon4v
ちゃんと理解するには一つの言語じゃダメだね
3つくらい言語覚えたら、あれがこう書けるなら多分これはこう書けるだろう、という言語設計の感覚が分かってくるよ
そこまで行けばもう何でも使える
0970デフォルトの名無しさん2015/03/16(月) 18:47:56.15ID:RXdrRRj4
>>967
LINQはメソッド構文の方がとっつきやすいな。
0971デフォルトの名無しさん2015/03/16(月) 18:57:11.43ID:X36/p0ud
>>969
C/C++, Java と後一つか二つは何?
0972デフォルトの名無しさん2015/03/16(月) 18:59:32.14ID:RXdrRRj4
>>971
Lispとアセンブリ言語じゃないの?
0973デフォルトの名無しさん2015/03/16(月) 19:08:45.22ID:rZWbjQxE
javascriptやってたらdelegate理解し易いんじゃないか
pythonでもいいけど
0974デフォルトの名無しさん2015/03/16(月) 19:11:19.86ID:rZWbjQxE
delegateじゃなくラムダ式だな
0975デフォルトの名無しさん2015/03/16(月) 21:57:52.42ID:pvacf3yp
>>965
デリゲートの何がわからんの?
0976デフォルトの名無しさん2015/03/16(月) 22:06:47.07ID:cidsZXR+
>>975
何がわからないって説明出来ないほど、概略を理解してません。
とりあえずもう一度独習読んできます
0977デフォルトの名無しさん2015/03/16(月) 22:19:03.13ID:2MBhvkTz
Linqってメソッドチェインに勝るところが一つもないよね
0978デフォルトの名無しさん2015/03/16(月) 22:25:09.39ID:Z9Sc83qM
メソッド形式でjoinやlet使ったら暗号になる
0979デフォルトの名無しさん2015/03/16(月) 22:28:14.62ID:Gb/QDJel
メソッドチェインも含めてLINQってゆーのよ
0980デフォルトの名無しさん2015/03/16(月) 22:40:10.41ID:ibKRt6nc
多重ループで一個目は.Select()、二個目以降が.SelectMany()にしなければ
ならないというのが最初は意味が分からなかった
0981デフォルトの名無しさん2015/03/16(月) 22:42:23.51ID:pvacf3yp
>>976
整数を格納する変数はint型
文字列を格納する変数はstring型
関数(メソッド)を格納する変数がDelegate型

private delegate void voidDelegate();
とすれば「引数なし、戻り値なしのメソッド」を格納できる型を宣言できる。
この voidDelegate は型なので、stringやintと同じ位置づけ。
使い方はこんな感じ
static void Main(string[] args)
{
  voidDelegate d = Hoge; // メソッドそのものを格納するのでHogeに()はつけない。
  d(); // メソッド実行。Hoge()と同様の動き。
  Console.ReadLine();
}
private delegate void voidDelegate(); // 引数なし戻り値なしのメソッドを格納できる型を宣言。
private static void Hoge()
{
  Console.WriteLine("call hoge");
}

この例だとわざわざ delegate を使わず直接 Hoge を呼ぶべきなのだけれど、あくまで使い方の例ということで。
 これは変数の使い方の説明で
 string a = "Hello world";
 Console.WriteLine(a);
 と説明するのと同様。(この場合、わざわざ変数aを使う意味は無い。)
0982デフォルトの名無しさん2015/03/16(月) 22:49:57.49ID:dm8U0bp+
引数の数違はうけど、戻り値一緒はまとめることできますか?
0983デフォルトの名無しさん2015/03/16(月) 22:55:38.70ID:Z9Sc83qM
>>982
ラムダ使って引数揃えればいい
0984デフォルトの名無しさん2015/03/16(月) 23:52:19.76ID:dm8U0bp+
ありがとう、ラップするイメージかな?
0985デフォルトの名無しさん2015/03/17(火) 02:58:16.54ID:6W0YhoGt
あ
0986デフォルトの名無しさん2015/03/17(火) 03:50:43.01ID:5Z5N2YyF
>>981
フムフム。メソッドを格納する変数がデリゲート型ってことですね。
なんかイメージ掴めました。
独習でもおさらいしてみます。
ありがとうございます!
0987デフォルトの名無しさん2015/03/17(火) 10:26:17.54ID:Li2NvVqI
自分でデリゲート型定義することなんてあまりないんだけどね
0988デフォルトの名無しさん2015/03/17(火) 10:34:05.27ID:oZHW8p8v
そりゃおまえだけだろ
0989デフォルトの名無しさん2015/03/17(火) 10:50:48.40ID:emTHjnEE
うめ
0990デフォルトの名無しさん2015/03/17(火) 11:19:13.44ID:DszVuKQo
大体はFunc、Actionで済むからなぁ
0991デフォルトの名無しさん2015/03/17(火) 11:57:18.48ID:wdB+625z
うめ
0992デフォルトの名無しさん2015/03/17(火) 12:06:32.28ID:0dGH4w7d
うめ
0993デフォルトの名無しさん2015/03/17(火) 13:41:15.99ID:uGNsQ+Rh
うめ
0994デフォルトの名無しさん2015/03/17(火) 16:45:52.92ID:F7Y2+SGu
うめ
0995デフォルトの名無しさん2015/03/17(火) 22:22:09.50ID:Z7H6Z5rc
うめ
0996デフォルトの名無しさん2015/03/17(火) 23:03:37.99ID:NhCBc5GP
ume
0997デフォルトの名無しさん2015/03/18(水) 00:49:32.06ID:ONjzG27k
子産め
0998デフォルトの名無しさん2015/03/18(水) 00:52:28.97ID:ONjzG27k
鬼産め
0999デフォルトの名無しさん2015/03/18(水) 00:55:34.60ID:ONjzG27k
海産め
1000デフォルトの名無しさん2015/03/18(水) 00:57:02.78ID:ONjzG27k
木馬
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。