トップページ⇒tech
1002コメント345KB

ふらっと C#,C♯,C#(初心者用) Part118 [転載禁止]©5ch.io

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2015/11/23(月) 00:54:33.10ID:d/p1Vajd
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

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

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

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

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part117 [転載禁止](c)2ch.net
http://peace.2ch.net/test/read.cgi/tech/1443786608/

■関連スレ
C#, C♯, C#相談室 Part89 [転載禁止](c)2ch.net
http://peace.2ch.net/test/read.cgi/tech/1443271409/

■コードを貼る場合は↓を使いましょう。
http://ideone.com/
0002デフォルトの名無しさん2015/11/23(月) 12:09:09.65ID:blqHyLLr
>>1乙
0003デフォルトの名無しさん2015/11/23(月) 12:15:55.82ID:/RGpvc/8
>>1
乙です

今@ITでADO.NET Entity Framework入門っていう記事読んでるけど、むずかしいぜ。
前スレでちょっと出てきたDB関連の話でまったく知らなかったから参考に読んでるだけど
これ仕事ででてきたら果たして使えるようになるのか心配だ・・・今すぐ使うわけじゃないのが救い。
0004デフォルトの名無しさん2015/11/25(水) 03:47:30.32ID:VpIXdAyb
C#で簡単にVSYNC待つ方法ないですか?
今Windows FormでVSYNC待つだけのためにDxLibを使っています
CPUパワーを食わずに、コードもあまり書かずに簡単にVSYNCだけ待てれば
DxLibに頼らずに済むのですが
2010Expressを使っています
0005デフォルトの名無しさん2015/11/25(水) 03:52:32.72ID:A+DiyrlM
Windowsで使ったソフトの順序を取得する命令ってありますか?
Alt+Tabを押すと使った順に並んだ小窓が出るのでどこかに記録されているのではないかと思っているのですが
探し方が悪いようで見つからないです。
0006デフォルトの名無しさん2015/11/25(水) 22:40:12.84ID:ZWYoQ/Cr
教えてください。

【やりたいこと】
既存のクラスのメソッドの一部の機能を拡張したい。
具体的にはクラス(インターフェイス)AをクラスBのメソッドCに引数として渡す。
メソッドCはインターフェイスAのメソッドからデータを受け取り、データがなくなるまで処理を続ける。

このクラスAとクラスBは既成の物で、オブジェクトファイルの形式で提供されていて、ソースコードレベルでの改造は出来ない。
具体的にはデータ量が多い場合に備えて、メソッドCを実行中に外部からキャンセルを受け付けるように改造したい。

【対策案1】
メソッドCに準じたメソッドDを自作する。
→メソッドC内ではクラスBの private なメンバ変数等を使用しているため、外部に機能拡張版のメソッドを用意するのは容易でない。

【対策案2】
インターフェイス(クラス)Aを包含するクラスA’を用意して、これをメソッドCに渡す。
具体的にはインターフェイスAを継承したクラスA’を用意し、コンストラクタ等でクラスAのインスタンスを渡す。
クラスA’ではインターフェイスAで定義された全てのメソッドやプロパティにクラスAのインスタンスの同じメソッドやプロパティを呼び出すように実装する。
→インターフェイスAに定義されているメソッド等が多いのでとても面倒。と言うか、後のメンテナンス性が悪すぎる気がする。

【対策案3】
クラスBに相当するクラスを自作する。
→技術的にはやってやれないことはないが、時間的には無理。

【質問】
こういうときに有効な対策を教えてください。
0007デフォルトの名無しさん2015/11/25(水) 22:53:14.22ID:5wB+dJF6
上長に聞きたまえ
0008デフォルトの名無しさん2015/11/25(水) 23:16:59.10ID:jVhYVUAo
自分で作り直すのが無理なら
クラスBを作った人に修正をお願いするしかないんじゃない
0009デフォルトの名無しさん2015/11/26(木) 10:56:36.07ID:uhVdTG0g
Has AなクラスA'を作ってインターフェイス(A?)を実装
各メンバーではAに委譲する
Bがデータを要求するところだけキャンセルならデータ供給を止めるみたいな
0010デフォルトの名無しさん2015/11/26(木) 12:39:25.48ID:wLo/SUaP
細部は違うけど要するに案2だろ
面倒くさいから嫌だってw
0011デフォルトの名無しさん2015/11/26(木) 20:04:37.19ID:cJiE/pnV
ある集合の中から条件に一致するものだけ、値を変更して、
その集合を返すみたいな処理ってLINQでどう書けばいいんだろ?

1〜5の数字のうち偶数は!をつけて出力みたいな

1 2! 3 4! 5

whereしてからselectすると偶数だけのリストになっちゃうし、selectの中でwhere??
0012デフォルトの名無しさん2015/11/26(木) 20:39:44.72ID:QqGRNt0R
>>11
http://ideone.com/PD7B5Z

こんな風に馬鹿正直に書いたら駄目なん?
0013デフォルトの名無しさん2015/11/26(木) 20:50:40.56ID:XPm6ny2d
>>12
自分もそういう書き方しか思いつかなかったんですが、もう少しスマートに書けないかなと。

↑であげたのは簡略化した内容ですが、実際には

class Item{
bool Checked;
string KeyWord;
}

このクラスのリスト List<Item> に対して
あるキーワード文字列に一致する場合は、Checkedをtrueにして
そのリスト全体を返す。みたいなことがやりたいんだよね。
0014デフォルトの名無しさん2015/11/26(木) 20:56:13.07ID:QqGRNt0R
んならそういう働きをする拡張メソッドを書くしかないな
条件はFuncで与えるとして

Where()は条件に一致する集合しか返さない
そうではなく結果を{source, bool}みたいな感じでFuncに当てはまるか匿名型で返すような
0015デフォルトの名無しさん2015/11/26(木) 21:03:24.02ID:sUIZ4Kkh
>>12 見にくいので転載ボランティア

int[] sample = new int[] { 1, 2, 3, 4, 5 };
var res = sample.Select(i => {
return i.ToString() + ((i % 2 == 0) ? "!" : "");
});
foreach (var v in res)
Console.Write(v + " ");
0016デフォルトの名無しさん2015/11/26(木) 21:08:46.61ID:wLo/SUaP
手段と目的の逆転
0017デフォルトの名無しさん2015/11/26(木) 21:15:13.31ID:XPm6ny2d
>>14
やっぱ拡張メソッド定義するしかないんですね。

こういうパターンって結構ありそうな気もするんですが...
0018デフォルトの名無しさん2015/11/26(木) 21:20:59.72ID:96CZ8S8K
LINQは副作用に否定的だから
0019デフォルトの名無しさん2015/11/26(木) 21:23:12.42ID:zfiVTGcd
>>1
.Select((item) => new Item
{
 KeyWord = item.KeyWord,
IsChecked = (item.KeyWord == "a")
});
0020デフォルトの名無しさん2015/11/26(木) 21:27:28.22ID:KfvI2hmZ
副作用が出るのはIxのForEach使えばいい
0021デフォルトの名無しさん2015/11/26(木) 21:28:06.60ID:nO6kdv8X
すげぇ変なことしてんな
普通にSelectでやればいいかと思うのだが
0022デフォルトの名無しさん2015/11/26(木) 21:29:56.77ID:Vv+caMcJ
>>17
気持ちがわからないんだよな。
>>11と>>13の要望まとめるとこんな感じ?
http://ideone.com/TWOSN4
最後に元の集合返すLINQがこんな感じに作れるけど

http://ideone.com/gYYg48
これでいいじゃんってなる。
0023デフォルトの名無しさん2015/11/26(木) 21:33:39.93ID:Vv+caMcJ
ああ元の集合から作った新しい集合がほしいのか。
>>22は無しね!
でもそうだとしても>>21でいいじゃんね!
0024デフォルトの名無しさん2015/11/26(木) 21:41:44.00ID:QqGRNt0R
あ、やっぱり拡張メソッドを使うと変だね
無理にメソッドチェーンをする必要ない気がする
0025デフォルトの名無しさん2015/11/26(木) 22:40:51.15ID:sUIZ4Kkh
>>11 >>13
static void Main()
{
int[] source = new int[] { 1, 2, 3, 4, 5 };
var result = source.Join(new bool[]{true, false}, o=>true, i=>true, (o, i) => new Item(o, i))
.Where(p => { var r = p.Value % 2; return r == 0 && p.Checked || r == 1 && !p.Checked; });
result.ToList().ForEach(i => Console.Write("{0}{1} ", i.Value, i.Checked ? "!" : ""));
// => 1 2! 3 4! 5
}
class Item {
public readonly bool Checked; public readonly int Value;
public Item(int value, bool _checked) { Value = value; Checked = _checked; }
}
SQLっぽい雰囲気
0026252015/11/26(木) 22:52:39.19ID:sUIZ4Kkh
>>11
int[] source = new int[] { 1, 2, 3, 4, 5 };
var result = source.Join(new bool[]{true, false}, o=>true, i=>true, (v, c) => new {Value = v, Checked = c})
.Where(p => { var r = p.Value % 2; return r == 0 && p.Checked || r == 1 && !p.Checked; });
result.ToList().ForEach(i => Console.Write("{0}{1} ", i.Value, i.Checked ? "!" : ""));
// => 1 2! 3 4! 5

匿名型なんてのがあるのか
002762015/11/27(金) 00:00:23.02ID:V/UxGV6O
>>8-10
ありがとう。
やっぱり 案2 というか has a しかないかな。

でもよく考えたら特定用途にしか使わないことが明確ならインターフェイスの全メソッドを
真面目書く必要もないかも知れないと気がついた。
いやインターフェイスに定義されてるメソッド等の実装はしなきゃならないのは変わらないんだけども。
0028デフォルトの名無しさん2015/11/27(金) 01:58:20.80ID:iofAV5op
>>6
Interface IV
Cancel();

Interface IA:IV
V v=objectA;
0029デフォルトの名無しさん2015/11/28(土) 14:48:27.88ID:dnKF4fhx
データベースの内容を画面に表示、編集する方法で悩んでいます

・具体的にはデータベースの内容をDataGridViewに表示して
編集した内容をデータベースに反映したい
・テキストボックスに検索文字を入力してデータの絞込をしたい

調べたらこういう記事がありました
新グリッド・コントロールの豊富な機能と高い表現力 − @IT
http://www.atmarkit.co.jp/fdotnet/special/win20review02/win20review02_02.html
実際やってみたら、編集可にしているのにセルの値の編集が全く出来ない
(このやり方は表示するだけ?)
それに10年前の記事でとても古い
今だとどういう方法で実現すればいいでしょうか?
0030デフォルトの名無しさん2015/11/28(土) 16:34:28.63ID:N2qWmI2+
>>29
SQLiteなら
http://dangoya.jp/?p=116

こんなのとかたくさんあるみたい
0031デフォルトの名無しさん2015/11/28(土) 17:03:27.66ID:X+9lGRnl
>>30
それGUIの設計というより、DBからデータを取得する方法じゃないですか
しかも結果はデバッグ出力だし
全く参考にならない
0032デフォルトの名無しさん2015/11/28(土) 17:09:40.67ID:N2qWmI2+
http://park.geocities.jp/gdfsm000/cs/cs603.html

こんなのだったらいいのか
それにGUIなら

http://c-loft.com/blog/?p=1844

こういう奴とか?いくらでもあるんだが
0033デフォルトの名無しさん2015/11/28(土) 17:15:59.89ID:CPGEE3Eu
このバカが
コピペで要求満たせるサンプル持って来いってんだよ
すべて説明しないと察せないのか?
ガキか素人か?
0034デフォルトの名無しさん2015/11/28(土) 17:24:52.80ID:N2qWmI2+
お前教えてクレクレ君の癖に随分横柄な態度だな
自分で探せやアホ
0035デフォルトの名無しさん2015/11/28(土) 17:26:09.88ID:CPGEE3Eu
代弁してあげただけですよ〜
0036デフォルトの名無しさん2015/11/28(土) 21:57:42.37ID:QbwUMUmL
まあ>>29レベルの質問は
>教えてクレクレ君と言われてもしかないだろうな

初学者としても勉強不足だし
ググレカス以外のの返答は期待できない
0037デフォルトの名無しさん2015/11/28(土) 23:18:13.48ID:ExUydw0X
gridviewよりlistviewのがいいんだっけ?

てかこういうコントロール系って
サーバ側で取得するとき
全行ループしてFindControllでコントロール取得するんだよね?

MVC勉強してると、こういうの面倒くさいなと思う
0038デフォルトの名無しさん2015/11/28(土) 23:42:17.02ID:dnKF4fhx
SQLite→EF(or dapper)
まではようやく出来たのですが、いざDataGridViewに表示しようとすると
ソートができない、値の変更ができないなどがあって躓いてしまいました
調べると、データテーブルを使えばコードレスで表示する方法を見つけたのですが
DataGridViewでの変更をデータベースに反映する方法までは乗っておらず
一体どの方法でするのが一番いいのかわからなくなって質問しました

�@SQLite→EF(or dapper)→BindingListView→DataGridView
この方法だとLINQも使えて、値の変更も反映されるようですが
ソートやジェネリックに対応しようとするとBindingListViewや
BindingNavigatorの実装を自前で書かないといけなくて難しい
でもこれが完成するとほとんどFormにコードを書かなくて済むみたい

�ASQLite→TableAdapter→DataTable→データソース→DataGridView
表示するまでは簡単だけど、変更をデータベースに反映するのが大変?
EFやdapperを勉強したのは無駄だった?

比較的簡単なのはこの2つなのかなと思ったのですが
どのやり方が一般的というか簡単というか、そこのところが知りたいです
今後WEBシステムや業務用の顧客管理システムを作る予定は全くありません
ちょっとした自分用の動画や音楽のデータベースを作りたいだけです
0039デフォルトの名無しさん2015/11/28(土) 23:47:13.87ID:3Q3OpRos
>>38
EFなんか使わないのがベスト
(EFがターゲットとする)業務システムってとんでもなく複雑なんだぜ
それに比べりゃたかが動画や音楽のDBごときにEFなんか要らん
0040デフォルトの名無しさん2015/11/28(土) 23:49:15.85ID:kPVc8Ylo
>>38
ネットの情報見ながらなら�Aが楽かと
0041デフォルトの名無しさん2015/11/29(日) 00:05:54.22ID:aZc4OEnQ
LINQ勉強したならEFは使わないで、dapperとDBテーブルに対応するクラス作ってマッピングさせたほうがいい。

検索と更新、ソートが画面上からできればいいんでしょ?
0042デフォルトの名無しさん2015/11/29(日) 00:32:17.14ID:9octMKBL
>>39
EFを使わない方がいい理由は
三輪車にV6エンジン搭載するような感じですか?
ダメな理由があまり見つからないもので
重いからかな?確かにdapperと比べると遅いですけど

>>40
�Aの場合、DataGridViewの変更がDataTableに反映されて
それをTableAdapterでデータベースにUpdateという感じでよろしいですか?

>>41
マッピングまではやってみました
それをDataGridViewで検索、更新、ソートできるようにする方法が
調べた感じだとBindingSourceの自作しかなさそうだったのですが
他に方法はあるのでしょうか?

レスありがとうございます。それと質問ばかりですみません
一つのことを実現するのに方法が無数にありすぎて混乱してます
0043デフォルトの名無しさん2015/11/29(日) 10:31:35.90ID:BA+ijUMq
IEnumerableがいまいちぴんとこなくて初心者から抜け出せない・・・

List<>とDictionary<>にデータ保持とかの自作のクラスを入れてしまうと
だいたいやりたいことができているんだけど
あえて自分でIEnumerableを扱う利点ってどんなものなの?
0044デフォルトの名無しさん2015/11/29(日) 10:40:55.72ID:ejXKaOWL
引数や戻り値を介した受け渡しに使うんだよ
なんでもいいから複数の値を引数で受けたいとか返したいとかよくあるだろ?
そういうとき具体的なコレクションの型を指定してしまうと不要な厳しい制限を設けることになってしまう
0045デフォルトの名無しさん2015/11/29(日) 10:53:25.06ID:7SVdQgBN
インターフェースを引数にすれば抽象度が上がって重複コードが減るよってだけ
System.Linq.Enumerableの実装見るのが手っ取り早い
0046デフォルトの名無しさん2015/11/29(日) 12:28:51.61ID:j4qD5yiX
あとは遅延リストや無限リストが欲しいときにも使えるね
0047デフォルトの名無しさん2015/11/29(日) 12:32:01.69ID:ejXKaOWL
遅延リストや無限リストが欲しいだけなら別にIEnumerableを使う必要はないけどね
遅延リストや無限リストのようなものもList<T>も配列も同じ「要素のシーケンス」として
共通のインターフェースで扱えることに意味がある
0048デフォルトの名無しさん2015/11/29(日) 12:41:33.12ID:MHU1lz94
C#でTaskにて別スレッドを実行中にXマークでデバックを落とすと
破棄されたオブジェクトにアクセスできませんとエラーが出るんです
出ないようにするにはどうすればいいでしょうか?
0049デフォルトの名無しさん2015/11/29(日) 16:15:06.84ID:vuzu98VN
>>48
cancelとwait
0050デフォルトの名無しさん2015/11/29(日) 16:32:17.55ID:yHrLnXF5
>>49
ありがとうございます。
無事に出来ました!!
0051デフォルトの名無しさん2015/11/29(日) 17:02:57.67ID:sqPcAEkv
たぶんコイツがキチガイ回答者 >>33
ここまでほとんど自演なんだろうな
0052デフォルトの名無しさん2015/11/29(日) 18:29:07.30ID:djg7Qs12
みんな既に理解してるから、
くだらないことでドヤらないで。
0053デフォルトの名無しさん2015/11/29(日) 21:49:18.21ID:y4EB3thr
>>48
>>49
個人的にはこれがすごいと思う
エスパー的な意味で
0054デフォルトの名無しさん2015/11/29(日) 23:42:04.32ID:X6CLD+vb
17分後に完了できたのは凄技だとは思うw
0055デフォルトの名無しさん2015/11/30(月) 17:10:07.41ID:wM8ePfaT
ブラゲーの画面をぴったり画像保存するようなプログラム作りたいんですけど
ブラウザの中のフラッシュやHTML5の画面の左上座標ってどうすればとれますか?
画像認識で強引に認識するしかないでしょうか?
0056デフォルトの名無しさん2015/11/30(月) 17:37:19.12ID:NvF8UIfD
OSによるのでは?
0057デフォルトの名無しさん2015/11/30(月) 17:42:27.07ID:pbgvhCW9
ブラウザコントロール使う話ではなくて?
0058デフォルトの名無しさん2015/11/30(月) 19:54:38.66ID:wM8ePfaT
>>56
Windows 7 です

>>57
よくわからなかったので軽く調べてみましたけど
自作のUIがジェットの中にブラウザ表示させるみたいな感じなんでしょうか

そうではなくて chrome や firefox なんかに表示されてる
フラッシュの画面部分だけぴったりスクリーンキャプチャするようなプログラム作りたいんですけど
無理ですかね…
0059デフォルトの名無しさん2015/11/30(月) 20:07:34.72ID:4TtrR1iM
ブラウザの枠含めて大きめにキャプって、後で画像処理ソフトで切り出せばいいだけじゃないの?
自分で作らなくても、両方とも既にあると思うけど。
0060デフォルトの名無しさん2015/11/30(月) 20:17:18.03ID:NvF8UIfD
>>59に1票。
0061デフォルトの名無しさん2015/11/30(月) 23:07:13.04ID:wM8ePfaT
いままでそうしてたんですけど
1日何枚もとってブログにはったりするので
それを自動できれいにやるようにしたかっただけです

まあ内側のフラッシュのプロセスつかんで
その表示位置取得したりできるかなと思ったんですけど無理なんでしょうか…

あきらめます
回答していただいた方ありがとうございました
0062デフォルトの名無しさん2015/12/01(火) 02:01:07.71ID:XoX/fDF5
ブラウザのサイズを固定(キャプを取るときは全画面にするとか)したらあとはそれに合わせて切り抜く範囲を決めるだけじゃん
0063デフォルトの名無しさん2015/12/01(火) 02:10:57.73ID:fBpqlrz3
艦これの専ブラとかそれやってるから、ソース見るといい
0064デフォルトの名無しさん2015/12/01(火) 20:17:01.67ID:sAwax9ox
>>53
>>48です。
closingイベントでcancel要求を出して
それが受けつるまで待機するという意味での
waitだと思いました。
0065デフォルトの名無しさん2015/12/03(木) 00:33:41.52ID:lhYNgz5S
質問です
変数aとbがあるとします
aの内容をbから参照する事は出来るでしょうか?

a=1;
//bに対してaを参照できる何らかの処理
print(b);//1
a=5;
print(b);//5
という結果を出したいのですが
0066デフォルトの名無しさん2015/12/03(木) 01:12:22.92ID:lfpcI0/L
ここはC#のスレです。
0067デフォルトの名無しさん2015/12/03(木) 02:09:53.61ID:F5OD5ya2
a=bにすりゃいいんじゃないの?
レベル高すぎてやりたいことがわかんない
0068デフォルトの名無しさん2015/12/03(木) 03:29:17.07ID:KH3XuQZQ
参照だろ。
同じオブジェクトIDを持つ、同一オブジェクト

でも、intのようなprimitive型では、
値(参照ではなく内容)がコピーされるため、
参照のようなことは出来ないかも

(C#にも、Javaのようなprimitive型があればの話だが)
0069デフォルトの名無しさん2015/12/03(木) 10:58:04.62ID:lhYNgz5S
>>68
やっぱり無理なんですか
ありがとうございました
これができないと余分なコードを書かないといけない状況に陥ってたんですが
仕方ありません
0070デフォルトの名無しさん2015/12/03(木) 12:10:31.86ID:r4QYskO6
>>69
そんな状況ありえんと思うけどねw
何か思いっきり勘違いしてそう思い込んでるだけだと思う。

あと一応値型でもunsafeでポインタは取れるよ。
0071デフォルトの名無しさん2015/12/03(木) 12:52:27.54ID:zCQ/Nhg2
>>69
何をしたいのかよくわからんけど、やりたいことを関数に切り出して、int 変数を参照渡しにすればいいんじゃね?
0072デフォルトの名無しさん2015/12/03(木) 13:04:34.35ID:IgpEN7lw
そういうことをしたくなっちゃダメよ
0073デフォルトの名無しさん2015/12/03(木) 13:11:21.98ID:zCQ/Nhg2
>>69
もしくは1要素の配列にするとか

var a = new int[1];
a[0] = 1;
var b = a;
print(b[0]); //1
a[0] = 5;
print(b[0]); //5
0074デフォルトの名無しさん2015/12/03(木) 13:18:55.92ID:jUS2N3R7
intなプロパティもつクラス定義すれば良いだけだと思うんだが
0075デフォルトの名無しさん2015/12/03(木) 14:10:48.22ID:lhYNgz5S
お騒がせしました〜
delegateを使ってなんとか実現できました〜
回答ありがとうございます
0076デフォルトの名無しさん2015/12/03(木) 20:17:12.68ID:zCQ/Nhg2
>>74
配列を提案した俺が言うのもなんだが、クラスはなんか負けた気がする…
0077デフォルトの名無しさん2015/12/03(木) 20:43:19.72ID:/6SEhgDG
valueプロパティだけのインターフェースって便利だよね
極限まで行っちゃうとなんらかの値オブジェクトをどこかから取得する事となんらかの値オブジェクトをどこかに転送する事
この2つの連鎖でほぼ全てのシステムが組める
つまりinterface IValue<T> { T Value { get; set; } }はプログラムの全てを抽象化すると言ってよい
0078デフォルトの名無しさん2015/12/03(木) 20:46:05.45ID:IgpEN7lw
何の値か分からんし誰もそんなことやらん
0079デフォルトの名無しさん2015/12/04(金) 05:49:43.54ID:CuO9UgGb
>>75
どう書いたのかコードみせて!
0080デフォルトの名無しさん2015/12/04(金) 08:23:18.98ID:UQYmj2IV
SQL Builderのようなライブラリ使ってる?
EF使えないと、SQL自前で組み立て、Dapperでアクセスでやってるんだけど
SQL作る部分を綺麗に書きたい
0081デフォルトの名無しさん2015/12/04(金) 08:30:25.10ID:N8pVjmap
DapperならDapper.Rainbowっていう簡易クエリビルダが付いてる
0082デフォルトの名無しさん2015/12/04(金) 12:05:23.03ID:ciEp6cCK
>>79
まず俺のやりたい事というのはアドベンチャーゲームのようなものを作っててこういう風にセリフを持ってます
Serihu[] serihu=new Serihu[]{
new Serihu("こんにちは"),
new Serihu("ご機嫌どうですか"),
new Serihu("さようなら"),
};
ここで問題になったのはこのテキストの中に変数を入れたい時どうするかというものでした
例えば「僕は○○をつかった」とか「僕は○○のダメージを受けた」などです
そこで
new Serihu("僕は",○○,"を使った")と○○に参照を入れる事を考えあれこれ試行錯誤しました
で、解決法として○○にdelegateの関数ポインタを入れてやってみたら上手く行きました
Serihuクラスの中で
public delegate string Watasi();
public Watasi watasi;と宣言して
コンストラクタを
public Serihu(string m1,Watasi w,string m2){
moji1=m1;
watasi=w;
moji2=m2;
}
と書きます
それでserihu配列の保持クラスに
public string GetItemumei(){
return itemmei.Tostring();//itemmeiには使いたい変数を何でも使えます
}
と書いて
最初の配列に
new Serihu("僕は",GetItemumei,"を使った")
と入れると変数をそのまま使えるというわけです
0083デフォルトの名無しさん2015/12/04(金) 12:28:30.63ID:4FwXmqLX
こんな回りくどいコード初めて見た
0084デフォルトの名無しさん2015/12/04(金) 12:36:37.37ID:ciEp6cCK
>>83
やっぱり他人から見ればそう見えるのかw
自分でもそうなんじゃないかなぁとw
まぁ何度も書いてくうちに効率的な書き方わかるようになるでしょ
0085デフォルトの名無しさん2015/12/04(金) 12:37:39.48ID:NrPmzULQ
ただのString.Format案件に見えるのだが
0086デフォルトの名無しさん2015/12/04(金) 12:38:19.14ID:uOiBxvHU
何がしたいんだろう。
全然理解できない。
0087デフォルトの名無しさん2015/12/04(金) 12:54:34.09ID:ciEp6cCK
>>86
平たく言うと
まず最初にセリフを配列で持ちたい
そしてそのセリフの中に動的に変数を入れたいということです
0088デフォルトの名無しさん2015/12/04(金) 12:55:52.79ID:6PuXTYFV
やっぱりstring.Fopmatだろ
0089デフォルトの名無しさん2015/12/04(金) 13:12:02.93ID:ciEp6cCK
>>85
>>88
ちょっと俺無知ゆえになにか凄い勘違いをしてたのかもしれません
ちょっとそれ調べて試してみます
上手く行ったら報告します
0090デフォルトの名無しさん2015/12/04(金) 13:42:05.60ID:uOiBxvHU
いやいやメッセージの内容の一部を委譲で決めたいって話はよく分かるし、
だとしたら勘違いしてるのは>>85の方。

そこはいいけど、疑問なのは本当に委譲が必用なのそれってところ。
0091デフォルトの名無しさん2015/12/04(金) 13:44:54.36ID:/QKGOPGQ
>>89
何も勘違いしてないよ
知識が根本的に足りてないだけ
0092デフォルトの名無しさん2015/12/04(金) 13:46:59.55ID:ciEp6cCK
試してみましたが上手く行きませんでした
string.Formatメソッドというのはstringを作るメソッドなのでセリフを表示する
時に使わないといけないと思います
で、俺のプログラムでは最初にserihu配列を作る時にどの変数を参照するかも決定されるので
配列を作った時とセリフを表示されるまで間があります
その間string.Formatで使う変数の参照を結局は持っておかないといけません
0093デフォルトの名無しさん2015/12/04(金) 14:00:21.98ID:ciEp6cCK
>>90
確かにデリゲートを使うのは俺も疑問でした
何しろ変数一個につき余計な関数が一つ増えますし明らかに冗長です
でも他に思い付かなかったんですよ
なんかあるんですかね
0094デフォルトの名無しさん2015/12/04(金) 14:09:54.37ID:FKEfoH7y
>>92
>その間string.Formatで使う変数の参照を結局は持っておかないといけません
持ってればいいだろアホか
>>82でpublic Watasi watasi;なんて余計な参照持ってるくせにobjectの参照持つのは気に喰わないのかよ
0095デフォルトの名無しさん2015/12/04(金) 14:19:31.55ID:ciEp6cCK
>>94
それでC#における参照とはなんなのかなぁと思って>>65の質問になったわけです
条件としてはある変数aをある変数bでも利用できるようにしたいというものなんですけど
0096デフォルトの名無しさん2015/12/04(金) 14:22:04.36ID:FKEfoH7y
ダメージを決定するんだったらダメージ変数を持ってるクラスがあるんだろ?
それの参照渡せばいいだけだろ
0097デフォルトの名無しさん2015/12/04(金) 14:29:10.18ID:ciEp6cCK
>>96
それだとserihuクラス配列に渡す変数はすべてクラスで包まなければならないと
言う事になりませんか?
実はまだどの変数をセリフに渡すかとかは決めてないんです
恐らくゲームを作っていくうちに増えていくと思います
それで変数をクラスで包むという手法には抵抗がありまして
0098デフォルトの名無しさん2015/12/04(金) 14:35:53.45ID:FKEfoH7y
わかった
C#使うのやめろ
0099デフォルトの名無しさん2015/12/04(金) 14:42:25.47ID:ciEp6cCK
なんか怒らせちゃったみたいでこの辺にしておきます
みなさん薄々気付いてるかもしれませんが前スレラストでちょっと荒れ気味になった件の
あの者です
俺が来たらどこもああなります
何か人を苛つかせる能力でもあるのでしょうかw
すいません
この件は上手く行ったのでこれはこれでいいです
ありがとうございました
0100デフォルトの名無しさん2015/12/04(金) 15:13:45.01ID:+NxYXL3O
スタンド能力でも持ってんのか
0101デフォルトの名無しさん2015/12/04(金) 15:31:48.75ID:L/LPhIAT
Regex等でセリフ中の特定文字列を置き換える
自前string.Formatみたいなの作った方がいいんじゃねえの
と思ったり。

例えば、"僕は%damage%のダメージを受けた"という文字列を渡すと
"僕は69のダメージを受けた"みたいにするようなの。
0102デフォルトの名無しさん2015/12/04(金) 15:45:23.46ID:Bww8jXfy
メッセージインターフェースを実装するダメージを受けたメッセージクラスにダメージ取得インターフェースを注入すればよいのでは?
0103デフォルトの名無しさん2015/12/04(金) 16:00:56.65ID:0orRsGxe
1.問題を解決し次へ進むこと
2.解決手段をを見直すこと

お前らは2を後回しにしないからいつまでも停滞してるんだぞ?
2なんてまた同様のケースに直面したときに見直せばいいんだ。
0104デフォルトの名無しさん2015/12/04(金) 16:53:55.77ID:Wl0CweWM
>>94
煽るなよ低能
0105デフォルトの名無しさん2015/12/04(金) 17:19:05.00ID:Xp0LGpIk
>>82
だから俺が教えた通り前スレで教えたとおりにセリフを全部デリゲートにしとけばよかっただろ

string配列なんて柔軟性全くないだろカス
0106デフォルトの名無しさん2015/12/04(金) 17:42:09.24ID:Xp0LGpIk
SerifuAction(IPlayer player,IItem item)
{
var pname=player.Name;
var iname=item.Name;
Say($"{pname}は{iname}を使った!");
}
0107デフォルトの名無しさん2015/12/04(金) 17:45:28.32ID:teE1ArcJ
それだと拡張性がいまいちかな
0108デフォルトの名無しさん2015/12/04(金) 18:33:00.85ID:fudonlIp
これでどう?

public class Serihu
{
 private readonly Func<string> factory;

 public Serihu(Func<string> text) { factory = text; }
 public Serihu(string text) : this(() => text) {}
 public Serihu(string pre, Func<string> text, string post) : this(() => pre + text() + post) {}

 public override string ToString() { return factory(); }
}

var serihu = new[]
{
 new Serihu("こんにちは"),
 new Serihu("僕は", GetItemumei, "を使った"),
 new Serihu(() => $"僕は{itemmei}を使った")
};
0109デフォルトの名無しさん2015/12/04(金) 19:12:20.49ID:dRNqkMm3
>>103
「を」がダブってるぞ見直せ
0110デフォルトの名無しさん2015/12/04(金) 19:25:29.22ID:T2FA2tQ2
ぱっと考えてみたが>>101のやり方がベターだと思うな。
実装も楽だろうし。
0111デフォルトの名無しさん2015/12/04(金) 22:37:56.15ID:j2Cod+yK
>>99
全スレラスト近辺の ID:fPUy/JrI は俺なんだがな。
そして荒れ気味になったのは君のせいではない。
(それ以前の時も君だけの問題ではない)

ただ君のやり方はとにかく普通じゃないんだ。
だからみんなが突っ込みたくなるのも分かる。
delegateってのはそういう時に使うものではない。
その場合は String.Format で全く問題なく実装できるはずだ。(>>85)

多分オブジェクト指向を勘違いしているのだと思うが、データ構造が意味不明になっている。
セリフを一つの配列に保持するのは何故?普通はフラグで切り分ける。
ただしこれだとコードがばらけてしまうので、フラグが立ったら落ちることがないのであれば、
今君がやっているように上書きしてif文を除去してもいい。ただこれも一つの配列に無理に押し込む必要はない。

具体的に言えば、普通は>>82なら、最後は以下になる。(記述箇所が違うのがミソ)

× new Serihu("僕は",GetItemumei,"を使った"); // Serifu配列に保持
○ String.Format("僕は {0} を使った",GetItemumei()); // item.useメソッド内に記述

丁度>>103に書かれているが、俺は逆で、君はもっとデータ構造を練ってからコーディングするべきだと思う。
君はとにかく一通りは実装できる実力があるようだ。
つまり初心者→中級者に脱皮中なのだから、もっと簡単に記述する方法を練るようにした方がいい。
結果的に、その方がデバッグ時間が少なくなって早く仕上がることが分かるはずだ。

一通りすら実装できない奴らが御託を並べてコーディングしないのもよくあることで、その場合は>>103はその通りだ。
ただ君はもうそのレベルは超えているのだから、もっと練ってからコーディングする癖を付けるべきだ。
0112デフォルトの名無しさん2015/12/04(金) 23:18:07.68ID:ciEp6cCK
>>111
セリフを配列にしたのはですね
正確には作ってるクラスはSerihuじゃなくてSinarioなんです
Sinarioクラスの中にシナリオの情報が入ってるんですけどそれはセリフだけじゃなくて
yes,noの選択肢、ゾーンの移動、音楽再生、分岐などに分類されてます
それが順送りに進んだり分岐で別のラベルに飛んだりして遷移する訳です
遷移の制御の関数はゾーンごとに作る予定です
それをわかりやすく記述するには初期化の所で配列に入れてしまうのが良いんじゃないかと
思ったんですけど
0113デフォルトの名無しさん2015/12/04(金) 23:26:44.86ID:7dL2y26W
俺だったら外部データにして、読み込んで、変数使うところは表示するときに変換するように設計しちゃうなあ
0114デフォルトの名無しさん2015/12/04(金) 23:29:51.50ID:9UEpldgC
>>113
localDBとかデータとして格納すべきものだよな
0115デフォルトの名無しさん2015/12/04(金) 23:54:24.22ID:vTZpFPk/
>>112
だから言ってるだろ
音楽再生もセリフも全部デリゲートにしておけば解決だろ
後でいくらでも変更できる

初心者や初めから完璧なデータ設計ができるわけがない
手探りでやるならデリゲートが万能

say("こんにつわ");
play("嗚咽.wav");
これらをシナリオデリゲートリストにでも突っ込んどけばいい
0116デフォルトの名無しさん2015/12/05(土) 00:00:03.45ID:0DSpQ91W
>>115
はぁ
次作で検討します
今作はもう今のままで上手くいっててテストデータをいくつか放り込んでも
実に正確に動いてますので
0117デフォルトの名無しさん2015/12/05(土) 00:08:05.88ID:0om6DbSR
初めてC#を勉強しているのですが、構文についてよくわからない部分があり教えていただけないでしょうか
this.abc.jkl();
こういう感じで「.」が複数並んだものはどういう意味があるのでしょうか?
初めのthisが自分自身のオブジェクトを指し、最後のjkl()がメソッドを指しているのだと思うのですが・・・・間のabcの部分は何者なのでしょうか?
0118デフォルトの名無しさん2015/12/05(土) 00:34:13.84ID:5SHMDYrP
>>112
考えて作っているのならそれでいい。

こちらも仕様を見ないと正確には最適な構造かどうかは判断できないし、それは他の人もそうだ。
今後とも俺含めて外野がごちゃごちゃ言うだろうが、結局のところ責任者は君なのだから、
良いアイデアはもらって、どうでも良い意見は無視すればいい。(これは今の君は出来ている)

それは持ち物の全てを常に自由に使えるというタイプではなくて、
あるアイテムはあるシチュエーションでしか使えないというタイプか?
(アイテムが有効な時にだけ選択肢の中に「使う」が出てくる)
その場合はその構造の方がいいのかもしれない。(全てがシナリオに紐付けされるから)

シナリオ部分だけ分離して作るのは良い戦略だ。
ただそれはハードコードではなく、前言われたように連想配列を使った方がいい。
あと、配列に入れること(オンメモリ)にこだわっているようだが、
その都度ファイルをスキャンしてもPCなら全く問題ないはずだ。
またこれも既に言われていたが、吉里吉里とか使った方が楽だと思うが、
それでも作りたければ作ればいいと思う。少なくともやらない奴よりは100倍マシだ。

ただなあ、君は多分戦えるつもりなのだろうが、今君が持っている武器はナイフでしかない。
C#には電動ノコギリなりチェーンソーなりあるんだから、色々もっと楽に出来る。
だからもうちょっと.NETのライブラリを確認した方がいい。
(多すぎて実体が見えてこないというのはその通りだが)
0119デフォルトの名無しさん2015/12/05(土) 00:41:50.04ID:9Cod3yWN
>>117
abcという変数がオブジェクトのインスタンスを持っていて、それがjklというメソッドを持っている。
0120デフォルトの名無しさん2015/12/05(土) 00:56:32.34ID:0DSpQ91W
>>118
実はゲームの詳しい仕様はまだ決めてないんですよね
取り敢えずジャンルとしては昔のcsゲームのセレクションみたいなのをイメージしてます
予定としてはアイテムを自由に使うシーンもありますしシナリオ紐付けのシーンも
あるんじゃないかと予想してます
0121デフォルトの名無しさん2015/12/05(土) 01:00:32.13ID:8OetstfL
その、abc に飛んで、定義を見れば?
0122デフォルトの名無しさん2015/12/05(土) 01:12:59.50ID:8OetstfL
製作現場では、プログラマーとノンプログラマーが、
分業して、お互いに干渉しないようにする

シナリオライターは、プログラムを触らないようにするから、
Lua, Squirrel(スクワール)などを使う

JSPもそう。
HTMLコーダーはJavaを触らず、アクションタグ・EL式を使う
0123デフォルトの名無しさん2015/12/05(土) 01:27:49.91ID:5SHMDYrP
>>120
まず仕様を確定させてから始めた方がいい。

アイテムがシチュエーションに依らず使用可能なら、
シナリオ側に「僕は○○を使った」があるのはナンセンスだろ。
それはアイテム側に無いと参照しづらい。(またはコピーが大量に必要になる)
両対応なら、普通は上記セリフはアイテム側にもって、
シナリオ側には有効アイテムかどうかのフラグを持つ。
(そうすれば、「僕は○○を使った」「何も起こらなかった」or「△△になった」と作りやすい)

まあ色々試せばいいが、多分一旦吉里吉里の仕様を確認して、
何でそういうことになっているのか考えた方がいいと思うぞ。
上記の通り、仕様が異なればそれに対する最適解も異なってくる。

とはいえ、正直やってみないと分からないところもあるだろうし、
それ含めて勉強だというのなら一度痛い目に遭ってみるのもいいかもしれない。

ただ確実に言えることは、仕様を確定させてから組む方が確実に早いんだよ。
それは面倒な作業に思えるかもしれないが、多分今の君は試したこともないだろ?
ウォーターフォールは成功すれば一番効率がいいんだ。
ただし現実にはそう簡単には行かない。とはいえ、目指さないことには始まらない。
だから今回でなくともいいけど、一回仕様をキッチリ確定させてから組むということを試した方がいい。
0124デフォルトの名無しさん2015/12/05(土) 01:40:20.53ID:0DSpQ91W
>>123
ゲームに実際何が必要かは初心者なので作りながらでしかわからないんですよね
前に一作作って今のは二作目なのですが多少は掴めてきました
次作からはちゃんと仕様を決めて作りたいと思います
0125デフォルトの名無しさん2015/12/05(土) 01:49:48.33ID:5SHMDYrP
>>124
ちなみに、先にシナリオをほぼ書き上げることは可能か?
その場合は8割方仕様が確定するから、その状態で組んでしまえばいい。
どうやっても多少の仕様変更は免れ得ないものだろうし、
その最中に「どういう構造にすれば仕様変更しやすいか」が分かるだろう。
これは学習方法としてはまあまあだ。
0126デフォルトの名無しさん2015/12/05(土) 01:56:56.33ID:0DSpQ91W
>>125
シナリオを先に書く事は可能です
そろそろ取り掛かろうと思ってました
明日から始めたいと思います
0127デフォルトの名無しさん2015/12/05(土) 02:26:38.84ID:F7H2FODJ
横槍なんだけど
仕様って具体的にどこまで固めるものなの?
こういう機能のクラスが必要とかUML図で作成したりすること?
独学でやってるから実践的な設計がわからない
だから行き当たりばったりで最初から作り直したりすることがよくある
上の方でもあるけど、データ構造は重要でここがしっかりしてないと
後で変更することになった場合、もう一から作ったほうがいいわってなる
0128デフォルトの名無しさん2015/12/05(土) 06:32:05.25ID:poGBdUW6
データ構造重視はわかるが
最初に固める考えは古いんじゃね
0129デフォルトの名無しさん2015/12/05(土) 16:58:57.43ID:nvqV1tdn
プロトタイプ作ってから実装しなおすって考え方どこ行ったの
0130デフォルトの名無しさん2015/12/05(土) 17:06:48.44ID:TUTr6vYI
プロトタイプは客に見せて完成品のイメージを共有するのに使うんだよ
極端な話、手描きの紙芝居でいい
決して設計能力の無さを補うためのものではない
個人で作ってるなら完成品のイメージは最初から頭の中にあるはずだから、設計は最初からできる
0131デフォルトの名無しさん2015/12/05(土) 17:13:26.24ID:KdBqlpoa
まずはDDDを学ぶ事
仕様なんて後回しでいいよ
0132デフォルトの名無しさん2015/12/05(土) 17:23:12.50ID:OQdpR4PG
横だけどDomain-Driven Design知らなかった
勉強してみよ
0133デフォルトの名無しさん2015/12/05(土) 17:37:59.43ID:7d38zssS
いい加減なこと言ってるなw

仕様変更や拡張に対する柔軟性はコードのシンプルさや可読性に反比例するし、
そもそも対応できる仕様変更の範囲なんてたかが知れてるから、程度問題ではあるが
結局は最初に仕様をある程度きちんと確定した方が効率がいいし、精神衛生上もいい。

急がば回れ、だろ。

っていうか、マ板的な話題になっちゃうけど、日本のITにデスマが多い理由の一つは
最初に仕様を確定することの重要性をクライアントに理解させることに失敗してるから。
0134デフォルトの名無しさん2015/12/05(土) 17:43:34.13ID:TUTr6vYI
そう
仕様がはっきり決まってるのにその範囲をきっちり設計できないのは単なる能力不足であり非効率
流行りのアジャイルはその一度にはっきり決める範囲をなるべく小さくして方向修正をしやすくしようというものだ
いずれにせよ、「はっきり決まってる範囲」についてはきっちり設計できるのが前提だ
そこを履き違えてはいけない
0135デフォルトの名無しさん2015/12/05(土) 17:48:23.96ID:KdBqlpoa
>>133
現代的な開発手法とは真逆の結論だね
なぜそうなったのか興味深い
0136デフォルトの名無しさん2015/12/05(土) 18:06:09.35ID:7d38zssS
>>135
現代も糞もないから。
本気でそう思ってるんならお前さんオモチャみたいなプログラムしか作ったことないんだろ。

建築でも造船でも何でもそうだけど、犬小屋レベルなら思いつきでスクラップ&ビルドで何も問題ないけど
ある程度の規模と複雑性を超えたら気軽にそんなことできない。
0137デフォルトの名無しさん2015/12/05(土) 18:16:09.67ID:TUTr6vYI
視点の違う話であり、どっちも正しい
仕様のはっきり決まっていないものを作るのも後で大きな変更をするのも不可能
でも最初に全部確定させるのは(客がビジネス上の目標を達成することを開発の目的とするなら)難しい
じゃあどうするか?→少しずつ確定させてその都度作ろう
というのが現代的な結論
0138デフォルトの名無しさん2015/12/05(土) 18:31:12.60ID:bOfmuCEI
ソシャゲと据え置きゲーと業務系と制御系で同列に語れないだろ
いや、客の下請けになるのと自社製品のほうがデカイか
0139デフォルトの名無しさん2015/12/05(土) 19:24:10.39ID:KdBqlpoa
>>136
大規模であるほどステークホルダが増え開発者の発言力は相対的に弱まりビジネスは複雑化しその変化は速くなる
最初からステークホルダ全員の納得する仕様を作る事など誰にもできない
最初に決めた仕様を顧客を無視して貫き通すなんてどんなに強大な開発会社だってできない
最初に仕様をがっちり固めてそれに執着する事ほど愚かな行いは無い
仕様は流動的で全体を見通す事は出来ないものであるという当たり前の事実を認める
変化に強く拡張性の高い柔軟でしなやかな設計と管理可能な規模に制限されたイテレーティブな設計開発プロセスでもって顧客の要求に応えさらには顧客の気付かなかったビジネス上の提案を行う
これが先進的な現代のシステム開発の姿だ
そして変更に対して柔軟で拡張性の高い設計は自然とSOLIDなどといった良い習慣を実践するシンプルで可読性の高いプロダクトを生産する事はいまや周知の事実である
0140デフォルトの名無しさん2015/12/05(土) 19:35:08.76ID:HGRqjVZT
方法論はその手のスレで語りたまえ
0141デフォルトの名無しさん2015/12/05(土) 20:56:33.71ID:0om6DbSR
>>119
入れ子構造になっていたわけですね
なかなか理解できなかったので助かりました
ありがとうございます
0142デフォルトの名無しさん2015/12/05(土) 22:36:44.86ID:EmMdnWJI
仕様なんてすぐ変更可能だろ。
きちんと設計していれば
0143デフォルトの名無しさん2015/12/05(土) 23:17:34.13ID:XLAN3beo
string str = "アヘアヘ";
byte[] data = Encoding.UTF8.GetBytes(str);
をループで100回くらい実行すると何十秒も掛かるのは何故?
速くする方法を教えてケロ
0144デフォルトの名無しさん2015/12/05(土) 23:22:25.35ID:Pp+uAKFK
>>143
問題はそこだけじゃ無いと思うんだが
ソース全体見ないとなんとも
0145デフォルトの名無しさん2015/12/06(日) 00:23:16.50ID:z5tP4Enx
>>144
調査してみます。ありがとうございました。
もう一つ教えて下さい。
string の配列 strが有るときに、その全ての要素の末尾の '\n' をトリム
したいのですがLINQで書く方法を教えて下さい。
0146デフォルトの名無しさん2015/12/06(日) 01:42:11.95ID:wT98bk2q
全ての要素に対して特定の射影操作を行った結果を返す→Enumerable.Where
末尾の連続する指定文字を削除→String.TrimEnd
後はこれらを組み合わせるだけ
0147デフォルトの名無しさん2015/12/06(日) 02:14:26.24ID:Iw0HekNi
>>146
WhereじゃなくSelectな
0148デフォルトの名無しさん2015/12/06(日) 02:15:30.88ID:oN/DZACa
>>143
そんなもん速くすることに何の意味があるのか教えてケロ
0149デフォルトの名無しさん2015/12/06(日) 02:29:23.41ID:z5tP4Enx
>>145 >>146
出来ました。有難うございました。
0150デフォルトの名無しさん2015/12/06(日) 02:36:25.51ID:WQnzekof
最近はこいつ専用の質問スレになっているな
0151デフォルトの名無しさん2015/12/06(日) 02:53:04.29ID:3F5n1eU+
>>150
別人ですよw
前も間違えられましたw
0152デフォルトの名無しさん2015/12/06(日) 03:36:35.64ID:z5tP4Enx
>>150
こいつって言うなよ。お前はドイツだ?
0153デフォルトの名無しさん2015/12/06(日) 11:14:49.31ID:AT77pBch
オランダ
0154デフォルトの名無しさん2015/12/06(日) 17:12:11.55ID:W+p7bgVb
>>42について誰か教えて下さい
ずっと調べてたのですがよくわかりません
お願いします
0155デフォルトの名無しさん2015/12/06(日) 17:26:29.52ID:W+p7bgVb
>>40にかんしてはわかりました
しかしデータテーブルだとデータ取得などでキャストがものすごく多く扱いづらかったので他の方法はないかなと
0156デフォルトの名無しさん2015/12/06(日) 18:13:57.64ID:Iw0HekNi
>>154
>>42の何についてだよ
0157デフォルトの名無しさん2015/12/06(日) 20:09:51.90ID:C3DS1n+h
開発環境について質問です。
win7だとVisual Studio以外だと現在どのような環境があるのでしょうか?
0158デフォルトの名無しさん2015/12/06(日) 20:30:13.83ID:q8EgO26J
Visual Studio Code
0159デフォルトの名無しさん2015/12/06(日) 22:25:05.46ID:PCHXXrmx
小規模だとEFを使わないほうがいい理由と
自作クラスをDGVでソートする場合に
bindinglistの自作以外に方法があるのかについてです
同じDBを複数のプロジェクトで使うため、ライブラリ化して簡単にDGVに表示する方法を模索中です
0160デフォルトの名無しさん2015/12/06(日) 23:16:02.61ID:wT98bk2q
まだやってたのか
設計を低いレベルで考えすぎ
難しいこと考えずにDB使いまわしたいんならリポジトリパターンでも使ってラップしてしまえ
DGVとの受渡くらい手で書いても大したことじゃない
こういうのはきちんと守るべき大枠とくだらない実装の詳細を分けて考えるのが大事
0161デフォルトの名無しさん2015/12/07(月) 01:26:06.62ID:2NgeMT2J
リポジトリパターンは既に作ってます
ただ、それをDGVでソートできるように
どう受け渡すかがわからなくて悩んでるところなんです
0162デフォルトの名無しさん2015/12/07(月) 07:04:12.11ID:H/Y7gwjC
グーグル対オラクルのJava訴訟、米最高裁がグーグルの上告を棄却--Reuters
http://japan.cnet.com/news/business/35066650/

Javaがオラクルの所有物に過ぎないとばれた今、
C#がマイクロソフトの所有物でも普及に支障はなくなりましたか?

やっぱりオラクルvsマイクロソフトならマイクロソフトが勝つに決まってるし、
JavaよりC#の方が将来有望ですか?
0163デフォルトの名無しさん2015/12/07(月) 09:32:41.12ID:yCfuxHba
グリッドビューのヘッダーにクリックイベントでもいれればいいじゃん

クリックされたら指定のソートで帰ってきたデータをDataSourceにbind
0164デフォルトの名無しさん2015/12/07(月) 11:46:23.80ID:2NgeMT2J
クリックされたらLINQでデータソートは考えたけど
DGV作るたびにその処理を書かないといけないので諦めました
DALを参照したら、あとはソースをDGV.DataSourceに突っ込むだけで
ソートも編集もできるようにお膳立てしたいんです
既存の複数のプロジェクト、今後作るプロジェクトで
参照するだけでさくっとやれるようにしたいんです
で、それをするには自作BindingListViewってとこにたどりついたんですが
他に方法はあるのか知りたいという段階です

DataTableは一旦DBから全データ取り出して実体化したものだから
せっかくのデータベースも台無しだし
あととにかく記述が面倒なのと
フォーム上にテーブルごとにアダプターやらなんやら大量に作ることになるのが
目障りなんですよね
じゃあ、コードで生成するとなると
Rows["ほげ"]ということをしないといけなくなるのでそれも色々面倒
0165デフォルトの名無しさん2015/12/07(月) 11:55:40.97ID:2NgeMT2J
>こういうのはきちんと守るべき大枠とくだらない実装の詳細を分けて考えるのが大事
やっぱこれにつきますかねぇ
なんかゴリ押しでやってた時のほうが目的のものがすぐ作れてた
どうでもいいこと考えすぎかな
0166デフォルトの名無しさん2015/12/07(月) 20:06:56.84ID:Alz7fRso
結局プロトタイプはゴリ押しのほうがいいんだよな
0167デフォルトの名無しさん2015/12/08(火) 18:30:32.51ID:pLN3UA33
LockBitsを使ってBitmapのRGB値を取得しようとするなら
unsafeは使ったほうが良いのでしょうか?
0168デフォルトの名無しさん2015/12/08(火) 20:40:53.22ID:tm5OKDCJ
Marshal.Copyで丸ごと(orストライド単位で)配列にコピーでいい
もし「アプリとして一通り動作するようになった段階で」許容できないほど遅かったらポインタにすればいい
01691672015/12/08(火) 21:57:14.02ID:Knxj4/bI
>>168
ありがとうございます
そうします
0170デフォルトの名無しさん2015/12/09(水) 19:28:35.96ID:M0xrPV16
下記のようなListから、Aの要素がいくつあるか調べる方法は
ありますでしょうか?

List<string> data = new List<string>();
data.Add("A");
data.Add("B");
data.Add("A");

for文で地道に処理すれば数えることはできますが、
今のご時世、ラムダ式などで短く書けるのではと思い。

よろしくお願いします。
0171デフォルトの名無しさん2015/12/09(水) 19:37:40.54ID:svoVX7AQ
>>170
data.Count(str => str == "A")
0172デフォルトの名無しさん2015/12/09(水) 19:45:54.70ID:rknXDi2e
data.FindAll( [条件判定のデリゲート] ).Count
でも行けるけど(たぶん)、Linq の方が好みだな。
01731702015/12/09(水) 19:51:16.06ID:M0xrPV16
やはりスマートな書き方があったのですね。

参考にさせて頂きます。
ありがとうございます。
0174デフォルトの名無しさん2015/12/10(木) 19:44:47.35ID:/nCMdU4k
下記ページのTCPサーバーのサンプルソースで、下に書かれているように
Listenを閉じずに継続させたいのですが、具体的にどこをループさせればいいかわかりません。
よろしくお願いします

http://dobon.net/vb/dotnet/internet/tcpclientserver.html

>>もし終了させずにListenを継続する場合は、リスナを閉じずに、
>>再びAcceptTcpClientメソッドを呼び出してください(ループさせることになるでしょう)。
0175デフォルトの名無しさん2015/12/10(木) 20:57:53.52ID:x7zD0EOz
using の行を1行目として、33-91 行じゃねーの?
いくら何でもこれは自分で理解出来るようにならないと、ソケットプログラムなんて無理だぞ。
01764232015/12/10(木) 20:58:57.17ID:t7TUm6W9
>>174
閉じる ⇒ 接続要求があったら受け入れる
に戻ればいいだけ
0177デフォルトの名無しさん2015/12/10(木) 21:03:05.35ID:zy2e4Bxw
データベースと接続するクラスを作ったのですが、
オブジェクト指向的には、
インスタンスを作って呼び出す方が良いのでしょうか?
使用するクラスで継承させる方が良いのでしょうか?

趣味グラマーなので、専業の方が
どうしているのか気になりまして。。。
0178デフォルトの名無しさん2015/12/10(木) 23:37:47.90ID:hl2uxfTr
クラスは一つしか継承できんのだぞ
そんなどうでもいいもの継承すんなボケェ
01794232015/12/11(金) 06:49:57.63ID:7DodXpQ6
>>177
マルチうざい
http://peace.2ch.net/test/read.cgi/tech/1445609364/438
01801742015/12/11(金) 10:47:54.83ID:8ztrqOW8
>>175-176
Loopさせると期待通りの動作はするのですが、フォームが固まってしまうんですよね
0181デフォルトの名無しさん2015/12/11(金) 12:06:53.25ID:lQa1iSl4
どんなフォームアプリケーションだろうとイベントハンドラで処理戻さなけりゃ固まる
いくらなんでもこれは自分で理解できるようにならないと、フォームプログラミングなんて以下略
01824232015/12/11(金) 12:45:33.07ID:7DodXpQ6
>>180
それはフォームの処理をする奴がいなくなるから
今まではメインスレッドがフォームの処理をやってたけど、メインスレッドはクライアントからの接続待ちとクライアントとの通信しかしてない
C# フォーム 固まる
とかで検索すれば対処法とか載ってるから見てみて
0183デフォルトの名無しさん2015/12/12(土) 16:30:55.13ID:Tj9TliY5
Visual C++ / C++/cliのHTTPクライアントを作成しているが、
うまくいかないURLがあります。

■概要
「http://a.com」へアクセスしてレスポンスbodyを見ると、
文字化けした文字が1文字のみ(�)入っていて、正常にHTMLを取得できません。
なお「http://b.com」「http://c.com」などの他サイトの場合、正常にHTMLを取得できます。

■質問事項
上記が発生する原因と対策をご教授下さい。


■環境
Microsoft Visual Studio Community 2013 Update 4
Visual C++ / C++/cli
Windows8.1

■ソースコード
http://ideone.com/5nTej7

大変困ってます。先輩方ご教授のほどお願い致します。
0184デフォルトの名無しさん2015/12/12(土) 17:37:40.14ID:V9rSzP+i
♩はじめて〜のa.com
0185デフォルトの名無しさん2015/12/12(土) 23:59:25.81ID:k5LGN9PP
Hogeクラスをahoge,bhoge,choge・・・・と20回インスタンス化し、20すべてのインスタンスに対しHogeのメソッドFooを呼び出したいと思っています
この場合、次のように20行書くしかないのでしょうか?
ahoge.Foo();
bhoge.Foo();
choge.Foo();
・
・
・
素人感覚としてもう少し楽な方法があるのではないかと感じてしまいますがどうなのでしょうか、よろしくお願いします
0186デフォルトの名無しさん2015/12/13(日) 00:03:26.38ID:Wcw8JgGx
誰かわかりませんでしょうか
0187デフォルトの名無しさん2015/12/13(日) 00:24:37.34ID:pukhMxdP
foreach (var hoge in Enumerable.Range(0, 20).Select(_ => new Hoge())) hoge.Foo();
0188デフォルトの名無しさん2015/12/13(日) 00:39:11.92ID:5FRgwNtE
流石にfor文のほうが好きだなw
2文になっちゃってるし
0189デフォルトの名無しさん2015/12/13(日) 00:40:37.73ID:Be8+1Kca
Androidでは、メインスレッド・UI(描画)スレッドの2つあって、
各スレッドで、出来ることが厳密に分けられている

通信アプリでは、同期・非同期の2つある。
同期では返信が来るまで待つが、
非同期では待たずに、関数がすぐにリターンして、
後から登録しておいた、ハンドラを呼び出してもらう

サーバーではListenしておいても、接続要求が来たら、
そのソケットではなく、その場でコピーしたソケットを使って、
元のソケットはそのまま、Listenを続ける
0190デフォルトの名無しさん2015/12/13(日) 00:42:24.59ID:dHM9DT2y
C#を使ってチャットに入室したいのですができるでしょうか?
0191デフォルトの名無しさん2015/12/13(日) 00:45:16.72ID:Wcw8JgGx
>>183
どなたかご教授お願いします。難易度高いでしょうか・・
0192デフォルトの名無しさん2015/12/13(日) 00:47:06.91ID:Z/gGXySu
>>185
var hoge[] = { new Hoge(), new Hoge(), ... };
foreach( var item in hoge ) item.Foo()
の方が好みだな。
0193デフォルトの名無しさん2015/12/13(日) 00:52:59.06ID:Z/gGXySu
>>191
これってそもそも C++/CLR じゃないの? (ここは C# のスレ)
a.com が、きちんと応答を返しているかを確認してる?
このコードが何をしているのかを説明出来る?
0194デフォルトの名無しさん2015/12/13(日) 00:59:25.75ID:wcpRGnCg
>>187
ありがとうございます
オブジェクト名に変数を使うのですね
ただSelect(_ => new Hoge()の部分が私には難しく、なぜオブジェクト名が返ってくるのか不思議に思えてしまいます
特に_から始まるラムダ式を初めて見たため_が何を意味しているのか分からず、またここに出てくるnewが何を意味しているのかよくわからないのです
できれば少し教えていただけないでしょうか
0195デフォルトの名無しさん2015/12/13(日) 01:06:33.93ID:Wcw8JgGx
>>193
はい、HTTPレスポンスヘッダーとステータスコード=200は通常ですが、
中身だけ一文字文字化けで異常なのです。
原因と解決方法をご教授お願いします。
0196デフォルトの名無しさん2015/12/13(日) 01:25:24.42ID:qqdlpJsw
>>185
素朴さと効率の面での着地点はおそらくこれ
for (int i = 0; i < 20; i++) {
new Hoge().Foo(); // 20回呼ばれる
}
0197デフォルトの名無しさん2015/12/13(日) 01:33:58.65ID:nACJdPad
これ20回Fooを呼び出すのが目的なのか、20個のインスタンスからそれぞれFooを呼び出すのが目的かによって違うよね
0198デフォルトの名無しさん2015/12/13(日) 01:39:36.45ID:wcpRGnCg
ああ、そういうことか
なぜこれで動くのか?なぜnewが挟まってるのかなあ・・・?と思ったら
0199デフォルトの名無しさん2015/12/13(日) 01:41:04.49ID:qqdlpJsw
> 20回インスタンス化し、
> 20すべてのインスタンスに対しHogeのメソッドFooを呼び出したい

とモロに書いてあるけど?
一個のインスタンスに20回Foo呼び出すなら>>185の不満は出ないはず
0200デフォルトの名無しさん2015/12/13(日) 01:42:11.81ID:qqdlpJsw
あ、>>199は>>197へのレスね
0201デフォルトの名無しさん2015/12/13(日) 01:44:22.13ID:nACJdPad
>>199
その20個のインスタンスを使いまわすなら>>196みたいな書き方にはならないんじゃね?
まあ質問者が例の子だからこれ以上はレスやめとくけど
0202デフォルトの名無しさん2015/12/13(日) 01:53:34.04ID:Be8+1Kca
>>194
以下のように、ラムダ式の引数を使うなら、
x => x * x;

使わないなら、_ を使う。
_ => new Hoge()

単に20回、Hoge インスタンスを作りたいのだろう
0203デフォルトの名無しさん2015/12/13(日) 01:57:52.55ID:wcpRGnCg
ごめん、質問の書き方がほんと悪かった
0204デフォルトの名無しさん2015/12/13(日) 05:58:27.26ID:cRCiNpbO
俺も>>192のが柔軟さもあるから好みだなあ
0205デフォルトの名無しさん2015/12/13(日) 09:30:13.43ID:Wcw8JgGx
>>183
どなたかご教授お願いします。
0206デフォルトの名無しさん2015/12/13(日) 09:51:50.02ID:sFQuc/mb
>>205
Visual C++ / C++/cliのHTTPクライアント [無断転載禁止]c2ch.net
http://peace.2ch.net/test/read.cgi/tech/1449902256/
0207デフォルトの名無しさん2015/12/13(日) 10:06:49.10ID:cRCiNpbO
>>205
このスレC#のスレなんだよね…そのくらいはスレタイトル見れば普通わかるよな
途中で指摘までもらってるのに謝罪もなく続ける神経ってどうなのか
マルチポストという最低行為までしてるし恥を知れと言わせてもらうわ
回答求めるなら人として最低限のルールやマナーくらい守ろうや
0208デフォルトの名無しさん2015/12/13(日) 12:28:09.88ID:Z/gGXySu
そうなんだよね。
低姿勢に見えるけど、実はそうじゃないし。教えてあげる側にも必要な情報があるって事を理解してないし。
そもそも日本語もおかしいしな。
0209デフォルトの名無しさん2015/12/13(日) 13:02:04.59ID:Wcw8JgGx
>>207
>>208

自力で解決しました。ありがとうございます。
0210デフォルトの名無しさん2015/12/13(日) 13:40:22.11ID:yq3eT/D1
ゆとりは敬語=低姿勢だと勘違いしてるんだろ。
それはそうと、他スレでもそうだが、ここ数週間でこの手の輩
--掲示板に書けばデバッグしてもらえると思っている池沼ゆとり--が急に増えたよな。
何があったのかは分からんが。

マルチしているのなら、マルチ先にも取り下げを明示するのが義務。
質問をした以上、自己解決した場合もあらましは説明するのが筋。
ID:Wcw8JgGx は死ね。
0211デフォルトの名無しさん2015/12/13(日) 14:50:18.19ID:jSlwiwGB
>>210
2ch脳全開だなお宅w

しかし、>>210みたいに相手(他人)にばかり義務を負わせて
テメエは文句を付けるだけで何も義務を負わないことに何の疑問も感じないどころか
正論ぶってるつもりになって自己陶酔してる馬鹿ってどういう神経してるのかね。
0212デフォルトの名無しさん2015/12/13(日) 15:05:43.34ID:S5USnmm8
Unity君はunityスレでやってくれないかとだけ思う
0213デフォルトの名無しさん2015/12/13(日) 15:25:01.50ID:EcvSK0Uh
呆れ返って無視を決め込んでる大多数の人に比べたら
ちゃんと書いてくれてる>>210は親切な人だよ
0214デフォルトの名無しさん2015/12/13(日) 17:00:34.08ID:XIYdqDB0
まあここまで酷いと何言っても無駄だろうけどなぁ
0215デフォルトの名無しさん2015/12/13(日) 18:31:41.06ID:ATkL4mrR
あるフォームアプリケーションを作成しています。開始ボタン、停止ボタン、表示部で構成され、開始を押すとある相手先に要求コマンドを投げてデータを返してもらいます。
0216デフォルトの名無しさん2015/12/13(日) 18:32:20.53ID:ATkL4mrR
停止を押すまではこの要求コマンドを投げてデータを受け取り、表示部に代入する処理をループで回し続けたいのですがどうすればよいでしょうか?
0217デフォルトの名無しさん2015/12/13(日) 18:35:10.91ID:ATkL4mrR
マルチスレッドを調べたのですが難しくて…また、別スレッドで表示部に代入しようとすると怒られるし…。具体的な解決法があれば教えていただけないでしょうか?
0218デフォルトの名無しさん2015/12/13(日) 18:39:41.21ID:+vfdgVrV
通常はThreading.TimerとBeginInvokeを使いますね
0219デフォルトの名無しさん2015/12/13(日) 19:02:55.61ID:7+L9FXPQ
初心者じゃないならawait使った方が楽です
0220デフォルトの名無しさん2015/12/13(日) 19:20:44.74ID:yq3eT/D1
>>211
この手の馬鹿に答えること自体が迷惑だということが分からないのなら2ch止めるべきだな。
お前だけ意見が浮いているのは、お前が回答したことがないクレクレ君だからだよ。
ID:jSlwiwGB も死ね。(= ID:Wcw8JgGx かもしれんが)

お前は答えることが義務だと勘違いしている馬鹿か、そういうことにしたいアフィモドキだと思うが、
お前らteratailから来てるキチガイなの?マジで最近多いんだけど。他スレでも。
0221デフォルトの名無しさん2015/12/13(日) 19:28:09.17ID:Z/gGXySu
お前も落ち着け。

>>215
初心者なら、タイマーイベントで、要求投げる、受ける、表示をやってみればいいんじゃね。
投げる→受けるの時間が長いと画面が固まる(時間が長くなる)けれど。

最近なら Task とか使うんだっけ?
0222デフォルトの名無しさん2015/12/13(日) 20:03:41.07ID:l4YWW2h+
>>220
2ch脳全開だな。

しかし、こういう馬鹿の「この俺様が答えてやるのだからお前は俺様に礼儀を尽くせ」って
思考回路って何様のつもりかね。
馬鹿じゃないの。

誰もお前に回答して下さい、なんて頼んでねえだろ馬鹿。

テメエがテメエの欲求を満たすために頼まれもしないのにテメエの意思で書いてるに過ぎないのに
それを忘れて自分が開いてに対して何かを要求する権利を持ってるかのように錯覚する>>220みたいな
エゴイストって馬鹿だと思うし理解できんわ。
0223デフォルトの名無しさん2015/12/13(日) 20:06:05.15ID:1MCMp/1v
webformで、
例えばlistviewやgridviewを使ってtableを作ったとして、javascriptでtableエレメントに行追加等の操作しても
それをサーバ側で拾う方法って無いですよね?
行追加自体をサーバ側でやって、レンダリングするしか無いですかね。

逆に.net MVCだとバインディングはname属性の規則性でバインドされるんで
name属性を指定して、javascriptで追加してあげれば、コントローラーで取得できるんですかね
0224デフォルトの名無しさん2015/12/13(日) 20:15:10.40ID:RL8ekZoR
>>217
Rx勉強しろ
とっかかりはむずいけど慣れたら超便利
0225デフォルトの名無しさん2015/12/13(日) 20:31:31.33ID:yq3eT/D1
>>222
理解できなくていい。ただお前は去るべきだ。

2chが嫌いで他サイトが好きなのなら、他サイトで質問するべきだ。
2chで質問している以上、2ch流の対応をされても文句を言える筋はない。
そしてお前自身2chが嫌いなようだから、お前は2chを止めるべきだ。
0226デフォルトの名無しさん2015/12/13(日) 20:37:38.58ID:l4YWW2h+
>>225
よく分からん独りよがりの理屈。

>>225みたいな奴っていかにも今時の一人っ子のわがまま坊主って感じ。
ゆとり?
それお前のことだろ馬鹿。
0227デフォルトの名無しさん2015/12/13(日) 20:43:58.56ID:+vfdgVrV
Rxとかいう失敗作
0228デフォルトの名無しさん2015/12/13(日) 20:48:09.66ID:l4YWW2h+
しかし、お前は自分が何か特権を持ってると錯覚してるぞと言ってるそばから
>>225みたいな勘違いした特権意識丸出しのレスができるって病膏肓に入る馬鹿ってこういうのを言うんだね。
0229デフォルトの名無しさん2015/12/13(日) 20:50:08.86ID:cRCiNpbO
あちゃあ…
自己解決したのに解決した方法も書かずに去るというコンボまで決めちまったのか

マジで恥を知れって
0230デフォルトの名無しさん2015/12/13(日) 22:01:20.19ID:CAQs6xCh
>>222
> この俺様が答えてやるのだからお前は俺様に礼儀を尽くせ」

横からすまん
何か知らんがこの場合は回答者と質問者の関係だろ?
だったら質問者は回答者に敬意払っていいんじゃないの?w
乞食が偉そうにしても何ももらえないぞw
0231デフォルトの名無しさん2015/12/13(日) 22:47:07.40ID:yq3eT/D1
発狂具合からして、本人としかw

ちなみに、他スレを見てないと気づかないと思うが、正直言ってC#のスレはかなりマトモだ。
だからこの手のキチガイ逆ギレクレクレ君は今後とも来る。気を付けた方がいい。
以下参考。最近おかしな奴が急に増えた。居着かれても困るだろ。

【JavaScript】1から10まで足せません
http://peace.2ch.net/test/read.cgi/hp/1444186237/883-888
【JavaScript】if文は難しくて書けません
http://peace.2ch.net/test/read.cgi/hp/1448293871/162-169
【Java】キャストできません
http://peace.2ch.net/test/read.cgi/tech/1445609364/458-460
【Java】エラーが取れません
http://peace.2ch.net/test/read.cgi/tech/1445609364/489-493
0232デフォルトの名無しさん2015/12/13(日) 22:55:20.15ID:S5USnmm8
pythonとapiにもここのところ妙なの湧いてんだよな
何だろう一体
0233デフォルトの名無しさん2015/12/13(日) 23:47:03.54ID:yq3eT/D1
APIのキチガイ、驚きのハイレベラーだった、、、
> 私は、このスレ民が誰も持ってないVS2015を購入する財力があるんですよ?
> 再三に渡り申し上げていますように、私のコードにはバグが入り込む余地など皆無ですから
http://peace.2ch.net/test/read.cgi/tech/1438695290/765

状況からして、組織的に2chスレを毀損しに来ているとしか思えない。
冬休みに見せかけたひろゆき流というか。
おそらくム板を潰して住民の移動を促したいのだろう。
で、以前teratailの名前を出したら状況が変わった気がしたから、今回も試してみたw

しかし夏休みでもここまで酷くならないのに、(というか夏休みでも大して変わらないのに)
やりすぎでバレバレだろ。
どこか他にム板潰して得する連中っている?
0234デフォルトの名無しさん2015/12/13(日) 23:48:47.66ID:l4YWW2h+
>>230
質問者が回答者に謝意(敬意wは大げさ)を表すのは人として当たり前だと俺も思うが、
自分で答えたくて答えてるにすぎないことを忘れて回答者が謝礼を当然視したり、
>>210みたいに相手に自分の価値観を一方的に押し付けるのは
不遜で勘違いも甚だしいって言ってるんだよ。

神戸でも福島でも誰に頼まれるでもなく自分で好き好んで出かけて行っておいて、
見返りを求めたり被災者のための救援物資を飲み食いする勘違いしたボランティアがいたそうだけど、
そういう馬鹿と同類だな>>210みたいのは。
0235デフォルトの名無しさん2015/12/14(月) 01:11:01.67ID:nsHRL9eA
ものすげえめんどい流れ既に感じるんで全部は答えないよ

> 質問者が回答者に謝意(敬意wは大げさ)を表すのは人として当たり前だと俺も思う

人として当たり前なんて思わない
そんな道徳を押し付けようとしてるんじゃない
そーじゃない

みんなが言っているのはね
君にとっては義務じゃなくて権利だ
こうすればこうしてもらえるよ、というだけ
そうしなければ?
おそらく今後は単に無視され続けるだろう
0236デフォルトの名無しさん2015/12/14(月) 01:15:56.28ID:nsHRL9eA
いや、今読むと>>210さんは「義務。筋。死ね」っていう言葉を使っているねw
だから>>235の「みんなが言ってるのは」部分は取り下げるわ
個人的な感想とだけにしとく
0237デフォルトの名無しさん2015/12/14(月) 01:17:17.95ID:8e/RtXYS
C#の話なんですが

arrayとArrayList型とList型と、
HashtableクラスとDictionaryクラスと
なんで似たようなのがこんなにいっぱいあるんでしょうか

調べた限りでは、
 array: 要素数変更の際には再定義してまるごとコピーし無くてはならない。×
 ArrayList: 非ジェネリッククラスなので使うべきではない×
 List: おすすめ○

 Hashtable: 非ジェネリッククラスなので〜×
 Dictionary: おすすめ○

こんな認識なんですが
例えばarrayが活躍するような状況ってあるんでしょうか。
単にレガシーなだけですか?
0238デフォルトの名無しさん2015/12/14(月) 01:39:56.06ID:18/fwc/d
>>237
ArrayListやHashtableはレガシー。
arrayはC#の配列の基本クラス。
0239デフォルトの名無しさん2015/12/14(月) 01:41:29.03ID:XssrJ5Dg
215-217です。
様々なアドバイス有難うございます。要求コマンドは相手先の返答が変わる可能性を考えて1秒ごとにポーリングする形を取りたいと思っています。
0240デフォルトの名無しさん2015/12/14(月) 01:42:28.38ID:yG0ytcqD
>>237
ジェネリック版が存在する型の非ジェネリック版はレガシーだから使う必要なし
arrayはいわゆる[]で定義する配列のこと?
だったら要素数が固定でコレクション型に存在するメソッド(挿入とか)を使う必要がなければ
簡潔だし速いからまだま使うでしょう。
座標とかの添字アクセスが必要な場合は配列のほうが見やすい
3次元配列でList<List<List>>とかしたくない。
あと今のところListの内部実装は配列だったはず
0241デフォルトの名無しさん2015/12/14(月) 01:43:40.41ID:8e/RtXYS
>>238
arrayはListのベースクラスになっている感じでしょうか。
ともあれ○つけたので間違いないということで安心しました
ありがとうございます!
0242デフォルトの名無しさん2015/12/14(月) 01:44:56.55ID:XssrJ5Dg
そこで開始ボタンを押したというイベントで、無限ループのポーリング要求状態を維持。ボタン操作は固まらせずに停止ボタンイベントでループ脱出としたいです。
0243デフォルトの名無しさん2015/12/14(月) 01:47:01.19ID:8e/RtXYS
>>240
なるほど…
enum使いようなものにはarrayの方があっているという感じでしょうか。
ありがとうございます!
0244デフォルトの名無しさん2015/12/14(月) 01:48:32.61ID:XssrJ5Dg
threadやtask、invoke、delegateなどを徹底的に調べたのですが無限ループを片タスクに任せつつ、返答が変わったらすぐに表示部に反映というのが実現できません。
0245デフォルトの名無しさん2015/12/14(月) 01:50:09.83ID:XssrJ5Dg
開始ボタンイベントの中に無限ループがある状態です。具体的な書き方をご教授くださいm(_ _)m
0246デフォルトの名無しさん2015/12/14(月) 01:55:50.98ID:yG0ytcqD
まず自分が書いたコードを出しなさいよ。
質問の直後に218さんがBeginInvokeのヒントをくれてるのになにが徹底的に調べただ
0247デフォルトの名無しさん2015/12/14(月) 01:58:37.94ID:pR0q+hJa
掛け算などを徹底的に調べたのですが
6*7が分かりません
具体的な正解をご教授くださいm(_ _)m
0248デフォルトの名無しさん2015/12/14(月) 02:02:17.35ID:18/fwc/d
>>243
予め配列の長さが固定で分かってる単純な配列の場合はarray(int[]とか)。
後からデータを足すとか、長さが不定の場合はList<>。
0249デフォルトの名無しさん2015/12/14(月) 02:04:34.11ID:30h96I3U
>>245
ここはチャットじゃないんだから書き込みもうちょっとまとめような
0250デフォルトの名無しさん2015/12/14(月) 03:21:55.90ID:ccU2pCxg
変なのが湧いてるなあ全く
0251デフォルトの名無しさん2015/12/14(月) 05:49:23.31ID:V5qe/+59
>>217
深く考えず
・async/await
・dispacherメソッド定型呼び出し
・astask
・非asyncからasyncやtaskなどをawait呼び出ししない
・同様にtask.waitなどしない。async/awaitで強引に並列処理を実装しようとしない
・コンソールアプリとGUIではawaitの挙動が違う(語弊あり)
・むしろ全部非同期にする

を守ってasync/awaitすれば、優しい世界が待ってるよ。
こいつらの動作原理を知識0から真面目に知ろうとするとガチでで20時間ぐらいかかるから、あまり深く考えなくて良い
0252デフォルトの名無しさん2015/12/14(月) 22:10:44.05ID:daRnSbpo
public readonly static string FieldName =
0253デフォルトの名無しさん2015/12/14(月) 22:12:44.43ID:daRnSbpo
public readonly static string FieldName  =  " ssss" ;
と
public static string PropertyName {get;}  =  " ssss" ;
の挙動上の違いがわかりません
上がフィールドで下がプロパティ以外であること以外の違いについて教えて下さい
0254デフォルトの名無しさん2015/12/14(月) 22:29:03.79ID:AA+Gl2Rs
>>253
フィールドとプロパティの違いに起因する挙動の違いとしか言いようがない
中でリフレクションを使っていて、プロパティじゃないと反応してくれないライブラリはよくある
0255デフォルトの名無しさん2015/12/14(月) 22:34:44.70ID:daRnSbpo
>>254
なるほど
有難うございます
0256デフォルトの名無しさん2015/12/14(月) 22:42:53.30ID:XssrJ5Dg
説教くさいやつなんなの
答える気ないなら書き込むなよな
0257デフォルトの名無しさん2015/12/14(月) 22:54:55.73ID:1ewiA+as
>>253
CLS準拠してるかしてないか
0258デフォルトの名無しさん2015/12/14(月) 23:00:14.32ID:dPco7zPj
>>257
文盲は去れ
0259デフォルトの名無しさん2015/12/14(月) 23:03:21.08ID:4hBSCyDp
先日のキチガイ ID:Wcw8JgGx = ID:jSlwiwGB = ID:l4YWW2h+
本日のキチガイ ID:ATkL4mrR = ID:XssrJ5Dg
0260デフォルトの名無しさん2015/12/14(月) 23:11:35.90ID:30h96I3U
説教のつもりはなかったんだが…気を悪くしたならすまんかった
0261デフォルトの名無しさん2015/12/14(月) 23:33:34.30ID:+VeChPZq
↓ID変え忘れちゃったのかな?w キミは回答者にリスペクトなさ杉だょ

256 :デフォルトの名無しさん:2015/12/14(月) 22:42:53.30 ID:XssrJ5Dg
説教くさいやつなんなの
答える気ないなら書き込むなよな
0262デフォルトの名無しさん2015/12/14(月) 23:51:17.16ID:ccU2pCxg
頭の方も少しは進歩させてくださいよォーーーーッ
0263デフォルトの名無しさん2015/12/15(火) 10:33:52.75ID:DB3m4Koh
ちゃんと話を聞いてまとめれば答える気になる奴も少しは出てくるだろうにな

今は「知ってるが、お前の態度が気に入らない」の心境だよなみんなw
0264デフォルトの名無しさん2015/12/15(火) 12:04:31.56ID:sIyUSg96
可愛い女の子が言ってるなら許す
0265デフォルトの名無しさん2015/12/16(水) 12:01:18.73ID:yfneKelH
どっぷりVBだったのですが、もともとC++が書けるのでC#を勉強し始めました。
んで、さっそく超初歩的なところで恐縮なのですが・・・

フォームにボタンを置いて、Clickイベントの中身を書こうと言うとき
VBだったら、コードウィンドウの最上段の左コンボでボタンオブジェクトを選択し
右コンボでイベント名を選択すると、勝手にスケルトンが作られました。

C#のとき、どうしたらスケルトンが出来ますか?
フォームデザインのプロパティのイベントで、イベント名をダブルクリックする以外に
コードウィンドウでラクチンにイベント書きたいのですが。
0266デフォルトの名無しさん2015/12/16(水) 12:19:16.73ID:St9ccaht
>>265
無理
どうしてもエディタでやりたいならコンストラクタで
button.Click += [Tab] と入力する
0267デフォルトの名無しさん2015/12/16(水) 13:05:18.33ID:15RxssU8
デザイナでフォームにボタンを置いたならダブルクリックの方が早いし
コードでボタンを追加したならそのまま.Click +=って入れた方が早いし
なので一々ドロップダウンから云々ってのの便利さが分からない
0268デフォルトの名無しさん2015/12/16(水) 14:06:44.43ID:yfneKelH
デザイナに移りたくないし
コンボの中でイベント一覧が見れて便利なんだが・・・
(確かにオブジェクト名の次にドットを打てば出てくるが、メソッドやプロパティもごっちゃだし)

なんとなくVBよりもコードが冗長になるのは、明確化との引き替えなのかなぁ
メソッドであるのかプロパティであるのか意識しないといけないのは面倒だなぁ
→ 末の () が必要かどうかはオブジェクトの素性を知らないと分からない

int i;
<中略>
if(!i) 〜 も通用しないんだな、boolでないと叱られて。C++の派生のくせに

あと DataGridView の Cell 型の Value のように、オブジェクト型で出てくるのも
ラフに比較できなくて不便だな。== は叱られるし、かといって equals 使うと型判定が厳密すぎるし
0269デフォルトの名無しさん2015/12/16(水) 14:09:30.44ID:yEzHguVk
>なんとなくVBよりもコードが冗長になる

はっはっは
お冗談がお上手だ
0270デフォルトの名無しさん2015/12/16(水) 14:37:57.82ID:a0Y6Pfc6
>>269
そこは本当。
VBにはHandles付の変数ってのがある。

そのくせイベントやデリゲートに+=、-=が定義されてなかったりして何がしたいんだかよく分からんけど。
0271デフォルトの名無しさん2015/12/16(水) 14:47:37.27ID:a0Y6Pfc6
間違えたHandlesじゃなくてWithEventsだw
0272デフォルトの名無しさん2015/12/16(水) 15:31:29.96ID:usEKDPLn
デザイナに移りたく無かったら、全部自分で記述すれば良いだけかと
インテリセンスで出てくるし
0273デフォルトの名無しさん2015/12/16(水) 15:42:17.51ID:yfneKelH
VBだと
  Dim c As New MyClass
と出来るところ、C#だと
  MyClass c = new MyClass();
と「MyClass」を二度もタイプしないといけないの?

あと、「(」が物凄いネストになりやすいな
キャストした結果のメソッドを使いたいときは、キャストの外側を () で括らないといけないあたりも微妙に不便
(VBのCtypeのほうがマシな気も)

if の{} は C++ 同様に相変わらず省略可で、一瞬ヒヤっとしたり
0274デフォルトの名無しさん2015/12/16(水) 15:44:16.48ID:yfneKelH
>>270
AddHandler だね、VBでは。

いちいち += しないといけないのも微妙に不便だし
いったん書いたイベントコードを削除するとき、 += の部分もセットで手で消さないといけない。

フォーム側でイベント作ったときは、+= があっち側のコードにあるし
0275デフォルトの名無しさん2015/12/16(水) 15:52:22.24ID:s50ZsdUA
>>273
new入れたら候補出るだろ
嫌ならvar使え
0276デフォルトの名無しさん2015/12/16(水) 17:53:38.00ID:++aKhWi5
C#6.0 が出てることを今知った
プロパティ周りが改善されてるっぽくて期待
あとはメモリ管理(特に Bitmap のリソースリーク(?))と
64bit 版でポトペタできるようになることと
CLI 上で動くスクリプト言語が充実してくれればいうことはない

どうでもいいけど C++ と簡単に連携できるスクリプト言語を教えておくれ
正規表現/文字列処理とかファイル処理がちょっとしんどい
かと言って python や ruby だとちょっと規模が大きい
scheme 系はそれそのもので使うのはいいけど
組み込みだとシンタックスが違いすぎて違和感がある
02772762015/12/16(水) 17:56:57.27ID:++aKhWi5
あばばスレ違いだった
>>276 の下半分は無視してください
0278デフォルトの名無しさん2015/12/16(水) 17:57:57.55ID:Aaq31spz
C#はマルチロールな言語だから、特定のフレームワークやIDEに強く依存するような機能は控えられてるんだよ
今や主力は完全にASP.NETに移ってるし
0279デフォルトの名無しさん2015/12/16(水) 21:27:02.80ID:B4+Sd+fc
嫌ならVB使えよ
いや、ドカタそんな権限は無かったな
失礼した
0280デフォルトの名無しさん2015/12/16(水) 21:31:06.49ID:sgXyEvFI
>>273
ただの慣れと知識不足だな
素早く書きたければReSharperでもいれとけ
0281デフォルトの名無しさん2015/12/16(水) 21:48:22.50ID:6hxUKU2I
WithEvents Handlesはいいよね
C#にも同等の構文を導入すべきだ
0282デフォルトの名無しさん2015/12/16(水) 22:07:18.91ID:yEzHguVk
つーかVBってそれだけだよな
0283デフォルトの名無しさん2015/12/16(水) 22:15:49.12ID:D+5z8iwV
職場で皆VS使っているはずなのにvarは好ましくないと言われるんだが、テキストエディタからでも見ているんだろうか
0284デフォルトの名無しさん2015/12/16(水) 22:46:15.22ID:GLEYjupT
運悪くjavaやってるけどvar使えないのがストレス溜まる

Handlesは参照検索に引っかからないのがちょっと不便
0285デフォルトの名無しさん2015/12/17(木) 01:20:42.25ID:uAOfrDRi
Handelsはオブジェクト名変更のリファクタかけたときにメソッド名が追従しないからめんどい
0286デフォルトの名無しさん2015/12/17(木) 08:19:30.62ID:wWt+W3PI
>>283
IT業界では開発の現場は最先端のプラクティスから10〜15年遅れるって研究がどっかにあった
varが推奨されだしてから何年たったかな
そのうち普及するでしょ
0287デフォルトの名無しさん2015/12/17(木) 08:20:16.53ID:zuQvdIGp
eclipseが使いにく過ぎ
インテリセンスうんこ
0288デフォルトの名無しさん2015/12/17(木) 08:36:44.13ID:IGH7+3HM
>>281
With 〜 End With も VB便利
0289デフォルトの名無しさん2015/12/17(木) 09:12:26.24ID:wazgEvjt
varは使ってみると合理的だよね
そもそも型の確認は、宣言見るか右の式見て確認するかなんだから、宣言も右見て確認するのは違和感ないし。
現場で使える自分は幸運か
0290デフォルトの名無しさん2015/12/17(木) 09:44:23.39ID:RxywOKqd
宣言システムやめてほしい
コード上じゃなく、プロパティで設定させればいいだろ
0291デフォルトの名無しさん2015/12/17(木) 10:08:20.34ID:1RX3gDoP
C# 風の文法で native binary を吐くらしい Vala がちょっと気になる
使ってみた人いる?
0292デフォルトの名無しさん2015/12/17(木) 11:18:29.88ID:YaXbQbPq
Goでいいだろそんなもん
0293デフォルトの名無しさん2015/12/17(木) 12:12:58.46ID:VaFnwyV1
>>288
それはないわ
0294デフォルトの名無しさん2015/12/17(木) 23:00:07.56ID:uAOfrDRi
>>288
Withはコードを横長にしたくないときに
一時オブジェクト作らないで出来るからほかの言語にも入れてほしい
0295デフォルトの名無しさん2015/12/17(木) 23:44:00.53ID:nE3SkfcG
withは検討の結果「要望が少ない」ということで却下された経緯がある
つまりお前はマイノリティ
0296デフォルトの名無しさん2015/12/17(木) 23:45:34.55ID:wKzIyU7U
まるでマイノリティが悪いみたいな物言いだな
0297デフォルトの名無しさん2015/12/17(木) 23:48:28.58ID:dKLnlHXg
C++からの流れではあるが、際限なく長い名前が良しとされていたからな
あのノリは未だについていけない
0298デフォルトの名無しさん2015/12/17(木) 23:49:49.06ID:S8YW+Ehf
略しまくったのよりは、意味が分かる名前のがいいなぁ
あとはセンスっていういやーな言葉になるが
0299デフォルトの名無しさん2015/12/17(木) 23:51:46.87ID:i1r3U0+U
>>297
つってもメジャーなスクリプト言語にもwithなんか無いからな
JavaScriptにはあるけど完全に黒歴史扱いでほとんど使われてないし
0300デフォルトの名無しさん2015/12/17(木) 23:55:41.04ID:8YX8F0Hj
ブロックで囲むのめんどいから
withはインテントで頼む
0301デフォルトの名無しさん2015/12/18(金) 00:17:25.15ID:GSoM/4PI
>>297
> C++からの流れではあるが、際限なく長い名前が良しとされていたからな

なのにimportしまくって、どのオブジェクトの派生なのか分からなくなるんだよな
0302デフォルトの名無しさん2015/12/18(金) 07:49:51.32ID:Pn8g8BvN
コンテキストを理解してればそんな長い名前にならないよ
0303デフォルトの名無しさん2015/12/18(金) 09:42:03.30ID:sT9ZaHDR
馬鹿は一つ覚えで限度を知らないからな
0304デフォルトの名無しさん2015/12/18(金) 19:43:35.84ID:aPFZSVCF
MVCの勉強してから
WebFormやると、コントロールのvisibleやenableみたいなプロパティを一つ一つ弄るのが面倒で

なるべくもModelをバインドするような作りにしようとしてますが、後々まずくなったりしますかね?
0305デフォルトの名無しさん2015/12/18(金) 22:09:04.97ID:gk961EIG
先生、質問がございます。
小粒なクラスを200万個近くインスタンス化するシチュエーションで途中でgc.collectが走ってしまい400msほどビクンビクンしてしまうんですが、俺がいいと言うまでgcするな命令みたいなものってあります?
0306デフォルトの名無しさん2015/12/18(金) 22:19:36.70ID:4VAnTop2
先にやっとくとか。
それでもなるのはしょうがないかも
0307デフォルトの名無しさん2015/12/18(金) 22:30:19.05ID:gk961EIG
ありがとうございます。先に作ってインスタンスをプールしとく感じですか。
試してみます!
0308デフォルトの名無しさん2015/12/18(金) 22:37:13.38ID:bT2qV2qZ
光る砂漠でロール〜
0309デフォルトの名無しさん2015/12/18(金) 23:16:54.63ID:XVLPEWds
プログラマはMacを使ってるってマジ?
http://hayabusa3.2ch.net/test/read.cgi/news/1450395043/
0310デフォルトの名無しさん2015/12/18(金) 23:19:27.65ID:bkeqB6RS
今の現場がMacだわ
最初は勘弁してくれと思ってたけど、慣れると割と使いやすい
まあWindowsも使いやすいけど
Macが特別使いにくいってことはなかった
0311デフォルトの名無しさん2015/12/19(土) 00:20:11.15ID:y4ZISOlF
マルチポストにマジレスするカス
0312デフォルトの名無しさん2015/12/19(土) 00:27:23.99ID:xp+k7OcH
× マルチポスト
○ コピペマン
0313デフォルトの名無しさん2015/12/21(月) 16:49:42.01ID:kS2EmNXf
程よい規模のMVCのサンプルプロジェクトなにかありませんかね?

実際に自分で作ってると
複雑なモデルのバインドパターンとか色々でてきて、ネットにもあまり載ってないパターンもでてくるので...
0314デフォルトの名無しさん2015/12/21(月) 16:55:44.27ID:U3hF6CjN
>>313
RailsのOSSプロジェクトとか読めばいい
0315デフォルトの名無しさん2015/12/21(月) 19:38:07.95ID:N+jvPVY9
>>314
それはasp.net MVCですか?
MVCのアーキテクチャを勉強したいのではなくて、asp.net MVでつくられたシステムが見たいです。

サンプルに出てるのって、本当に単純なCRUDシステムしかなくて、困ってます
0316デフォルトの名無しさん2015/12/21(月) 19:58:44.97ID:xw4vh+oL
わかったわかった

そのくせえ頭ごと腐り落ちて死ね
0317デフォルトの名無しさん2015/12/21(月) 20:36:13.74ID:kS2EmNXf
>>316
チンパンジーはお呼びでない
0318デフォルトの名無しさん2015/12/21(月) 21:05:31.92ID:bPnNcr23
>>315
いや、Webってマジでそれだけなんだよ
パラメータを元にDBへクエリ投げる→結果が返ってくる→結果を元に画面を作る
終わり
大きなシステムはただ単に画面の数やクエリの数が多いだけ
0319デフォルトの名無しさん2015/12/21(月) 21:07:13.47ID:gVgBUI5g
何言ってんだこいつ
0320デフォルトの名無しさん2015/12/21(月) 21:29:26.05ID:XlnWv6G/
ストレートに言えば「失せろ」だろ
0321デフォルトの名無しさん2015/12/21(月) 21:35:04.56ID:U3hF6CjN
初心者はフレームワークに惑わされがちだけど、Webってマジで>>318で全てなんだよな
ORMだのバインディングだのというのはユーティリティに過ぎない
そこを理解してないなら最初はNode.jsみたいなシンプルなのから入ったほうがいい
0322デフォルトの名無しさん2015/12/21(月) 21:56:36.37ID:kS2EmNXf
name属性使ってバインディングされるとか、.NETMVC特有のものじゃん

複雑なモデル構造のリストとかになると、TextForでなくTextBoxヘルパー使ってname属性にlist[0].のような文字列付けたりとか

そういうフレームワーク独自のものが色々あるでしょう
0323デフォルトの名無しさん2015/12/21(月) 22:08:30.44ID:kS2EmNXf
>>318
その、パラメーターを受け取るって一言で片付けてるけど

.net MVCなら
viewbagやtempdataやmodelがありますよね?
modelだって複雑な場合はカスタムバインダー使わないといけないし
0324デフォルトの名無しさん2015/12/21(月) 22:08:34.68ID:AKR6rQ1b
HTTPはTCP上の、TCPはIPの上のプロトコルに過ぎない、からといって
IPだけ理解してりゃいいってわけじゃないわな。
0325デフォルトの名無しさん2015/12/21(月) 22:20:56.47ID:kS2EmNXf
>>321

webの仕組みが単純なのを分かってるからって.net MVCが分かるというわけにはならないでしょ?

webの仕組みを包み込んで、関心ごとの分離やテスタビリティを高めるためにフレームワークを使うのであって

そのフレームワーク自体のことを学ぶためには、本読んだり実際のコードを沢山読むじゃん。

MVCの概念を学ぶなら他のフレームワークでもいいけど、その先は独自のフレームワーク学ぶしかないでしょ。
0326デフォルトの名無しさん2015/12/21(月) 22:21:29.08ID:LGmH8Vm3
ViewBag=低能の証
0327デフォルトの名無しさん2015/12/21(月) 22:33:39.02ID:u9+EAVY3
>>325
MVC固有のことはこっちで訊いた方が良いのでは。

ASP.NET MVC
http://tamae.2ch.net/test/read.cgi/php/1331013877/
0328デフォルトの名無しさん2015/12/21(月) 23:30:21.24ID:v4VU6uUx
何ですか?厄介払いしようってんですか?
0329デフォルトの名無しさん2015/12/22(火) 01:57:02.79ID:PrFisxRg
ここより適した場所があるってだけ。
若干スレ違いなここで訊いてもまともな返答は期待できないよ。
0330デフォルトの名無しさん2015/12/22(火) 02:05:42.41ID:EpD71riO
private void timer1_Tick(object sender, EventArgs e)
{
i++;
string url = "http://tamae.2ch.net/test/bbs.cgi?guid=ON";;

System.Net.WebClient wc = new System.Net.WebClient();
wc.Headers.Add("Accept", "text/html, application/xhtml+xml");
wc.Headers.Add("Referer", "http://tamae.2ch.net/test/read.cgi/ana/1450521890/";);
wc.Headers.Add("Accept-Language", "ja-JP");
wc.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
wc.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko");
wc.Headers.Add("Accept-Encoding", "gzip, deflate");
wc.Headers.Add("Host", "tamae.2ch.net");
wc.Headers.Add("Pragma", "no-cache");
wc.Headers.Add("Cookie", "NAME=\"\"; MAIL=\"\"; __cfduid=000217b92175216f95382b146abc764221450557291; yuki=akari; PREN=%83%89%83C%83u%81E%83A%83i%81%5b%83L%81%5b%82%b3%82%f1");
//NameValueCollectionの作成
System.Collections.Specialized.NameValueCollection ps = new System.Collections.Specialized.NameValueCollection();
//送信するデータ(フィールド名と値の組み合わせ)を追加
ps.Add("submit", "a");
ps.Add("MESSAGE", System.Web.Security.Membership.GeneratePassword(128, 0));
ps.Add("bbs", "ana");
ps.Add("key", "1450521890");
ps.Add("submit", "a");
ps.Add("mail", "age");
ps.Add("time", "1450616060");
//データを送信し、また受信する
byte[] resData = wc.UploadValues(url, ps);
wc.Dispose();
//受信したデータを表示する
string resText = System.Text.Encoding.GetEncoding("Shift-JIS").GetString(resData);
Console.WriteLine(resText);
}
0331デフォルトの名無しさん2015/12/22(火) 02:07:07.58ID:EpD71riO
↑これで2chに書き込めるんだけど
レスポンスをコマンドラインに表示したいけど?とか・とかにしかならないんですけどなぜですか?
0332デフォルトの名無しさん2015/12/22(火) 04:36:56.37ID:U2GagDf5
WebはUTF-8で、コマンドラインはShift-jis系のCP932
0333デフォルトの名無しさん2015/12/22(火) 04:46:34.78ID:EpD71riO
>>332
string resText = System.Text.Encoding.GetEncoding("Shift-JIS").GetString(resData);
とところでconvertですか?
0334デフォルトの名無しさん2015/12/23(水) 01:35:40.37ID:mLLLpett
最近 Visual Studio Standard Collector Service とかいうサービスプロセスが馬鹿みたいにメモリー浪費してくれるんだけど
何か変なアップデートあったっけ?
これ、何をしてるんだろうな
0335デフォルトの名無しさん2015/12/23(水) 11:18:14.36ID:Ouk9W9pK
>>334
ツール - オプション - デバッグ - 全般 の下の方にある
「デバッグ中に診断ツールを有効にします」のチェックの有無が影響するみたい。
診断ツールが何だかは知らない
0336デフォルトの名無しさん2015/12/23(水) 11:19:46.70ID:Ouk9W9pK
まあでもデバッグ走らせると出るCPUのグラフとかじゃないかな
0337デフォルトの名無しさん2015/12/23(水) 11:41:52.67ID:JaeaaX8T
デバッグビルドしたのにデバッガで変数ウォッチできない事が時々あるんだけど何故なの
最適化はされてないしデバッグ情報はフルで付いてる
もちろんソースコードはビルドに使用したものと同じファイル
0338デフォルトの名無しさん2015/12/23(水) 11:44:18.71ID:uP6j/Iq7
匿名ラムダの中だったりするんだろ
0339デフォルトの名無しさん2015/12/23(水) 11:45:17.66ID:sUZCBNnf
お前が変数の中身を知らないとデバッグできないように、
俺たちはお前のコードやプロジェクトの設定を知らないと何も解決できない
0340デフォルトの名無しさん2015/12/23(水) 11:47:29.06ID:DcpaLEXp
メインフォームとは別に定期的に関数を実行をさせたい場合、
各種TimerやBackgoundworkerより、Taskとasynk/awaitがいいのかな?
0341デフォルトの名無しさん2015/12/23(水) 12:43:20.12ID:9lRKIrWz
スレタイのC#のパターン対策ww
0342デフォルトの名無しさん2015/12/23(水) 12:47:01.78ID:ZolTmMoK
>>340
System.Timers.Timerでいいよ
Taskは単発の処理に使うもので、Task使うならタイマから毎回起動させるのが筋
0343デフォルトの名無しさん2015/12/23(水) 13:01:08.67ID:ZZxQfTix
>>342
TaskCreationOptions.LongRunningってのもあるし、単発処理に限らないのでは。
このオプション指定するとスレッドプールとは別の専用スレッドが作成されるから、別スレッドを作ってるのと同じ。
0344デフォルトの名無しさん2015/12/23(水) 13:39:15.27ID:ZZxQfTix
>>305
.Net4.6からの機能だけど、GC.TryStartNoGCRegionとEndNoGCRegionは使えないかな
0345デフォルトの名無しさん2015/12/23(水) 14:00:39.69ID:DcpaLEXp
>>342
ありがとうございます
System.Timers.Timerでキッチリ回して、
その中からTaskを使って別スレッドで動かすのが安定そうですね

>>343
LongRunningは知らなかったですが、こちらも使いこなせば安定して動きそうですね
勉強して比較してみます
0346デフォルトの名無しさん2015/12/23(水) 17:59:55.08ID:+gIeTCQg
システムで使うメッセージを外部リソースで管理するとして
メッセージを管理するMessageクラスはstaticで、インスタンス生成の時に外部リソースからメッセージリストを読み込む

みたいな作りって悪いでしょうか?
0347デフォルトの名無しさん2015/12/23(水) 18:05:10.56ID:fiBTvI7H
C#のstatic classはインスタンス化できないのにインスタンス生成もくそもないだろ
それともstatic constructorのことを指してるか?
0348デフォルトの名無しさん2015/12/23(水) 18:17:23.15ID:+gIeTCQg
>>347
static コンストラクタです。
間違えました
0349デフォルトの名無しさん2015/12/23(水) 18:26:36.74ID:BrzFNCu8
使い終わった後もずっとプロセスに居座ってメモリやシステムリソースを圧迫するからリソースをstaticにはしない
0350デフォルトの名無しさん2015/12/23(水) 18:40:10.66ID:YaELbVXU
メッセージとかならプロセス生きてる間は使う可能性があるからいいんじゃね
0351デフォルトの名無しさん2015/12/23(水) 18:40:14.14ID:FrDQkBPX
Messageクラスに依存してるクラスは単体テストが困難になるけど、それでもよければ
0352デフォルトの名無しさん2015/12/23(水) 18:40:24.41ID:F7FK9/Ld
ctor でリソースの生成/破棄まで行う(行える)なら問題はない
xml ファイルを読み込んでパースまでしてしまう(もちろんファイルは close する)とか
メモリ圧迫を理由にするのは…… まあアプリケーションの仕様によると思う
0353デフォルトの名無しさん2015/12/23(水) 19:05:42.55ID:BrzFNCu8
メモリだけじゃなくGCにも悪影響
サーバーでは避けたほうが良いね
0354デフォルトの名無しさん2015/12/23(水) 21:38:31.09ID:+gIeTCQg
逆にメッセージの管理はどうやるのが理想ですか?
0355デフォルトの名無しさん2015/12/23(水) 22:04:33.08ID:w6yNQewc
普通にVSで編集できるリソースでいいでしょ。
あえて自前で用意する必要があるの?

文字列ぐらいでメモリだのリソースだのっていつの時代だよw
80年代かよw
今は2015年だよw
0356デフォルトの名無しさん2015/12/23(水) 22:11:50.15ID:fiBTvI7H
球形の牛の逆みたいな話になってるな
0357デフォルトの名無しさん2015/12/24(木) 02:05:35.25ID:ta6MMntY
メッセージって単なる表示する文字列の話なのか?
0358デフォルトの名無しさん2015/12/24(木) 08:35:04.97ID:KQkP520X
マルチリンガル対応じゃね?
0359デフォルトの名無しさん2015/12/24(木) 09:19:44.01ID:NEwYqcPU
そんなもんサテライトアセンブリでいい
0360デフォルトの名無しさん2015/12/24(木) 10:14:50.05ID:6sd2Vm8U
月は出ているか
0361デフォルトの名無しさん2015/12/24(木) 10:56:47.42ID:844ZWqQO
フィールド宣言のコメントにおいて

/// <summary>
/// テストフィールド
/// </summary>
private int tes;

と

/// <summary>テストフィールド</summary>
private int tes;


はどっちの書き方にするのがいいですか?
0362デフォルトの名無しさん2015/12/24(木) 11:03:55.90ID:1wWNjS7A
>>361
VSのデフォルトは上だから何も気にして無かったわ
下は2行書くとき面倒そう
0363デフォルトの名無しさん2015/12/24(木) 11:24:50.32ID:844ZWqQO
上の書き方にするとコメントごときに行数を取られすぎる、下ので書けと言われました
でも下の形式にするにはデフォルトからわざわざ形を変えないといけないので
正直、超面倒臭いです
0364デフォルトの名無しさん2015/12/24(木) 11:49:07.88ID:gvn2o1E3
コードスニペット作ればいい
0365デフォルトの名無しさん2015/12/24(木) 12:33:53.44ID:tTrPmLEb
>>363
自分は上の書き方だなぁ
デフォルトだし

"コメントごときに"超めんどくさいことする必要ないんでない?
もし言ってる人が簡単にその書き方できる方法知ってるんだったら
教えてもらえば?
0366デフォルトの名無しさん2015/12/24(木) 13:07:21.60ID:ZIvzfH3j
VSだと書いても折りたたんじゃうからな
0367デフォルトの名無しさん2015/12/24(木) 14:45:51.48ID:OvoDVxQ7
コメントは沢山書くほうが正義とされているけど、本当は程度問題だよな
とは言えなかなかソレで押しきれない
0368デフォルトの名無しさん2015/12/24(木) 14:57:09.77ID:dcUdhHTO
var helloMsgText = manager.GetText(ResourceId.Hello);

var helloMsgText = manager.GetTextHello();

みんな上のように書くけど別に下でよくね?
0369デフォルトの名無しさん2015/12/24(木) 16:24:50.35ID:logTvbmn
vbのコードをc#に完全な形で変換してくれるツールもしくはサイトない?
0370デフォルトの名無しさん2015/12/24(木) 17:21:54.23ID:Y8pSRiNc
>>369
ILSpy
0371デフォルトの名無しさん2015/12/24(木) 19:34:20.26ID:eIL8ov29
リソースでメッセージ等の文字列を管理する場合、クライアント側のみの処理で表示するようなメッセージはどう管理します?

リソースをJSONに変換して返すWebServiceを作って
ajaxでメッセージ取得して表示する感じでしょうか?
0372デフォルトの名無しさん2015/12/24(木) 19:40:09.79ID:7/G2aj/P
無駄に複雑にして工数を増やしたい病気でも患っているのか?
0373デフォルトの名無しさん2015/12/24(木) 19:47:53.79ID:1wWNjS7A
>>368
GetTextByeとかGetTextHogeとか増えていくの?
それはなんだか・・・
0374デフォルトの名無しさん2015/12/24(木) 19:57:28.37ID:h3yCwgPm
>>373
VSが自動生成するマネージドリソースにアクセスするコード(Properties)も>>368方式。
もっともあっちは静的クラスのプロパティだけど。
0375デフォルトの名無しさん2015/12/24(木) 21:40:23.96ID:Y8pSRiNc
>>371
クライアントを更新するときに一緒に更新すればいいだろ
それともお前のアプリはクライアントの機能の更新がないのにメッセージばかり頻繁に更新するトチ狂ったアプリなのか?
0376デフォルトの名無しさん2015/12/24(木) 21:50:39.61ID:S0+P+Hy7
そもそもこういうリソースって一括管理するものなのか
特定の画面だけで使うメッセージを集めて一括管理って逆にわかりにくいだろ
ある画面で使うリソースを1つのまとまりで管理
別の画面で使うリソースはまた別のまとまりで管理
としたほうがわかりやすいし実行時のコスパも良い
0377デフォルトの名無しさん2015/12/25(金) 00:49:48.26ID:Nwjnyecm
>>376
とにかくメッセージは一括管理しろって要求みたいなんですよ。

クライアント側での入力チェック等のメッセージまで管理となると、どういう方法がよいのかと気になったので
0378デフォルトの名無しさん2015/12/25(金) 01:00:42.04ID:wX928DHg
だったらメッセージ専用のDLLを作って共有すればいい
0379デフォルトの名無しさん2015/12/25(金) 01:02:54.78ID:Nwjnyecm
すみません、クライアント側というのはWebシステムの話です。
0380デフォルトの名無しさん2015/12/25(金) 01:19:15.30ID:GzgJ+pjK
//と///の違いってなんですの?
0381デフォルトの名無しさん2015/12/25(金) 01:39:40.53ID:jYPgyGYg
ラッスンゴレライ
0382デフォルトの名無しさん2015/12/25(金) 04:39:44.37ID:+55nFQ10
質問です。
「リファレンス(参照渡し)の引数を持つデリゲート」を引数とする、関数を作ろうとしています。

───────────────────
public void Hoge(Action<string, out string> funcA) {
 string paramA = "auau";
 funcA("hoge", paramA);
 Debug.Log(paramA);
}

Hoge(
 (param1, param2) => {
  param2 = param1 + param2;
 }
);

> paramA = hogeauau
───────────────────

こんな感じの事がしたいのですが、エラーとなってしまいます。

MSDNを見ると下記のような記載があるのですが、実現方法はないのでしょうか。

> ラムダ式は、外側のメソッドの ref パラメーターまたは out パラメーターを直接取り込むことはできません。
0383デフォルトの名無しさん2015/12/25(金) 07:39:53.30ID:wX928DHg
>>382
いや実引数やパラメータにout付けてないからエラーになってるだけだろ
MSDNのその記述は関係ないはず
0384デフォルトの名無しさん2015/12/25(金) 08:23:39.99ID:G7nDvP8n
一括管理したことあるよ。
一部置き換えすれば全体で使える。
クラス作った。
0385デフォルトの名無しさん2015/12/25(金) 08:33:24.90ID:hK6V4eA3
別に一括管理するだけならソースコード生成すればいいのに
頭堅いんだあ
0386デフォルトの名無しさん2015/12/25(金) 14:27:59.27ID:ojJ97SJR
>>382
ジェネリック型引数にrefや(参照渡しの意味での)outはつけられない。
そのためAction<T>が使えないので、delegate型自体を自分で定義する必要がある。
0387デフォルトの名無しさん2015/12/25(金) 21:08:27.60ID:+55nFQ10
>>386
遅くなりましたが、ありがとうございます!
以下で動くことが確認できました。

─────────
// デリゲート準備
public delegate void RequestCallback(string wwwText, out string resultJson);
public void RequestReal(string wwwText, out string resultJson)
{
 resultJson = "{ \"content\" : \"" + wwwText + "\" }";
}

// 使用先関数
public void Hoge(RequestCallback funcA, out string outStr)
{
 string apiResult = "seikou sita kigasuru";
 funcA(apiResult, out outStr);
}

// 呼び出し
string result;
RequestCallback req = RequestReal;
Hoge(req, out result);
Debug.Log(result);

> { "content" : "seikou sita kigasuru" }
>
UnityEngine.Debug:Log(Object)
───────────────────
0388デフォルトの名無しさん2015/12/25(金) 22:09:37.11ID:GzgJ+pjK
>>380
これ教えてください
0389デフォルトの名無しさん2015/12/25(金) 22:32:21.16ID:wX928DHg
>>388
言語仕様上は//がコメント始まり、3つ目の/はコメントの文字列
ただしC#の拡張仕様で///はXMLのマークアップをソース内に記述するのに使うことが推奨されている
https://msdn.microsoft.com/ja-jp/library/b2s063f7.aspx
0390デフォルトの名無しさん2015/12/27(日) 09:53:45.68ID:guLL/9cN
TcpClient使って、サーバーへの接続、切断を非同期でやりたいんですが、参考になるサイトか本を紹介してください。
0391デフォルトの名無しさん2015/12/27(日) 13:52:24.01ID:ELdsNW5n
データベースを使いたくて入門書を買ってきたらDataSetを使ったものでした。
"DataSetはもう古い" みたいな言われ方するようですが、それなら何を覚えればいいでしょうか?
GUIとのバインディング(?)が目的です。
0392デフォルトの名無しさん2015/12/27(日) 14:01:14.72ID:F6G0FzqO
Entity Frameworkとか?
0393デフォルトの名無しさん2015/12/27(日) 14:05:32.63ID:/kKhf1RB
WinFormsならDataSetでいいよ
もう古いとかいうならクライアントアプリ自体もう古い
.NETでは主役はもうASP.NETにシフトしていて、.NET関連のあらゆる新技術はWebが中心になってるの
DataSetに代わるデータアクセス方法として今はEntity Frameworkがあるんだけど、
これは基本Web用でGUIにバインドしたりするのには向かない

>>390
そんなもん誰でもやってるから普通にググれ
0394デフォルトの名無しさん2015/12/27(日) 14:11:35.14ID:fwIV4Uvo
DataSetとかEFとか詳細はどうでもいい
アーキテクチャ設計に失敗してなければどれ選んでもどんぐりの背比べだよ
0395デフォルトの名無しさん2015/12/27(日) 14:48:38.55ID:isAqOdFe
いまだにDataReaderとCommand.Executeでシコシコ書いちゃう。
SQL Serverに100万件くらいINSERTの必要があって
パラレルForで4スレッドで回したらなぜか4倍以上の速度が出た。
ADO.NETのまとまった資料って2005の時のMS公式本くらいしかないのはなぜなんだ
0396デフォルトの名無しさん2015/12/27(日) 15:23:48.57ID:Ps5R7yzw
すべてのDBフレームワークがそのかぶせモノになってるから進化のしようが無い。
何でかって言ったら、RDBMSをアクセスするための薄いラッパーで
ADO.NET≒RDBMSみたいなものだから。
RDBMSが変わらないと、大きく異なるライブラリは出てこないかと。
0397デフォルトの名無しさん2015/12/27(日) 16:42:00.30ID:TqZTceMP
>>395
それbulkcopyでいいんじゃ・・・100万回INSERTとかマルチスレッドでも限界あるで
0398デフォルトの名無しさん2015/12/27(日) 18:55:52.38ID:qJI8FLco
odp.net以外でまともにバルク処理できるDB製品あるのか
0399デフォルトの名無しさん2015/12/28(月) 01:30:00.56ID:h/evoQDS
これの解決策ありませんか?
https://pbs.twimg.com/media/CXPrZVkUQAAZv_o.png
https://mobile.twitter.com/ProgrammingMono/status/681146790373007361
0400デフォルトの名無しさん2015/12/28(月) 09:59:18.25ID:JJlxJ852
諦めればいい
0401デフォルトの名無しさん2015/12/29(火) 04:40:34.90ID:2j1vpab9
C#はじめましたが
何が書いてあるのか意味がわかりません
読み始めていつ頃から脳に入ってきましたか
経験をお聞かせくさい
0402デフォルトの名無しさん2015/12/29(火) 05:06:16.01ID:bJW4Eq7l
アタシは
C→VBA→VB→.NET→Javaの資格とる→
JSP&サーブレット→.NETに戻る
って来たから楽勝だった
0403デフォルトの名無しさん2015/12/29(火) 07:14:16.16ID:XNVDRgDP
俺はc++とかいうクソ言語で耐性を高めてからclr via c#読んだからc#を触る前に完全にc#を理解していたよ
0404デフォルトの名無しさん2015/12/29(火) 07:23:58.55ID:wJImNd8e
他言語やってたから割とすんなり入れたな
BASIC→C→VB→Perl、JS→Ruby→C#

BASICでは変数の扱いや基本的な命令覚えてって
Cではポインタやメモリ確保の壁にぶつかり
VBでオブジェクト指向とフォーム関連を覚え…

サンプルプログラムやりまくったりゲームプログラム打ち込んで改造したりしてたな
どれくらいかかったか覚えてないけど
0405デフォルトの名無しさん2015/12/29(火) 08:45:37.22ID:kdwBJB68
アセンブラは居ないのか?
0406デフォルトの名無しさん2015/12/29(火) 09:45:07.31ID:xDYyv4wo
C#から入ったけどデリゲートとか構造体とかC#特有の部分が辛かったな
最初はJavaから入ったほうが馴染みやすい
0407デフォルトの名無しさん2015/12/29(火) 10:54:53.68ID:uIdyz590
>>406
デリケートは関数ポインタに毛が生えたもの
0408デフォルトの名無しさん2015/12/29(火) 10:55:56.03ID:sfUMzRql
407はアスペ
0409デフォルトの名無しさん2015/12/29(火) 11:00:46.08ID:r/vj9keN
javaから始めたけどソースコードをそのままコピペして少し弄くったら動いたから特に迷わなかったわ
0410デフォルトの名無しさん2015/12/29(火) 11:02:47.97ID:FSVLMb4L
>>408
http://i.imgur.com/3T7yzEx.jpg
0411デフォルトの名無しさん2015/12/29(火) 12:10:45.06ID:wlSqNWOm
グロ貼るな
0412デフォルトの名無しさん2015/12/29(火) 12:16:01.80ID:wlSqNWOm
デリゲートを関数ポインタっぽいものと教えるのは好ましくない
ストラテジーパターンの省略形と認識したほうが良い
0413デフォルトの名無しさん2015/12/29(火) 12:33:47.57ID:DwiC5QEn
>>412
それは意味論的な定義(それは何であるか?)と機能主義的な定義(それは何に使えるか?)を
混同してるだけ。

定規は背中を掻くのに使えるから孫の手だ、っていう考え方はどうかね。
0414デフォルトの名無しさん2015/12/29(火) 12:58:20.29ID:xUCplUf3
C#誕生当初は第一級関数というのがまだあまり一般的ではなく、
「関数オブジェクトはオブジェクト指向ではない」などと抜かす馬鹿も多かった
だからオブジェクト指向でその存在を正当化するために当初はインターフェイスを簡略化した概念として説明され、
名前も「委譲」というオブジェクト指向で馴染みのあるものになった
0415デフォルトの名無しさん2015/12/29(火) 14:00:09.08ID:C/O8tL6v
>>401
コードを読む前段階の、文法の入門書の学習はしんどかったけど
そのあとは、コードを読んで全く脳に入らないってことはあまりなかった
もちろん知らないことはググったりヘルプ見たりしたけど
0416デフォルトの名無しさん2015/12/29(火) 14:30:22.86ID:+K3f7QC6
コードを書くことでしか理解できないよね。読んだだけだとしっくりこない
0417デフォルトの名無しさん2015/12/29(火) 15:04:31.42ID:tZ7ULgVX
いま数学のおさらいをやってるんだけど、>>416 に同意だわ。
理屈が込み入ってることをやるときは、自分で書いてみるのが一番。

その方が覚えるとかじゃなくて、自分で考えながら書いてみると、
暗算してたときには見過ごしてた理解不足な面がぼろぼろ見つかる。
0418デフォルトの名無しさん2015/12/29(火) 17:53:08.89ID:AhKmKGiO
デリゲートは意味的にも機能的にもストラテジーだよ
0419デフォルトの名無しさん2015/12/29(火) 18:29:58.49ID:6fhy+1hJ
StrategyでありStateでありTemplate MethodでありAbstract Factoryでもある
デザインパターンよりも抽象度が高いんだよ
オブジェクト指向の言葉で言えばその名の通り「委譲」が一番正しい
0420デフォルトの名無しさん2015/12/29(火) 18:31:35.62ID:EI7d6zEo
ttps://msdn.microsoft.com/ja-jp/library/900fyy8e.aspx
> delegate は、指定されたメソッドまたは匿名メソッドをカプセル化するために使用される参照型です。
> デリゲートは C++ の関数ポインターに類似していますが、タイプ セーフであり、安全です。

つまり、デリゲートは型なんだね。
0421デフォルトの名無しさん2015/12/29(火) 18:32:14.31ID:eW7HIrdi
>>419
TemplateMethodをデリゲートで置き換えようとすると結構面倒なんだよな
0422デフォルトの名無しさん2015/12/30(水) 03:45:30.77ID:A4v2uAzd
UbuntuにMonoをインストールしたんだがFormアプリがコンパイルできない・・・
簡単なコンソールアプリならコンパイルできてちゃんと動くんだがFormはWindowsの機能使ってるからダメってこと?
FormがないC#なんてピクルス抜きのハンバーガーだぜ
0423デフォルトの名無しさん2015/12/30(水) 04:08:11.52ID:qUFxM6Uk
GUIはOSありきなんだから諦めなさい
どのOSでも同じコードに拘るならJAVAでもやればいい
返ってC#の高機能さも分かるし
0424デフォルトの名無しさん2015/12/30(水) 09:27:53.99ID:s3TIK8lI
Monoってどの程度まで互換性あるの
0425デフォルトの名無しさん2015/12/30(水) 09:30:33.42ID:2ZE2aRQN
互換性は基本的に無いよ
「GUIは個別に作れ」が公式の方針らしい
0426デフォルトの名無しさん2015/12/30(水) 09:51:04.00ID:Bj92UdRZ
Gui以外の部分はどうなの
unsafeコードとかPInvokeはダメだろうけど
DBアクセスとか問題ないのか
0427デフォルトの名無しさん2015/12/30(水) 10:03:27.85ID:2ZE2aRQN
>>426
最初からマルチプラットフォームを前提にして両方でテストしながら作っていれば一定の互換性はある
そうでないならまず無理
0428デフォルトの名無しさん2015/12/30(水) 10:44:40.81ID:eaj6QvlR
JavaいいよJava
0429デフォルトの名無しさん2015/12/31(木) 12:07:22.81ID:Qop6kv8X
XNAで書いたコードはMonoGameでもほぼそのまんま動く
0430デフォルトの名無しさん2016/01/02(土) 00:38:05.29ID:09vKdiwO
3Dの勉強しているのですが、「9時の方向に30度傾ける」という計算式はどう表すのでしょうか?
0431デフォルトの名無しさん2016/01/02(土) 00:58:39.00ID:1lIm0vu3
Windows使っているならDirectXでなんとかなるんじゃない
0432デフォルトの名無しさん2016/01/02(土) 01:20:45.94ID:0SH4qGeB
時計の文字盤は2軸だろ
3Dは3軸だ
1軸の取り方が無数にあるのでは何とも表現できない
0433デフォルトの名無しさん2016/01/02(土) 03:06:21.59ID:Bt0XQGx2
9時の方向に30度って要するに11時の方向ってことじゃないの?w
0434デフォルトの名無しさん2016/01/02(土) 04:58:14.89ID:DiKFtfHd
zを9時に向けて、xを30度ってことだったりしてな
これでも432の言うとおりyはどうすんだよって話になるが

ともかくもう少し質問内容をしっかり書いてほしいわな
0435デフォルトの名無しさん2016/01/02(土) 05:46:53.74ID:nejI+NKJ
エスパーすると、右回りに30度だな
でも確かに情報が曖昧だw
0436デフォルトの名無しさん2016/01/02(土) 09:46:53.33ID:Lc/ZqWli
右手系で-Z方向を進行方向として
Z軸を回転軸としたロールだと解釈したがw
0437デフォルトの名無しさん2016/01/02(土) 10:05:16.46ID:FffDLBdP
わかりにくくてすみません。
足元を固定して倒れる表現をしたいのですが、身体の中心から回転してしまいます。
0438デフォルトの名無しさん2016/01/02(土) 10:10:10.13ID:FffDLBdP
その歳に撃たれた方向に倒れたいのです
0439デフォルトの名無しさん2016/01/02(土) 11:39:44.08ID:3ogeHslP
3次元アフィン変換を覚えろ
基本だ基本
0440デフォルトの名無しさん2016/01/03(日) 01:06:33.23ID:buM4hFpe
>>437
足を短くすればいいだろ
0441デフォルトの名無しさん2016/01/03(日) 01:16:45.20ID:OtEZdr7j
>>437
足元を中心に回転しろよ
0442デフォルトの名無しさん2016/01/03(日) 10:11:03.01ID:JnVxwVfS
足なんて飾りです
0443デフォルトの名無しさん2016/01/03(日) 21:08:52.46ID:bLJMdtU7
飾りとコメントは重要だぞ
やくに立たないくせに糞なのは迷惑でしかない
0444デフォルトの名無しさん2016/01/04(月) 03:04:56.99ID:tYWpcH6n
UnityのC#ってどうやってiOSで動いてるの?
UnityやXamarin使わず(高いんで)にiOSアプリを書きたいんだけど、応用が効くなら参考にしたいな
0445デフォルトの名無しさん2016/01/04(月) 03:34:59.07ID:Wj5XV3E6
>>444
独自のC#コンパイラ実装してやってる
素人がやることじゃない
0446デフォルトの名無しさん2016/01/04(月) 04:16:13.58ID:u97FRQbx
>>444
mono
0447デフォルトの名無しさん2016/01/04(月) 10:58:17.57ID:JagLoUWq
pen1とpen2をpenに代入して使いたいです

Pen pen = new Pen(Color.Red, 1);
Pen pen1 = new Pen(Color.Red, 1);
Pen pen2 = new Pen(Color.Red, 2);

pen = pen1;
// ここでpenを使う

pen = pen2;
// ここでpenを使う

// 解放
pen.Dispose();
pen1.Dispose();
pen2.Dispose();

ここでpenはnewしなくても
Pen pen;
だけでもでエラーになりません

newしないで使うのが正解なのかnewするのが当然なのかが分からないです
newしない場合はDispoaseも不要になりますか
不要になるのが当たり前と思うけどDispoaseしてもエラーにならないので
0448デフォルトの名無しさん2016/01/04(月) 11:04:28.65ID:CbDgu8L2
pen = pen1;
した時点で最初のpenはどっかいくだろ
そのうちガベコレで消えるだけ
そのDisposeはpen2に対して2回行ってるだけだな
0449デフォルトの名無しさん2016/01/04(月) 11:23:53.54ID:F9X3XbcQ
上の言うとおりなんだけど、Dispose があるクラスなら
using を使って抜けなく解放されるようにして欲しい。
0450デフォルトの名無しさん2016/01/04(月) 11:49:41.41ID:JagLoUWq
penのnewはいらないってことですね

> そのDisposeはpen2に対して2回行ってるだけだな

これはこれで問題ありですよね



> 上の言うとおりなんだけど、Dispose があるクラスなら
> using を使って抜けなく解放されるようにして欲しい。

参考にしてるdobonさんがそういう書き方なのでついつい
dobonさんの方はサンプルなのでそうしてることは理解してます
0451デフォルトの名無しさん2016/01/04(月) 12:40:38.89ID:ggF79ROL
usingは例外などでもGCにマークさせたいものに使う
penならdisposeすらしなくてもGCされそうな気がする
0452デフォルトの名無しさん2016/01/04(月) 14:11:16.31ID:fcRyHRgJ
>>450
using ディレクティブのことじゃなくてusingステートメントのことかと
0453デフォルトの名無しさん2016/01/04(月) 17:31:35.34ID:ubfZpLLm
>>452
dobonはDisposeで書くんだよ
サンプルだからと書いてあるから勘違いするのはわかるけど

>>450
サンプルでもDisposeで書くメリットは一切ないからdobonがどうかしてるだけ
0454デフォルトの名無しさん2016/01/04(月) 17:49:00.31ID:VyTgME1l
サンプルだから明示的にDisposeした方が親切だろうと考えたか、
VBにUsingがない時代のサンプルだからVBerに配慮してそう書いたか、まあそんなとこでしょ。
0455デフォルトの名無しさん2016/01/04(月) 21:41:25.92ID:TKdGSRvj
dobonに限らず古いサイトはレガシーコードが多いので注意
PrintDialogのマージンではめられたことがある
0456デフォルトの名無しさん2016/01/05(火) 10:29:56.73ID:7uneSmZj
非同期でファイル出力やるのってドキュメント通りに

using (StreamWriter outfile = new StreamWriter("hoge.txt"))
{
await outfile.WriteAsync(data);
}
ってやれば手軽に出来るのかと思ってたけど
書き込み中プロセス終了したら途中でぶつ切りのファイルになったり
再入時にはロックしないといけなかったり結構面倒なのね
0457デフォルトの名無しさん2016/01/05(火) 11:32:45.05ID:9P9OP9TU
当たり前だろう。w
CancellationToken とかあるだろ。それで中断処理を入れて、どうしようもない時に仕方なくプロセスキルだろうに。
0458デフォルトの名無しさん2016/01/05(火) 12:03:14.79ID:rShYuMI8
というか何のドキュメントにそう書いてあったんだろ
ムチャクチャな
0459デフォルトの名無しさん2016/01/05(火) 15:51:13.74ID:6f6Kf2/K
unityなんですけど、

switch(chartype) //キャラタイプ
case 1:
   画像Aを設定
case 2:
   画像Bを設定
case 3:
   画像Cを設定

みたいなのを複数箇所書いてるんですが、今後キャラが増えるとこの分岐箇所
全部に手を入れないといけないわけですが、何かいい方法ありますか?
ストラテジーパターンとか使うんでしょうか?
0460デフォルトの名無しさん2016/01/05(火) 15:53:50.23ID:ENhoHMkE
lavelクラスとかテキストボックスクラスなどFontプロパティを
もってるクラスはたくさんあると思うのですが、このFontプロパティ
ってなんなんでしょうか?
例えばlabel1.Font.FontFamlyとか書けると思うのですが、FontFamly
ってFontクラスのプロパティですよね?
なんでFontプロパティがFontクラスのプロパティを持ってるのかよくわから
ないのですが・・・
0461デフォルトの名無しさん2016/01/05(火) 17:28:10.71ID:rShYuMI8
クラスとインスタンスの区別をつけろ
0462デフォルトの名無しさん2016/01/05(火) 18:09:00.62ID:ANFnPmDl
FontプロパティがFontクラスだからとしか言いようがない
0463デフォルトの名無しさん2016/01/05(火) 18:20:51.00ID:YO0Pj5qh
>>459
状況がよくわからんけど、キャラにやらせたら
0464デフォルトの名無しさん2016/01/05(火) 18:47:08.04ID:3DV+V0sT
>>459
インターフェース定義して
SetImageとか実装したら?

でも、ポリモーフィズム使うと予期せぬとこで問題出たりするから、
switchもシンプルでいい方法だとは思うよ。

あと、Unityにおいては継承を多用するよりは、パラメータで管理した方が幸せになれる。
0465デフォルトの名無しさん2016/01/05(火) 19:11:04.82ID:mStzs5Tn
>>460
あるクラスを返すプロパティの名前は、そのクラス名と同じにする という作法
なのでFontプロパティはFontクラスを返す
Fontプロパティが返しているのはFontクラスだから、そこからはFontクラスとして使える
0466デフォルトの名無しさん2016/01/06(水) 05:18:19.16ID:9EwLehji
>>463-464
レスありがとうございます

>>464
すみません、
>Unityにおいては継承を多用するよりは、パラメータで管理した方が幸せになれる

これもうちょっと具体的にお聞きしたいのですが、どういう意味でしょうか?
パラメータとはフィールドの事ですか?
0467デフォルトの名無しさん2016/01/06(水) 11:09:52.27ID:wCEM/hYT
>>444
最新のXamarinはC#からLLVM経由でネイティブコード
0468デフォルトの名無しさん2016/01/06(水) 11:37:27.21ID:TgTP81o4
>>465
ありがとうございます。
つまりクラスと同名のプロパティがあったらその
クラスと思っていいのですね。
0469デフォルトの名無しさん2016/01/06(水) 13:11:37.93ID:/WM8ggC6
>>468
おたくも>>465も混乱して何か変な勘違いしてるだけw
そんな作法なんか聞いたことないよw
0470デフォルトの名無しさん2016/01/06(水) 15:37:31.87ID:lmDMYYEi
>>469
https://msdn.microsoft.com/ja-jp/library/cc433291(v=vs.71).aspx
自分が聞いたことがない≠存在しない
肝に命じておけ
0471デフォルトの名無しさん2016/01/06(水) 18:45:22.41ID:8BJ4gk1j
visualstudioでWebサイトの発行やろうとすると人によって出てくるダイアログ違うのなんで?
0472デフォルトの名無しさん2016/01/06(水) 21:04:49.83ID:XWrepft2
>>470
肝に命じておけ、だとさ。

それは当たり前のことが書いてあるだけ。
FontはFontに決まってるし、ColorはColorに決まってる、特に理由がなければあえて別の名前を付ける必要はない、ただそう言ってるだけ。
なんでそんな当たり前のことが書いてあるのか意図がよく分からないが。

馬鹿じゃないの。
0473デフォルトの名無しさん2016/01/06(水) 21:15:48.25ID:Ph2iCp2l
それもちょっと違うような
まあ面倒くさいのに巻き込まれたくないからどうでもいいや
0474デフォルトの名無しさん2016/01/06(水) 21:19:25.05ID:XWrepft2
>>473
違わない。

具体的に言うなら、>>465が言ってるような作法があるなら、UIのコントロールの大半のTextプロパティは
Stringになってないとおかしい。
0475デフォルトの名無しさん2016/01/06(水) 21:53:35.59ID:cUB9w8BS
Fontいじりたいから
Fontって命名されてるだけだろ。
よく使うなら例外的にfでもかまわんよ。
開発速度を上げるために命名規則を共有するんだぞ?
0476デフォルトの名無しさん2016/01/06(水) 22:13:40.67ID:uPkU6fsw
入門サイト見てるけどつながりが見えない
まるで古文単語と英単語と数学の定理を読まされているような感覚
0477デフォルトの名無しさん2016/01/06(水) 22:37:42.32ID:vYy0/gWp
コンソールアプリを作って思ったのですが、
staticのメソッドって、どのようなメリットがあって
存在しているのでしょうか?

インスタンス化しなくて済む以上の理由が
あるのではと思うのですが、よろしくお願いします
0478デフォルトの名無しさん2016/01/06(水) 22:46:45.66ID:jdU7mFUq
基本はクラスメソッド
異論は認める
0479デフォルトの名無しさん2016/01/06(水) 23:11:17.10ID:SEgF84gg
>>477
スッキリ分かるjava入門読んだらだいたい分かる
0480デフォルトの名無しさん2016/01/06(水) 23:31:50.98ID:QGmDYJlm
そのクラスの名前空間を使っているから、
マーカー的な意味合いもある

クラス名が付くから、視認性もよくて、分類がよくわかる
0481デフォルトの名無しさん2016/01/07(木) 00:14:36.90ID:h85vwdS0
++C++;// 未確認飛行
ufcpp.net
っていう一番分かりやすくそうな入門サイトを読んでるんですが、基礎の所からよく分かりません
プログラミング C#を知ってる人にしか分からない書き方のように思えるんですが、このサイトより分かりやすい、もっと「なぜこうなるのか、なぜこれじゃだめなのか」みたいなのを
説明してくれる本があれば教えてください
0482デフォルトの名無しさん2016/01/07(木) 00:37:17.55ID:at5+d40J
だいぶ古いし好みが分かれるけど、
「なんでこうなるのか、なぜこれじゃだめなのか」についてはかなり詳しくてわかりやすい定番のやつ
http://www.atmarkit.co.jp/ait/subtop/features/dotnet/csharp_abc2_index.html
0483デフォルトの名無しさん2016/01/07(木) 02:15:55.76ID:zpJ8fCsq
>>471
人によってって
誰と誰?
0484デフォルトの名無しさん2016/01/07(木) 02:18:29.07ID:zpJ8fCsq
>>481
例えばどこで引っかかるの?
0485デフォルトの名無しさん2016/01/07(木) 03:07:38.42ID:AvUDPpyf
とりあえず棚上げして先に進める人でないと難しい
0486デフォルトの名無しさん2016/01/07(木) 03:36:20.80ID:sBfaw+Jv
プログラム未経験からJava勉強するのに、まずなんで文字が画面に表示できるのか気になって、ディスプレイ回路とか調べてたわ・・・・・
0487デフォルトの名無しさん2016/01/07(木) 08:20:12.50ID:WgDSnx84
>>483
端末によって、というべきか
同じ2012を使ってるのにダイアログが違うんだよね
なんかの設定が足りないのかな?
https://lh3.googleusercontent.com/proxy/krCaN09KlW07Vtp-zZbOrbTIUAKK4QdvA-RUhe91GVgjLIS58C18ZnWoMS6kK6Nd_IM3jmSQ7BSxsLQXZBO0WjuNsIDUoralzNqE5V0_0Q=w433-h340-nc
https://lh6.googleusercontent.com/proxy/s8VOFq-cBZbQmUBk3ntUfonfmHJdmRHgvGcCdgtYCKDLtkLRVFsp0TD2k-BrJsqYRx-ufm14Ye4ZpAeNN9eDslwkjU5JngVaSiTYxESW5Bgw7dfCeg=w437-h337-nc
0488デフォルトの名無しさん2016/01/07(木) 10:46:41.60ID:AmpDR1lN
マニフェスト
0489デフォルトの名無しさん2016/01/07(木) 10:49:26.46ID:AmpDR1lN
ってVSそのものかいな
0490デフォルトの名無しさん2016/01/07(木) 11:12:10.97ID:oYgL+fra
>>486
俺はそこまでしなかったけど、javaの文法でダイアログ表示したり、コンソール、ファイルI/Oが何故出来るのか気になってたわ
0491デフォルトの名無しさん2016/01/07(木) 14:07:33.85ID:C9YZL6QX
大学でTTLやFETなどの素子の原理からNAND,NOA回路、そしてCPUの回路が来て
それからIPLのプログラムやマルチタスクモニタのプログラム追ったり石を直接制御したり
そういうのも結構楽しいものだよ
0492デフォルトの名無しさん2016/01/07(木) 15:26:47.11ID:Tcm+Rgx7
ゲームのMODを改造したいのですがわからず質問します。
ゲーム内で特定のチャットコマンドを入力した際に別のMODを無効化するために
そのMODのパーミッションを消したいのです。
また、別のコマンドを入力した際に消したパーミッションを再度付与したいです。
どのように記述すればいいのかご教授願えませんでしょうか。
0493デフォルトの名無しさん2016/01/07(木) 16:02:55.92ID:AmpDR1lN
誤爆?C#との接点書いてないが
0494デフォルトの名無しさん2016/01/07(木) 16:09:52.50ID:Tcm+Rgx7
申し訳ありません。コードを貼ります。
http://ideone.com/DcglwH

192行目のチャットコマンドの/arena joinを入力した時に、
別のMODを使用可能にするためのパーミッションであるteleportation.tprとteleportation.homeを削除し
/arena exitを入力した際に上記2つのパーミッションを再度付与したいのです。
0495デフォルトの名無しさん2016/01/07(木) 16:17:13.29ID:oYgL+fra
そういえばVBとc#で作ったexeって全く同じ物が出来るの?それとも大体同じものが出来るの?
0496デフォルトの名無しさん2016/01/07(木) 21:04:58.89ID:zpJ8fCsq
>>495
比較してみたらわかるだろ
0497デフォルトの名無しさん2016/01/07(木) 21:06:53.74ID:nXbcU6mx
お前の手を動かしてやろうってのにその態度はなんだよゴミ
0498デフォルトの名無しさん2016/01/07(木) 21:28:34.95ID:AvUDPpyf
横からつまらない煽りを入れるのは止めとけ、お前給料安いだろ
0499デフォルトの名無しさん2016/01/07(木) 21:55:03.08ID:WqX4FtZ/
>>494
何のゲームのmodだよ。
0500デフォルトの名無しさん2016/01/07(木) 23:17:51.93ID:aNa897Rt
すみません、わからないところがあるので教えていただけると嬉しいです。

visual studio 2013でアプリを作ってるところで、
flowrayoutpanelのスクロールバーとマウスホイールを同期させるため、
以下のコードを参考にしたら動くようになりました。

private void Panel_Click(object sender, EventArgs e)
{
var panel = (FlowLayoutPanel)sender;
panel.Focus();
}

けれども、コード中の
0501デフォルトの名無しさん2016/01/07(木) 23:19:21.51ID:aNa897Rt
すみません、わからないところがあるので教えていただけると嬉しいです。
visual studio 2013でアプリを作ってるところで、flowrayoutpanelのスクロールバーとマウスホイールを同期させるため、
以下のコードを参考にしたら動くようになりました。

private void Panel_Click(object sender, EventArgs e)
{
var panel = (FlowLayoutPanel)sender;
panel.Focus();
}

けれども、コード中の
"var panel = (FlowLayoutPanel)sender;"の部分が
何をやっているのかわかりません。
flowrayoutpanelにフォーカスするための準備ということはわかりましたが、
わかる方がいたら教えてください。よろしくお願いします。
0502デフォルトの名無しさん2016/01/07(木) 23:28:34.43ID:AvUDPpyf
varか、
0503デフォルトの名無しさん2016/01/07(木) 23:30:19.83ID:aNa897Rt
すみません、わからないところがあるので教えていただけると嬉しいです。
visual studio 2013でアプリを作ってるところで、flowrayoutpanelのスクロールバーとマウスホイールを同期させるため、
以下のコードを参考にしたら動くようになりました。

private void Panel_Click(object sender, EventArgs e)
{
var panel = (FlowLayoutPanel)sender;
panel.Focus();
}

けれども、コード中の
"var panel = (FlowLayoutPanel)sender;"の部分が
何をやっているのかわかりません。
flowrayoutpanelにフォーカスするための準備ということはわかりましたが、
わかる方がいたら教えてください。よろしくお願いします。
0504デフォルトの名無しさん2016/01/07(木) 23:31:21.59ID:aNa897Rt
何度も書き込んですみません…
リロードしたら再書き込みされたみたいです…ごめんなさい
0505デフォルトの名無しさん2016/01/07(木) 23:35:53.96ID:WqX4FtZ/
>>501
objectの正体はlayoutですと指定している(キャスト)。
そうしないとlayoutとしてメンバーを扱えない。

基本的に同じインスタンスを扱うが、
float→intにキャストした場合とか値が変わるので注意が必要。
0506デフォルトの名無しさん2016/01/07(木) 23:38:54.08ID:xReZbxBA
>>504
varを調べるつもりがなさそうだから軽く答えるけど
FlowLayoutPanel panel = (FlowLayoutPanel)sender
の意味よ
型をキャストしとるんよ
((FlowLayoutPanel)sender).Focus();
↑こう書いても同じ動作するけど
そうやってキャストしたのを一旦別の変数に持たせるのはよくあること
0507デフォルトの名無しさん2016/01/07(木) 23:45:19.86ID:aNa897Rt
キャスト…!
ああ、そうか。senderを型変換してるんですね
型変換というよりは型指定ってニュアンスの…

初心者向けの本じゃvarとかキャストを使うことがほとんどなかったので、
頭から抜け落ちてました…

ありがとうございます、理解できました。
0508デフォルトの名無しさん2016/01/08(金) 05:26:15.42ID:C0M820FV
今時なら
var panel = sender as FlowlayoutPanel
と書いた方が良い。
0509デフォルトの名無しさん2016/01/08(金) 06:48:25.92ID:/YBx4YCU
そのコードならば型は限定されてる。
0510デフォルトの名無しさん2016/01/08(金) 07:44:25.01ID:K8OImcU7
asの方が見た目が綺麗なのはわかるが、型が確定してる場合にas使うのは誤解とバグの元
0511デフォルトの名無しさん2016/01/08(金) 09:37:44.82ID:z/W2hw6Z
一行でメンバ呼出のためのキャストしたいときとか
asのが括弧少なくなっていいのよね…
本能レベルで()キャスト書いちゃうけど
0512デフォルトの名無しさん2016/01/08(金) 10:29:08.26ID:oGkbrhN8
asのほうが重い処理だと信じているが
両方を一度も比較してみたことはないw
0513デフォルトの名無しさん2016/01/08(金) 11:33:49.87ID:Kn74uLBe
as 使ったほうが変換失敗した時のエラー処理が楽だから重宝しています
!=null と Try{}catch{}じゃ雲泥の差
0514デフォルトの名無しさん2016/01/08(金) 11:53:31.18ID:UaTuFyFJ
as使うユースケースではないって指摘されてるのに
馬鹿かこいつら
0515デフォルトの名無しさん2016/01/08(金) 13:29:56.26ID:SPwv8IXV
http://www7b.biglobe.ne.jp/~whitetiger/cs/cs2005019.html
このコードでファイルの種類を取得すると
ファイルフォルダー が イルフォルダーとか
IrfanView JPG File が nView JPG Fileとか
文字が切れるのですが何処がおかしいのでしょうか?
0516デフォルトの名無しさん2016/01/08(金) 14:51:42.41ID:EVmIpiZQ
>>508
何が良くなる?
0517デフォルトの名無しさん2016/01/08(金) 14:52:36.86ID:EVmIpiZQ
>>510
俺は見た目が悪いと思う
0518デフォルトの名無しさん2016/01/08(金) 14:53:35.45ID:EVmIpiZQ
>>513
変換失敗する事有るのか?
0519デフォルトの名無しさん2016/01/08(金) 14:54:41.12ID:EVmIpiZQ
>>515
作った奴に聞けよ
0520デフォルトの名無しさん2016/01/08(金) 14:55:21.36ID:jv1GyZfR
キャストとか配列のコピートゥーくらいでしか使わないし
as使ったことまだ無い
0521デフォルトの名無しさん2016/01/08(金) 15:04:00.28ID:9v7QtVbF
>>515
SHFILEINFO構造体2番目のpublic IntPtr iIcon;の型は多分intが正解
MSのKB319350からして間違ってる
0522デフォルトの名無しさん2016/01/08(金) 15:49:40.87ID:SPwv8IXV
>>521
intに変えたらちゃんと表示されました。本当に感謝致します。ありがとうございました。
0523デフォルトの名無しさん2016/01/09(土) 01:11:44.49ID:eXTQYEr7
継承先にキャストしたい場合にasを使うな…あんまりないけど
0524デフォルトの名無しさん2016/01/09(土) 01:18:17.70ID:fjSGmDWG
as使うと誤解やバグの元って、具体的にどんなバグが生まれるん?
0525デフォルトの名無しさん2016/01/09(土) 01:44:07.56ID:/BDqjX/g
というより、バグがあった場合に分かりにくい。
xがHoge型であることを確信しているなら当然x as Hogeとした結果のnullチェックは行わないよな?
そのとき、もしバグでxがHoge型でなかったときには
xのメンバを使おうとした時点でヌルポが発生する。
これはキャストの瞬間InvalidCastExceptionで即死するのに比べると原因がわかりづらい。
(x as Hoge).Foo() のようにすぐ死亡してくれる場合はまだいいが、
結果を一旦フィールドに入れて後で使っていたりすると厄介。
05265252016/01/09(土) 01:47:16.65ID:/BDqjX/g
あと、知らない人がコードを読んだとき
(そいつもas厨仲間ならともかく)asでキャストしてたら
「これは失敗する可能性のあるキャストなんだな」と誤解する可能性が高い。
仕様の誤解はあらゆるバグの元だ。
0527デフォルトの名無しさん2016/01/09(土) 01:55:26.70ID:d7OyTAQ0
x as Hogeの後にnullチェック行えばいいだけじゃね?
0528デフォルトの名無しさん2016/01/09(土) 02:18:34.33ID:RXN434tL
なるほど、出来れば普通に()で括ってキャストすればいいのん?

C++を初めていじった時C#の型の少なさに感謝すべきだということに気がついた
0529デフォルトの名無しさん2016/01/09(土) 02:42:58.16ID:fjSGmDWG
(失敗しない場合でも)asの方が若干早いし、Debug.Assert()でnullチェックしとけば誤解の生まれようもない。
0530デフォルトの名無しさん2016/01/09(土) 06:53:51.72ID:ipKoJt7Z
>>527、>>529 に1票だ。
>型が確定してる場合にas使うのは誤解とバグの元
だなんて、ミスリードもいいとこ。
逆に InvalidCastでコケるようなコードの方が殺意沸く。
0531デフォルトの名無しさん2016/01/09(土) 07:03:17.17ID:4yYuKqnI
なんで型が決まってて絶対に成功するのに失敗する場合を想定する必要があるの?
キャストが絶対に成功する場合を話してんのにキャスト失敗するコードが腹立つとかお門違いでしょ
0532デフォルトの名無しさん2016/01/09(土) 07:15:36.45ID:1PcbP7SA
まともなC#プログラマなら全てのInvalidCastExceptionはバグであると認識してるはずだから、
>>529-530みたいな発想は出てこないと思うのだが
きっと彼らは最近までInvalidCastをキャッチするようなクソコードを書いていたか、
仕事でそういうクソコードに悩まされているんだろうな
0533デフォルトの名無しさん2016/01/09(土) 09:42:44.41ID:RV595/l0
ループなのにbreakで抜けられるって意味あるんですか?
一回だけ処理を行うというのと違いがわかりません
0534デフォルトの名無しさん2016/01/09(土) 09:53:25.50ID:KRieFRf7
>>533
人生に行き詰まって、失敗を永遠ループしていないかい?
視野を広げてごらん。
ほらすぐそこに抜け道があるんだよ。
0535デフォルトの名無しさん2016/01/09(土) 09:54:45.10ID:8dWnCTXu
BitmapオブジェクトとGraphicsオブジェクトがよく分かりません
Bitmapオブジェクト自体画像を描けるものですよね
その中にGraphicsオブジェクトがあってそこにも画像を描ける?
概念が分かりません
0536デフォルトの名無しさん2016/01/09(土) 10:30:38.60ID:rnbze7si
>>529
ttp://ufcpp.net/study/csharp/misc_as.html
によると、キャストのほうが僅かに早いみたいだけど変わったの?
まぁ、一割とか誤差レベルだけど
0537デフォルトの名無しさん2016/01/09(土) 11:00:00.50ID:J5rs+efG
>>529
そういうのを手段と目的の逆転ってんだよ
死んどけトンチキ
0538デフォルトの名無しさん2016/01/09(土) 11:11:36.62ID:d7OyTAQ0
>>536
この手の1割速いネタのせいで、未だにforeach使わずに頑なにfor使っている人が実在するから困る
0539デフォルトの名無しさん2016/01/09(土) 11:24:22.86ID:/BDqjX/g
>>535
Bitmapは画像データ
Graphicsは描画命令を出すための操作パネル
Bitmapにつながっている操作パネルを使えば画像データへ描画できるし、
Formにつながっている操作パネルを使えば直接フォームへ描画できる
両方とも操作パネル自体は同じだから同じ操作で違うものへ描画できる
そういう意味ではGraphicsを独立したクラスにするんじゃなくてインターフェースとして
FormやBitmapに直接実装してもいいんだけど、それだと一つのクラスが大きくなりすぎるから分かれてるわけ
0540デフォルトの名無しさん2016/01/09(土) 11:38:02.59ID:n8HSIjmO
C#選んだんならforeach使えばいいのにねw
for使いたいならCでも使えよとw
最大値設定しなくていいのに慣れちゃうとforは使う気しない
C#でfor使ってる奴は.NET分かってない奴
0541デフォルトの名無しさん2016/01/09(土) 11:57:11.00ID:eXTQYEr7
インデックスが必要な場合のfor
Select通すのは微妙だし、ForEachは標準に入ってないし

Ixが標準に入ることはないんだろうか…
0542デフォルトの名無しさん2016/01/09(土) 12:36:29.73ID:y2qOksGB
>> 539
ありがとうです

Graphicsが操作パネルだとすると
Bitmap bmp = new Bitmap(100, 100);
Graphics g = Graphics.FromImage(bmp);
とあった場合、
FromImage(bmp) というのは「bmpを読み込んで」じゃなくて
「bmpオブジェクトを操作するよ」ってことでしょうか

FromImage(bmp) を「bmpを読み込んで」と解釈してたので
BitmapオブジェクトにもGraphicsオブジェクトにも画像を
描けるという認識だったのですが
0543デフォルトの名無しさん2016/01/09(土) 13:02:03.35ID:sj0zN9uO
>>540
まあ要素置き換える場合にはfor使うしかないけどね。

>>542
内部実装はどうなってるか知らないけど、画像だろうがWindowの表面だろうがプリンタだろうが
統一的に描画するためのラッパーだと思っておけばいいと思うよ。
0544デフォルトの名無しさん2016/01/09(土) 14:03:23.09ID:FulZHjyK
>>536
10年前の記事を鵜呑みにするのは
烏賊がな物かと
0545デフォルトの名無しさん2016/01/09(土) 14:24:55.99ID:UqTdOJvq
foreachって順不同だよね?
List<T>の場合は内部実装が配列だから実際はforeachでも昇順になるとしても
全走査か順次処理かの意図を伝えるために使い分けるわ。


>>533
while(true) {
処理A
if XXX break;
処理B
if XXX break;
処理C
break;
}
後続処理

みたいに1回しか通らないけど中断してGOTO的に使ってるコードはたまにあるね
0546デフォルトの名無しさん2016/01/09(土) 14:42:42.32ID:6gDXs0JP
>>545
>foreachって順不同だよね?
何を馬鹿なこと言ってるんだお前は
0547デフォルトの名無しさん2016/01/09(土) 14:47:49.69ID:+7ynE4D6
C#習いたてだけど、hash(dictionary?)の時は順不同、
配列の時は格納順ってイメージ
List型も格納順ってあるよね?
0548デフォルトの名無しさん2016/01/09(土) 14:53:03.65ID:/zf3lzOM
>>542
漏れの推測で書くけど、

メモリ上に、画像を作る
Bitmap bmp = new Bitmap(100, 100);

画像を、抽象的なデバイスで、扱えるように変換する(ラッパー)
Graphics g = Graphics.FromImage(bmp);

その後、実際のビデオカードか、
ディスプレイの規格にあった、GPUへ送られる
0549デフォルトの名無しさん2016/01/09(土) 15:20:58.09ID:ghZcmnXD
>>547
順不動もなにも辞書の順番て何だって話。
C#はどうかしらんが他の言語にはだいたsortedmapみたいな
何らかの並び順を保障した辞書がある
0550デフォルトの名無しさん2016/01/09(土) 15:24:46.91ID:6gDXs0JP
辞書の順番と言ったら辞書の順序(lexicographical order)だろう
日本語が不自由な人?
0551デフォルトの名無しさん2016/01/09(土) 15:26:40.04ID:ghZcmnXD
>>550
いや、書いた瞬間それ言われるのは覚悟したから優しくスルーしてほしい
0552デフォルトの名無しさん2016/01/09(土) 15:34:19.37ID:+7ynE4D6
そっかhashじゃなくてdictionaryって意味ある名前だったんだな
勉強になった(´・ω・`)
0553デフォルトの名無しさん2016/01/09(土) 15:39:32.75ID:YRzABCdf
>>552
それ勘違いしてる恐れあり
Hashtable ←いわゆるhash
Dictionary ←Hashtableのジェネリック版
SortedDictionary ←キーに基づいて並べ替えられたDictionary

いちおう
0554デフォルトの名無しさん2016/01/09(土) 15:49:40.27ID:+7ynE4D6
>>553
別物なのね
じゃあやっぱりDictionaryをkeyでforeachしたら順不同か
0555デフォルトの名無しさん2016/01/09(土) 15:58:41.79ID:aPlZ2XXY
上でも書いてる人いるけど(なぜか馬鹿が叩いてるが)foreachの列挙順はコレクションのインデックス順に
なってる保証はないはずだけど。

(現実にはインデックス順だろうけど、列挙子がそういう実装になってなくても文句は言えない)

それはコレクションの中で要素がどういう順番で並んでいるかとは別問題。
0556デフォルトの名無しさん2016/01/09(土) 16:26:25.85ID:321rOZDz
IEnumerableインターフェイスの実装次第。
もっと言えば、IEnumeratorインターフェイス MoveNext()の実装による
というものだと思ってたんだけど。
認識合ってる?
0557デフォルトの名無しさん2016/01/09(土) 16:44:34.30ID:+7ynE4D6
SortedDictionaryがなんで実装されてるかって考えると
sortするコストが必要かどうかって事だと思うから
ただのDictionaryの場合のイテレータの処理順序は保証されないってのが正解な気がする
0558デフォルトの名無しさん2016/01/09(土) 17:06:55.86ID:eXTQYEr7
Dictionaryの取り出し順序は一応追加順、Removeしなければ

なんでLinkedDictionaryって無いんだろうな…
0559デフォルトの名無しさん2016/01/09(土) 18:01:24.62ID:weJV1QM8
IEnumerableのGetEnumeratorは実装がないから順不同
配列とかのGetEnumeratorは実装によって順番が定義されるから順不同じゃない

C#じゃなく日本語の問題だろ
0560デフォルトの名無しさん2016/01/09(土) 18:09:52.56ID:J5rs+efG
変な話
仕様に書いてあればそのように認識して良いし
書いてないなら変な前提を置くな
推測するのも止めろ
0561デフォルトの名無しさん2016/01/09(土) 18:29:36.44ID:v8FL872J
上で質問した人じゃないですが、結局asとキャストの使い分けがよく分からないのですが
どっちでもいいって感じですか?
使い分ける目安みたいなのがあれば、教えて下さい
0562デフォルトの名無しさん2016/01/09(土) 18:41:50.87ID:d7OyTAQ0
>>561
個人的には型とnull以外であることが保障されていてるオブジェクトならキャスト、それ以外はasとnullチェックや?? 演算子を1セットにしているわ
仕事なら上に聞けばいいし、個人の範疇なら好きにすればで
0563デフォルトの名無しさん2016/01/09(土) 18:42:34.40ID:UqTdOJvq
>>561
基本キャストに統一。InvalidCastExceptonは完成までに根絶する。
変換できないパターンを自分でハンドリングしたい場合だけas使用
0564デフォルトの名無しさん2016/01/09(土) 18:46:02.38ID:AZkh53jv
例外発生があり得ないか、
例外発生したら切腹しなければならないならキャスト
そうでないならas

目安じゃなくて
人に見せるコードなら守って
0565デフォルトの名無しさん2016/01/09(土) 18:53:33.65ID:vv5IN0Y0
キャストは値型以外ではまず使わないな。
0566デフォルトの名無しさん2016/01/09(土) 18:53:56.30ID:J5rs+efG
スマート脳もいいけど、コード読んだ人に適切に意味が伝わるように書いてね
as使いたいからasを使って、次の行にDebug.Assert置くみたいな、一般的でないことをすると
レビュー中に「何やってんだこいつ」と思わせるだけで時間の無駄だから
0567デフォルトの名無しさん2016/01/09(土) 18:56:49.72ID:vv5IN0Y0
あとexplicitな変換もキャストじゃないとダメか
0568デフォルトの名無しさん2016/01/09(土) 19:02:34.65ID:RV595/l0
もうダメだ
サンプルの少なさは俺にとって致命的だ
一旦諦めてCからやり直す
0569デフォルトの名無しさん2016/01/09(土) 19:35:19.51ID:eXTQYEr7
キャストを as メインで使ってる奴いるの?
間違ったキャストだったら例外になるのが親切じゃね

型で処理を分ける場合のみ as
0570デフォルトの名無しさん2016/01/09(土) 19:43:28.87ID:GQZs9W2l
>>569
無暗に例外投げられても面倒な場合が多いからTry○○系のメソッドが
好まれるようになってる訳で。
0571デフォルトの名無しさん2016/01/09(土) 19:44:36.57ID:eXTQYEr7
それとは別だろ
キャスト間違いって明らかなバグじゃん
0572デフォルトの名無しさん2016/01/09(土) 19:49:53.81ID:GQZs9W2l
>>571
何が言いたいのかよく分からん。
デバッグと例外処理は本来まったく次元の違う別個の問題。
0573デフォルトの名無しさん2016/01/09(土) 19:58:41.34ID:eXTQYEr7
>>572
間違ったキャストなら、例外吐いてくれた方が親切
例えば>>503でButtonにキャストするコードを書いたらInvalidCastExceptonを期待するだろ
0574デフォルトの名無しさん2016/01/09(土) 20:33:44.77ID:1IbXuGB2
>>570
> 無暗に例外投げられても面倒な場合が多いからTry○○系のメソッドが

だからそれは、
> 処理を分ける場合
でしょ
0575デフォルトの名無しさん2016/01/09(土) 20:56:31.33ID:GQZs9W2l
>>573
それはただのバグ。
デバッグと例外処理の区別がつかないって何なの。

>>574
いや意味が分からない。
0576デフォルトの名無しさん2016/01/09(土) 21:13:42.13ID:J5rs+efG
分からないなら喋るなよ
マヌケ
0577デフォルトの名無しさん2016/01/09(土) 21:22:18.90ID:GQZs9W2l
>>566なんて例外処理とデバッグの区別のついてない典型例だな
0578デフォルトの名無しさん2016/01/09(土) 21:25:09.61ID:FulZHjyK
>>568
サンプルなんて腐る程あるだろ
0579デフォルトの名無しさん2016/01/09(土) 21:27:07.17ID:1IbXuGB2
>>575
> いや意味が分からない。
マジで言ってるなら、マをやめた方がいい
0580デフォルトの名無しさん2016/01/09(土) 21:32:23.08ID:GiqjJrGR
>>575
Try○○系はキャストできたら処理A、できなければ処理Bを実行するというように処理を分けたい場合に使う。
>>573 が言っているのは、as を使ってコードを書いて
private void Panel_Click(object sender, EventArgs e)
{
 var panel = sender as Button;
 if (panel != null)
  panel.Focus();
}
本来FlowLayoutPanelとすべきところを間違ってButtonと書いてしまった場合、
panel.Focus() が実行されていないことを見落とすかもしれないってこと。
as を使わずに
var panel = (Button)sender;
って書いてあればInvalidCastExceptonになるから間違いに気付ける。
0581デフォルトの名無しさん2016/01/09(土) 21:33:13.42ID:GQZs9W2l
>>579
お前がな。

TryXXXパターンのようにboolを返すのでなく例外を投げる仕様のメソッドを使った場合も
(通常は)例外をキャッチする箇所で例外の有無で処理を分けるんだけど分かってるのかね。
0582デフォルトの名無しさん2016/01/09(土) 21:37:33.42ID:GQZs9W2l
>>580
だから何度も言ってるように、デバッグと例外処理はまったく別問題。
バグが疑われる箇所は普通にAssertを使う。

バグを例外で検出できない恐れがあるからダメなんだ、なんて議論が通用するなら
TryXXXパターンも使うなという結論になる。
0583デフォルトの名無しさん2016/01/09(土) 21:57:57.02ID:ElI3ItOe
相変わらず例外は馬鹿だな。
例外じゃなくお前の玉を握り潰すぞ。
0584デフォルトの名無しさん2016/01/09(土) 22:32:08.15ID:N/cvH//+
例えば次のようなプログラムがあるとして、
class Date
{
public int Month { get; private set; }
public int Day { get; private set; }
public void SetDate(int month, int day) { Month = month; Day = day; }
}

class Person
{
public Date Birthday { get; private set; }
public Person() { Birthday = new Date(); Birthday.SetDate(1, 9); }
}

Personクラスでは、Birthdayは外部から変更されたくなくて、参照だけを許可したいとします(※)。
このため、Birthdayのsetプロパティをprivateにしています。
しかし、Birthdayのgetプロパティが内部データへの参照を返すため、クラスを利用する側が
Person man = new Person();
man.Birthday.SetDate(12, 31);
とすれば、Birthdayを変更できてしまいます。

このような場合、(※)のような制約をつけたければ、どう書くのが普通なのでしょうか?
Birthdayのgetプロパティで、新しいDateのインスタンスを作って、コピーを返すべきなのでしょうか?

C++だと、
const Date& Birthday() { 略 }
と、Get関数の戻り値に const をつければ、内容を変更できない参照を返せるのですが…。
0585デフォルトの名無しさん2016/01/09(土) 22:33:33.29ID:eXTQYEr7
TryXXXパターンも失敗が想定されるところでのみ使う

例えばDictionaryの"hoge"キーがあるのが分かっててTryGetValue使うか?
0586デフォルトの名無しさん2016/01/09(土) 22:40:50.88ID:eXTQYEr7
>>584
DateTimeじゃいかんのか?と思うけど、

Dateクラスのコンストラクタにmonthとday引数を用意する
0587デフォルトの名無しさん2016/01/09(土) 22:41:56.27ID:y2qOksGB
>> 548
ありがとうです

操作パネルと考えてもラッパーと考えてもいいですよね
bmpに直接点を打つことはできるけど、線を描くのは無理
その為にGraphicsオブジェクトに線を描く命令があるよ
って思えばいいのかな
FromImageの意味を考えてしまうから駄目みたい
でも考えてしまう
0588デフォルトの名無しさん2016/01/09(土) 22:49:21.28ID:eXTQYEr7
>>584
後、DateとPersonを、呼び出し元と別DLLにできるなら、SetDateメソッドをinternalにする手もある
0589デフォルトの名無しさん2016/01/09(土) 23:06:48.44ID:N/cvH//+
レスありがとうございます。

例で言えば、Dateクラスのコンストラクタにmonthとday引数を用意して、そもそもSetDateなんて作らなければ
いいじゃないか、と言われるかもしれませんが…。
Dateクラスは質問のために書いただけで、日付を扱うプログラムを実際に書きたいわけではありません。

質問の内容としては、

入門書には、「内部データを直接公開せずに、set/getプロパティ等を使って内部データを隠蔽しよう」
みたいなことが書かれているけど、getプロパティをprivateにしても、参照型の場合は内部データの参照を
返してしまうから、内部データ側のクラスに設定メソッドが公開されていれば、取得だけではなくて設定も
されてしまう。こういう場合、一般的に、どう書くのが普通なのかな?

ということなのです。
0590デフォルトの名無しさん2016/01/09(土) 23:11:27.27ID:N/cvH//+
あ、間違えました。
×) getプロパティをprivateにしても、
○) setプロパティをprivateにしても、
です。
0591デフォルトの名無しさん2016/01/09(土) 23:37:02.57ID:eXTQYEr7
C++のconst相当のことはできないのでメソッドを公開するなら無理

せいぜいできるのはDLL分離してinternalで隠す >>588
0592デフォルトの名無しさん2016/01/09(土) 23:50:16.69ID:N/cvH//+
了解しました。

フィールドがクラス型で、それを読み取り専用にしたいというのはよくあることのような気がするのですが、
単純にはできないんですね。
せっかくsetとかgetとかの仕組みがあるのに、意外と融通が利かないものなんですね。

どうもありがとうございました!
0593デフォルトの名無しさん2016/01/10(日) 00:18:42.60ID:2fzuCWWo
>>581
もともとのお話は失敗する可能性のない物にTryXXXパターン使うな
失敗する可能性があるように見えるって話でしてね

小学校からやり直してきてね
あと、よく分かりもしないのに大人の話に口を挟まないように
0594デフォルトの名無しさん2016/01/10(日) 00:23:52.70ID:4UItudR1
>>593
馬鹿だろお前。
どこにそんなことが書いてあるのか言ってみろ。
0595デフォルトの名無しさん2016/01/10(日) 01:04:47.28ID:hZikTLMs
かならず成功するハズの処理で例外をスキップしたらあかんだろう。

それバグ隠蔽っていうんだぞ。

asはキャスト失敗を許容する時に使うもんなんだから、こっちの方がスマートとかそういう話じゃないんだが。

まず、例の箇所は必ずキャスト成功させる場面なんだから文句あるなら例文を変えろよ
0596デフォルトの名無しさん2016/01/10(日) 01:08:07.66ID:7SYpesUH
asとキャスト論争まだやってんのかよw
0597デフォルトの名無しさん2016/01/10(日) 01:40:47.71ID:G9FCRkLf
まあ、個人で使ってるだけならどっちでもいいかな。
0598デフォルトの名無しさん2016/01/10(日) 01:58:46.07ID:ZmHi4ONW
>>543
要素置き換える場合でも、魔法の合言葉ToArray()を唱えれば大丈夫じゃん
forをつかうのは、処理にi自体を使う場合だけかな?
0599デフォルトの名無しさん2016/01/10(日) 03:00:36.73ID:9aNZGNbQ
>>595
何を言ってるのか全然分からないけど、キャストよりas、例外を投げるメソッドよりTryXXXが好まれるのは、
処理の成否だけ分かれば十分でなケースの方が圧倒的に多く、例外を捕まえて詳細な情報が必用な
ケースなんかむしろあんまりないからだ。

>>598
ToArrayなんか使ってもforeachで要素の置き換えなんかできないと思うけど
0600ネットワークエンジニア(プロ)です2016/01/10(日) 07:16:09.54ID:IGqj8XoF
>>599
例外の警告ってなんのために出すと思う?
例外だからだよwww
0601デフォルトの名無しさん2016/01/10(日) 07:21:13.55ID:XSe/Cltb
>>599
あんまりないは全くないと非なるものだよ
自分で言ってて妙に感じないのww
0602デフォルトの名無しさん2016/01/10(日) 07:57:59.45ID:3SBznyor
>>598
破壊的に変更したいって場合が結構あるからね
0603デフォルトの名無しさん2016/01/10(日) 08:06:36.61ID:ZmHi4ONW
>>599
foreach(var x in hoge.ToArray())
{
0604デフォルトの名無しさん2016/01/10(日) 08:08:31.73ID:ZmHi4ONW
ミスった
>>599
foreach(var x in hoge.ToArray())
   hoge.Remove(x);

はエラー無く実行できますよ
0605デフォルトの名無しさん2016/01/10(日) 09:07:42.53ID:mRELau7E
>>596
アホが1名ゴネてるだけ
0606デフォルトの名無しさん2016/01/10(日) 10:29:56.90ID:5YyabK/9
関数の
0607デフォルトの名無しさん2016/01/10(日) 12:21:10.40ID:HI8AxqBs
関数の、なんだよ?

>>604
んな簡単なことに気付かなかったんだと自覚させちまうと
マウント取るために清水亮並みに絡んでくるぞ
0608デフォルトの名無しさん2016/01/10(日) 12:39:14.45ID:Cij84z8x
>>604
>>607
それは「置き換え」じゃなくて「削除」。
0609デフォルトの名無しさん2016/01/10(日) 12:40:47.28ID:Cij84z8x
どうでもいいが、いつも思うけど、>>607みたいな「粘着ガー」と粘着してくる馬鹿の精神構造ってどうなってるのかね。
0610デフォルトの名無しさん2016/01/10(日) 13:13:32.00ID:ZmHi4ONW
>>608
置き換えって削除と挿入だろ?順番変えるだけならLinqを使うのが常套手段だし一体どんなものを想定しているの?
0611デフォルトの名無しさん2016/01/10(日) 13:25:20.59ID:JeKaLAZ3
多数から突っ込まれてる場合は大体自分がおかしいので考え直してみるのが吉
それでも正しいと確信できるなら納得させるだけの説明と根拠を示せないと
ただ単に言い負かせたいだけの自己中で自己満足したいという、程度の低い人物になってしまう
0612デフォルトの名無しさん2016/01/10(日) 14:37:24.71ID:lZOXy80P
仮にみんながasだけしか使わないなら、それはそれで大した問題はないだろうね
しかし一方で、議論が盛り上がるほど「誤解される」という最大の問題の裏付けになっていることにas君は気付いてないのかな
正しい正しくないじゃなくて、これは作法の問題なんだよ
共通認識があることに意味があるの
0613デフォルトの名無しさん2016/01/10(日) 14:56:43.57ID:HvvrKc9L
>>611-612
今日はこのぐらいで勘弁しといたるワ、と言ってるようにしか聞こえない。
しかし、こういう連中って自分の言葉を自分自身にまず適用するだけの知恵もないのか。
重症だな。
0614デフォルトの名無しさん2016/01/10(日) 15:11:50.64ID:G9FCRkLf
衆愚肯定はいかがなものかと
0615デフォルトの名無しさん2016/01/10(日) 15:16:09.85ID:HvvrKc9L
デバッグと例外処理の区別もつかない奴が偉そうに上から目線で
食って掛かってくるんだから泣けてくるよな。
0616デフォルトの名無しさん2016/01/10(日) 15:49:44.82ID:vHEBiB0A
どちらにしろ、こうまで攻撃的な言動するヤツで、リアルで使えるヤツに当たったことがない。。
0617デフォルトの名無しさん2016/01/10(日) 15:51:15.54ID:Q6iPmnC+
asとキャストのやつ、どっちの意見でもいいけどmsdnあたりにソース無いのかな
0618デフォルトの名無しさん2016/01/10(日) 16:21:33.83ID:U57x58WF
>>610
置き換えってインデクサのセットじゃないの?
破壊的変更って奴

as君はこの辺りでも読んどけ
https://blogs.msdn.microsoft.com/ericlippert/2009/10/08/whats-the-difference-between-as-and-cast-operators/
http://stackoverflow.com/questions/132445/direct-casting-vs-as-operator
0619デフォルトの名無しさん2016/01/10(日) 16:22:26.11ID:2fzuCWWo
例外の時もnull結合演算子の時もこんな感じだったな
0620デフォルトの名無しさん2016/01/10(日) 16:47:26.66ID:FWhWg0iK
できればコテつけて欲しいんだが。
無駄話を連鎖あぼーんできれば便利だろ。
0621 ◆QZaw55cn4c 2016/01/10(日) 16:49:04.35ID:VQDMXfno
ほい
0622デフォルトの名無しさん2016/01/10(日) 17:12:48.82ID:FWhWg0iK
お前は呼んでねえ!話をややこしくするな。
0623デフォルトの名無しさん2016/01/10(日) 17:20:15.29ID:sEmozDXF
>>618
結論を教えろよ
0624デフォルトの名無しさん2016/01/10(日) 17:54:47.93ID:1UfP7RSB
結論:犯人はヤs
0625デフォルトの名無しさん2016/01/10(日) 18:09:53.43ID:5YyabK/9
だれか教科書書いてくれ
本屋にもゴミしか無かった
0626デフォルトの名無しさん2016/01/10(日) 18:20:49.80ID:ZmHi4ONW
>>618
上のやつ
例えばどんなケースで問題になるのですか?通常はToArrayやっちまった後なら、ループ内でコレクションをどう弄ろうがエラーにならないはずだが
気になるのでコード書いてくれませんか?
0627デフォルトの名無しさん2016/01/10(日) 18:30:07.87ID:vO5UEyhN
>>625
ここの人たちにゴミじゃない教科書が書けると思っているのですか?
0628デフォルトの名無しさん2016/01/10(日) 18:56:26.74ID:U57x58WF
>>626
>>543じゃないから正確なことは分からないけど
values[i] = value
が置き換えじゃないのってだけ
0629デフォルトの名無しさん2016/01/10(日) 19:37:43.36ID:yMwz0uOc
visual C#でTabControlのTabPage1を複製するときに、
子コントロールのリネームを楽にする方法があれば教えてほしいです

Tabpage1
tabpage1_label1
tabpage1_label2
tabpage1_label3

をコピーすると

Tabpage2
label4
label5
label6

このlabel4,5,6をtab2_tabpage1_label1のような形で複製したいです
0630デフォルトの名無しさん2016/01/10(日) 21:25:14.39ID:ZmHi4ONW
>>628
それだとシーケンスは壊さないからToArrayなしのforeachでもエラーにならんよね
0631デフォルトの名無しさん2016/01/10(日) 21:50:29.99ID:lZOXy80P
>>629
考え方がおかしい
同じならユーザーコントロールにしたらリネームなんかいらない
0632デフォルトの名無しさん2016/01/10(日) 23:45:47.54ID:srmp5NkD
>>618
まだ懲りずに「今日はこのぐらいで勘弁しといてやるワ」か。
0633デフォルトの名無しさん2016/01/10(日) 23:54:41.01ID:5YyabK/9
猫でも分かる
は5章で詰んだ
死ね猫
0634デフォルトの名無しさん2016/01/10(日) 23:56:51.45ID:5YyabK/9
つーか猿とか猫とか舐めてんのか?
06356292016/01/10(日) 23:59:26.28ID:2wOOq237
>>631
Windowsフォームである程度作ってしまったのですが、Tab以下のユーザーコントロール化ってできたりしませんか…
オブジェクト数が100超えてるので1から作り直すのは辛いです…
0636デフォルトの名無しさん2016/01/11(月) 00:00:56.67ID:I2wHpsxZ
>>632
チェッカーズの歌詞みたいなやつだなお前。
その異常地味た攻撃性向って生まれつき?
0637デフォルトの名無しさん2016/01/11(月) 00:07:15.15ID:gm1WMBnH
>>636
だからどういう自己中心性だよ。
お前の世界では他人に幼稚なレッテルを張って上から目線で命令を下すのは攻撃的じゃないのか馬鹿。>>618
ほんっと重症だな。

こっから先は完全に余談だけど、こういう馬鹿がマ板くんだりで自分の無能を棚上げして
ブラック企業被害妄想に浸ってるんだろうね。

ゆとり教育の成果なのか少子化で一人っ子が増えてるせいか知らんけど、
生まれながらに自分だけが特別扱いされる特権を持ってると勘違いしてる馬鹿が
今世紀に入って確実に増えてる。
0638デフォルトの名無しさん2016/01/11(月) 00:13:00.17ID:gm1WMBnH
>>635
Tab以下っていうのが何のことを言ってるのか良く分からないけど、
単純に作ったユーザーコートロールをTabPageに貼るだけ。

そもそもユーザーコントロール化が可能かどうか要件が分からないから何ともいえないけど。
0639デフォルトの名無しさん2016/01/11(月) 00:36:17.86ID:UeX+hyF3
>>637
お前ほんとに>>618読んだ?
それとも転載してあげた方がいい?

And finally, of course the use cases of the two operators are superficially similar, but semantically quite different.
A cast communicates to the reader “I am certain that this conversion is legal and I am willing to take a runtime exception if I’m wrong”.
The “as” operator communicates “I don’t know if this conversion is legal or not; we’re going to give it a try and see how it goes”.
0640デフォルトの名無しさん2016/01/11(月) 00:48:06.28ID:gm1WMBnH
>>639
だから何?としか言いようがない。>>599
それで鬼の首でも取ったような気になれる感覚が理解に苦しむ。
0641デフォルトの名無しさん2016/01/11(月) 00:52:53.12ID:50Ta3fhs
だからもうどうでもいいじゃん。
0642デフォルトの名無しさん2016/01/11(月) 00:57:46.87ID:MPguxAcm
すげえな連休中asキャストで潰すとかw
うらやましいわ
0643デフォルトの名無しさん2016/01/11(月) 00:59:31.22ID:FmNI4iA+
誰かが別の型渡してもエラー起きなくていいんだ。
馬鹿じゃねーの。
0644デフォルトの名無しさん2016/01/11(月) 01:02:11.73ID:gm1WMBnH
というか、>>639の説明もあんまり適切とは思えんね。

キャストが使ったプログラマが必ずしも仕様上常に正しい変換が行われることを意図しているとは限らないし、
(不適切な変換が行われて例外が投げられる場合もありうる仕様かもしれない)
asを使ったからってその逆とも限らない。
0645デフォルトの名無しさん2016/01/11(月) 01:11:48.08ID:JvrlUDJ8
夜中も元気ね
0646デフォルトの名無しさん2016/01/11(月) 01:13:42.52ID:JvrlUDJ8
異常地味たじゃなくて十分異常だよこれはww
毛の壁に匹敵するわ
0647デフォルトの名無しさん2016/01/11(月) 02:53:52.16ID:dvaW+Y9E
>>644
論理をすりかえるなよ
意図した型じゃなかった時に次の行に進んで良いかどうかだ
0648デフォルトの名無しさん2016/01/11(月) 08:14:31.32ID:cVa7oOJ2
>>647
そんなこと書いてない。
馬鹿じゃないのか
0649デフォルトの名無しさん2016/01/11(月) 08:15:27.33ID:cVa7oOJ2
ていうか書いてあろうがなかろうが、次の行に進むかどうかが何か意味を持つと
本気で思ってるなら酷い馬鹿だ。
0650デフォルトの名無しさん2016/01/11(月) 08:21:44.29ID:cVa7oOJ2
っていうか、もう3回ぐらい書いたはずだけど>>647みたいなのは
デバッグと例外処理の区別がついてないからこういう頓珍漢なこと言うんだろうね。

「バグがあっても検出できないじゃないか!!!」ってそれは例外処理じゃなくてデバッグしろよって。
まあ恐らく言っても分からない。
0651デフォルトの名無しさん2016/01/11(月) 08:32:48.19ID:gUndm2es
意味不明
バグを検出したからデバッグするんだろ
0652デフォルトの名無しさん2016/01/11(月) 10:12:59.68ID:vXiBlDdD
議論がwhileループしているような気がします
0653デフォルトの名無しさん2016/01/11(月) 10:48:12.65ID:D1R/kCSG
そういう芸風なの
0654デフォルトの名無しさん2016/01/11(月) 10:56:55.03ID:D1R/kCSG
彼がキチガイだってのは連休中のやり取りで十分理解できたでしょ
すでに感染して流せなくなっちゃった奴はともかく
そうじゃない奴は迂闊に近寄っちゃ駄目
感染っちゃうよ
0655デフォルトの名無しさん2016/01/11(月) 11:13:41.89ID:D1R/kCSG
この人は

・「馬鹿」もしくは「幼稚」をほとんどのレスに含む
・「>>>数字みたいな」の安価を含む
・句読点は入れる派だけど完璧じゃない

が特徴なので分かりやすいはずです
ちなみに222も同じ人です(4回連続で馬鹿って書いてますね)
0656デフォルトの名無しさん2016/01/11(月) 14:00:12.87ID:LfDMv3TV
本人が見てる所で指摘してしまったら意味がないような?
0657デフォルトの名無しさん2016/01/11(月) 18:46:35.40ID:U/eWhfN7
>>650
君はテスト実施しないのかなw?
テスト済みならデバッグコードを組み込む必要はないんだけとw?
0658デフォルトの名無しさん2016/01/11(月) 18:52:52.19ID:U/eWhfN7
そうか常にデバッグモードなのか。
そういう状況なら納得ですね。
0659デフォルトの名無しさん2016/01/11(月) 21:33:20.63ID:Dzm9rVm2
>>657
馬鹿もこもまでくるとすがすがしいね。
どこにデバッグコードを組み込めなんて書いてある。
むしろそんなことをするなと言ってるんだけど。
0660デフォルトの名無しさん2016/01/11(月) 21:47:39.23ID:Dzm9rVm2
しかし、>>65-655
こんな幼稚なレスで勝ったつもりになれる奴って哀れだね。人間として終わってる。

こちらはちゃんとなぜasの方が使い勝手がよいか理由付きで書いてるのに、
噛みついてる奴は幼稚な人格攻撃かデバッグ段階で排除すべき可能性を例外で
検出しろとかいう類のよく分からない話しか出てこない。

あとは>>580ぐらいだけど、これもかなり無理がある。
0661デフォルトの名無しさん2016/01/11(月) 21:48:16.78ID:Dzm9rVm2
>>654-655
0662デフォルトの名無しさん2016/01/11(月) 22:03:09.58ID:Dzm9rVm2
しかし、自分で幼稚なこと書いておいてそれを指摘されると「あの人は幼稚って言葉を好むオカシな人です」って
凄い自己中心性だなw

ポジティブ思考と言えば聞こえが良いけどただの恥知らず。
0663デフォルトの名無しさん2016/01/11(月) 23:39:23.51ID:EnmyN0sR
割と怒り心頭らしいな
でも完全に自分で蒔いた種だよね
0664デフォルトの名無しさん2016/01/12(火) 00:24:36.31ID:8YRirrTO
asとか適当なことやったら、
今後間違ったコード追加したらエラー発生しないから、間違っていることにすら気づけないじゃん。

ところで、foreachにT[]の配列渡すとT型のitemを回せるけど、
T[].GetEnumrator()するとノンジェネリックのEnumratorが返るのはなぜ?
IEnumrable<T>が明示的宣言されているの?
0665デフォルトの名無しさん2016/01/12(火) 01:14:45.93ID:7RSj72FG
最初に質問した者ですが、とりあえず初心者的にはキャスト使っておけばいいって事ですかね
荒れるような質問失礼しました
0666デフォルトの名無しさん2016/01/12(火) 01:21:47.13ID:xcvGIOve
T[]にforeachの場合はGetEnumerator呼ぶんじゃなくて
もっと単純で効率的なILに展開されるようになっとるで
0667デフォルトの名無しさん2016/01/12(火) 01:31:12.25ID:Cs06pQDp
> Starting with the .NET Framework 2.0, the Array class implements
> the System.Collections.Generic.IList<T>, System.Collections.Generic.ICollection<T>,
> and System.Collections.Generic.IEnumerable<T> generic interfaces.
> The implementations are provided to arrays at run time, and as a result,
> the generic interfaces do not appear in the declaration syntax for the Array class.
> In addition, there are no reference topics for interface members
> that are accessible only by casting an array to the generic interface type
> (explicit interface implementations).
0668デフォルトの名無しさん2016/01/12(火) 01:32:50.51ID:8YRirrTO
そうなんだ。勉強になる。
だけど、疑問はGetEnumrator<T>が実装されてないのか。
パフォーマンス的な問題??
0669デフォルトの名無しさん2016/01/12(火) 01:35:39.33ID:8YRirrTO
>>667
ありがとう。
なぜ明示的なんだろう・・・?
0670デフォルトの名無しさん2016/01/12(火) 01:38:39.32ID:rxS/9o6U
>>664
その「配列とGetEnumratorとジェネリックの謎」はみんなが通る道と思う
んで調べまわった挙句
https://msdn.microsoft.com/en-us/library/czz5hkty
にコソーっと一文書いてあるだけという
俺も毎回これ忘れた頃に調べなおしてる
0671デフォルトの名無しさん2016/01/12(火) 01:48:37.39ID:8rTTpObL
IEnumrable<T>の引数にすればOK
インデックスアクセスが必要ならIList<T>になるのが微妙だけど
0672デフォルトの名無しさん2016/01/12(火) 02:00:27.12ID:iDDwmGx/
>>664
IEnumerator e = array.GetEnumerator();

使うときは、(型名)e とキャストすれば、
T型しか入っていないから安全
0673デフォルトの名無しさん2016/01/12(火) 02:35:52.19ID:tu2jRtps
>>664
だからバグってのはデバッグ作業で洗い出すものであって例外で検出するものじゃない。

バグが残ってた場合でも安全側に倒せるとか言いたいのかもしれないが、普通asやキャストを使う目的は
変換後のオブジェクトを操作するためなんだから、asを使ったところでその段階で例外が起こるんだから同じこと。
0674デフォルトの名無しさん2016/01/12(火) 04:03:23.28ID:vzKvvw6W
じゃあプログラムのスタートポイントにtry catch入れておけよ。
デバッグで潰すんだからいいよな。
0675デフォルトの名無しさん2016/01/12(火) 08:00:08.31ID:8rTTpObL
as でキャスト失敗 → 操作すると NullReferenceException
() でキャスト失敗 → そこで InvalidCastExcepton

どっちがバグが分かり易い?
0676デフォルトの名無しさん2016/01/12(火) 08:24:17.06ID:EEhodjTq
>>675
どっちも同じ。
どちらの例外もなぜその例外が発生したかの情報は何も与えてくれない。
バグは変換そのものではなく、返還対象の変数にオブジェクトが格納される箇所にあるのだから当たり前だ。
0677デフォルトの名無しさん2016/01/12(火) 08:31:04.57ID:EEhodjTq
だから最初から言ってるように、例外を投げないからasを避けてキャストを使え、なんて理屈を認めるのなら
TryXXXパターンについても同様でなければならない。

例外投げるメソッドよりTryXXXを好んで使うけどasはダメ、なんて態度は頭の悪い論理矛盾でしかない。
0678デフォルトの名無しさん2016/01/12(火) 09:02:58.57ID:8rTTpObL
>>676
InvalidCastExceptonてだけでキャスト失敗したんだって一目で分からない?

Dictionaryの値取得も全部TryGetValue使うの?
凄いソースになりそう…
0679デフォルトの名無しさん2016/01/12(火) 09:39:04.39ID:8YRirrTO
デバッグ済んでる(バグない)から大丈夫だよw
バグ出さない人がなぜデバッグしてるのか不思議w
0680デフォルトの名無しさん2016/01/12(火) 11:15:58.30ID:sWEOWf3Z
デバッグ段階はともかく、本番だとバグが有ってもそれなりに動くほうが大事じゃね?
まあ記録は残せるようにした方がいいけど放置でも問題ない場合も少なくない
0681デフォルトの名無しさん2016/01/12(火) 16:50:04.88ID:4jtZl+9X
>>673
デバッグってのは、バグが出てから修正する作業の事を言うんじゃないのか?
バグが無いかチェックするのはテストだろ
0682デフォルトの名無しさん2016/01/12(火) 19:58:37.10ID:KW/Xw3D4
>>680
ソフトによるとしか言えんわな
かね扱うソフトでテキトーな結果出されても困るし

>>681
言葉遊びしたいなら、チラシの裏にでも書いとけよ…
0683デフォルトの名無しさん2016/01/12(火) 20:22:54.77ID:jfJr9zeb
まだやってんのかよ。
お前らは人間初心者をいつ卒業すんの?
0684デフォルトの名無しさん2016/01/12(火) 22:10:08.21ID:MMw4PyB+
asに構造体は使えないんだけど、その場合はどうすんの?
0685デフォルトの名無しさん2016/01/12(火) 23:11:14.34ID:nYMhZmRI
配列を宣言するとき
int[] a = {0,1,2,3};
int[] b = new int {0,1,2,3};
の違いって何ですか?
0686デフォルトの名無しさん2016/01/12(火) 23:35:20.63ID:NzXAV9Z/
上は配列変数宣言専用の構文で、右辺は式ではない
下の右辺はそれ単体で新しい配列を作って初期化する式で、その結果をbに代入している
右辺のintを省略したいなら上の書き方はやめて int[] c = new[] {0, 1, 2, 3}; とするのが今風
この場合もnew[] {0, 1, 2, 3}で一つの式になる
0687デフォルトの名無しさん2016/01/12(火) 23:38:48.58ID:guZomEnP
ていうかbのほうは通らんでしょ
int[] b = new int[] {0,1,2,3};
が正しいな
0688デフォルトの名無しさん2016/01/12(火) 23:50:25.04ID:nYMhZmRI
IDが変わらないうちにお礼を。
ありがとうございました!
newするときintを省略することもできるんですね。
bの表記は間違っていましたね。すみません。
0689デフォルトの名無しさん2016/01/12(火) 23:54:15.55ID:8rTTpObL
型推論も使える
var a = new[] {1, 2, 3};
0690デフォルトの名無しさん2016/01/13(水) 21:08:40.32ID:0D7P8fwj
疑問に思うソースコードがあります。
改行が多すぎて書き込めないので、分割をしつつ改行を縮尺しているソースです。
お見苦しい中、お答えできる方がいましたらよろしくお願い致します。
0691デフォルトの名無しさん2016/01/13(水) 21:09:04.75ID:0D7P8fwj
using System;

namespace ConsoleApplication2
{class Program
{static void Main(string[] args)
{
Recurrence x = new Recurrence { Depth = 8 };
x.Excute();
Console.ReadLine();
}}

class Recurrence{
public int Depth { get; set; }
public void Excute() { Stack(0); }
private void Stack(int value)
{
++value;
Show(value);
if (value < Depth) Stack(value);
Show(value);
}

private void Show(int value)
{
for (int i = 0; i < value; ++i)
{
Console.Write("〇");
}
Console.WriteLine();
}}}
0692デフォルトの名無しさん2016/01/13(水) 21:10:16.17ID:0D7P8fwj
実行結果
--------------------------------------
○
○○
○○○
○○○○
○○○○○
○○○○○○
○○○○○○○
○○○○○○○○
○○○○○○○○
○○○○○○○
○○○○○○
○○○○○
○○○○
○○○
○○
○

連投すみません。再帰でStackメソッドを呼び出して"○"を描画していますが、
実行結果の○が段々減っていく理由が分かりません。
デクリメントされているコードは何もないのに、どうして"○"が減っていく描画ができるのでしょうか?
"○"を8個描画した時点でプログラムは終了しそうな気もします。
0693デフォルトの名無しさん2016/01/13(水) 21:10:49.48ID:ss4YLmpA
>>690
>>1にソースコード貼るサイトあるよ
0694デフォルトの名無しさん2016/01/13(水) 21:18:54.54ID:0D7P8fwj
>>693
ありがとうございます。
あんまり使い方分からないのですが、URL作成できました!
http://ideone.com/Wa2rX3
0695デフォルトの名無しさん2016/01/13(水) 21:20:51.41ID:eQ7mLiC6
>>692
デバッガでステップ実行しながらスコープ内の変数を眺めてみろ
0696デフォルトの名無しさん2016/01/13(水) 21:32:49.98ID:iJSjjgsI
Stackの中でStack再帰呼び出して、戻ってきたところにもShowあるでしょ
0697デフォルトの名無しさん2016/01/13(水) 21:39:16.74ID:0D7P8fwj
>>695
F11でソースを追いました。
すると"○"を8個描画した後にプログラムは終了しそうなのに、何故か
if (value < Depth) Stack(value);
上記のコードにステップが移って、value値がデクリメントされながら再帰されます。
どうしてデクリメントされながら再帰されるのか理解できません。
知っている方がいらっしゃいましたら、ご教示お願い致します。

>>696
知っています。何故デクリメントされてしまうのかが疑問です。
0698デフォルトの名無しさん2016/01/13(水) 21:45:46.55ID:fAujecyU
>>697
デクリメントしてるんじゃないぞ。
インクリメントする前の値が下の方のShow()で表示されているだけだ。
0699デフォルトの名無しさん2016/01/13(水) 21:53:29.44ID:c8iEzaaj
>>697
呼んだ先で加えた変数と戻ってきたときの変数は別の箱だぞ
>>696が再起呼び出しってヒントくれてるんだからそこを意識してみよう
0700デフォルトの名無しさん2016/01/13(水) 22:02:38.12ID:+fcVBJhy
ちょっとホッコリした
0701デフォルトの名無しさん2016/01/13(水) 22:04:53.20ID:0D7P8fwj
>>698
>>699
ありがとうございました!

>呼んだ先で加えた変数と戻ってきたときの変数は別の箱だぞ

これで何とかピンときました。
0702デフォルトの名無しさん2016/01/13(水) 22:06:54.36ID:c8iEzaaj
それはよかった!
おめでとう
0703デフォルトの名無しさん2016/01/14(木) 00:25:40.16ID:Jez1UKoL
>>691
{class Program
{st
この括弧の付け方むかつくから辞めろ
0704デフォルトの名無しさん2016/01/14(木) 00:32:52.74ID:NYaSS3ys
C#ってマイクロソフトのコーディング規約?かなにかで
中括弧をステートメントの後につけるか、改行した後につけるかって決まってますか?

例えば

if{
...
}

なのか
if
{
...
}

です
ご教授お願い致します。
0705デフォルトの名無しさん2016/01/14(木) 00:36:44.01ID:WOK4h5YC
>>704
VSのデフォルトだと後者だよね
0706デフォルトの名無しさん2016/01/14(木) 09:54:57.88ID:Xyg9nF3V
usingステートメントがあればflushもcloseももう必要ないという認識でよろしいでしょうか。
0707デフォルトの名無しさん2016/01/14(木) 11:45:07.50ID:GjXsqQpw
何事も極端に考えるとバカになるぞ
0708デフォルトの名無しさん2016/01/14(木) 12:41:48.14ID:E5jysWRa
>>706
当たり前だけど、usingはフィールドやプロパティに対しては使えないよ。
例えばストリームなんかフィールドで持つことも多いからそういう場合には使えない。
0709デフォルトの名無しさん2016/01/14(木) 18:03:50.77ID:tOYn4HIE
最近プログラムの勉強を始めたのですが自分の勉強方法が本当に正しいのかが
よくわかりません。

今の自分の勉強法:
本のソースコードを写す
      ↓
解説を読み関数の役割を知る
      ↓
写しているのでエラーは出ない
      ↓
   始めに戻る

皆さんこのように勉強なさっているのでしょうか?
よろしければ皆さんがどのようにしてプログラミングを
学んだかを教えていただけないでしょうか?
0710デフォルトの名無しさん2016/01/14(木) 18:30:09.70ID:ET7JKkBD
>>709
俺も最初はその手の本を読んで勉強してたな。
間違った勉強方法なんて基本的にないんだから
それで満足ならそのまま続ければいいと思う。
まあ目標によってはもっといい方法もあるだろうけどね。
あとはグーグルで知りたい知識を検索できる能力と
わからないことをちゃんと文章化して質問できる能力があればいいんじゃない?
0711デフォルトの名無しさん2016/01/14(木) 18:59:40.54ID:FteGdT+l
>>706
Disopseがそれらと同一で、スコープ終了時以外にDisposeする必要がないなら
それでいいんじゃね

>>708
推奨はされないが、使えない事は無かったはずだが
0712デフォルトの名無しさん2016/01/14(木) 20:58:14.08ID:YZJ24glt
>>709
最初はもどかしいが写経は読むたけより確実に効果ある。信じて続けたまえ
0713デフォルトの名無しさん2016/01/14(木) 21:48:18.40ID:S/qmyCNx
>>709
俺はこんな感じだった(★が追加部分)

本のソースコードを写す
      ↓
解説を読み関数の役割を知る
      ↓
写しているのでエラーは出ない
      ↓
★いろいろ数値や変えたいところをいじってみる
      ↓
★結果がどう変わるか確認したり、エラーが出たら調べてみる
      ↓
★気が済んだところで
   始めに戻る

改造っていいぞ
0714デフォルトの名無しさん2016/01/14(木) 22:12:56.03ID:wdzz2Qmv
>>709
こうしたい
 ↓
どーしたらこーできる?
 ↓
リファレンスを最初のページから順にペラペラ
 ↓
試す&デバッグ

どの言語もこの方法で覚えたような気がする
目的が先で、そのための手段を探してたと思う
本を写したり纏めたり蛍光ペン使ったりしたことは皆無
考えたら入門書の類も買ったことが無いと思う
0715デフォルトの名無しさん2016/01/15(金) 11:23:26.57ID:y8oLhUCG
>>709
最初はソースコートやプロパティを色々と変更してみるのがいいな
わざとエラーを出してみるといいし
で、慣れたところで簡単な物を1から作ってみる
書籍は基本的に入門書だけでいい
0716デフォルトの名無しさん2016/01/15(金) 14:16:50.39ID:Jozr4WCO
俺はとりあえずどんな言語始める時も電卓作ってみるわ
一つ作ってみたら色々判ることが多い
0717デフォルトの名無しさん2016/01/15(金) 17:53:08.29ID:/akxGQYe
電卓作るってどういうレベルの?
0718デフォルトの名無しさん2016/01/15(金) 18:58:43.56ID:jkJxSpfV
>>717
もちろん関数電卓さ
0719デフォルトの名無しさん2016/01/16(土) 04:02:44.36ID:PH3YsaQA
デリゲートというものの仕組みが全く理解できません
移譲とか言われても意味が分かりません
他のメソッドの実行を肩代わりする意味が分からないです
普通にそのメソッド実行するのと何が違うのか・・・
0720デフォルトの名無しさん2016/01/16(土) 04:36:59.21ID:RMhSJKcp
マルチキャストできる。
0721デフォルトの名無しさん2016/01/16(土) 05:42:44.11ID:fCKattgx
linqでも使ってりゃイメージが掴める
0722デフォルトの名無しさん2016/01/16(土) 07:54:09.81ID:4iVYdLKE
まるちぽすとできる
0723デフォルトの名無しさん2016/01/16(土) 08:33:35.43ID:Huy9AB1c
C/CC++からなら、関数ポインタ/std::functionの高級版でOK。
0724デフォルトの名無しさん2016/01/16(土) 09:32:50.53ID:PH3YsaQA
linqは何度か使ってるんですが、デリゲートを使わないlinqなので未だに分からないです
もちろんlinqについての解説ページ(未確認飛行とか)も何度も読みましたが
正直普通に理解できませんでした
頭が悪いと言われればそれまでなんですが・・・
やっぱり一番分かりやすいページって未確認飛行なんでしょうか
0725デフォルトの名無しさん2016/01/16(土) 09:55:07.12ID:iwKS8iBR
Linqでデリゲート使わないのなんて数えるほどのケースしかないような気がするけど…
コレクションの中から条件に一致する最初の探して、っていう
Enumerable.First<T>(IEnumerable<T>, Func<T, bool>)
がある
まあざっと実装するなら
foreach (var item in collection) if (ISMATCH(item)) return item;
って感じのメソッドになるよね
でFirstメソッドはこのISMATCHっていう条件関数以外は実装してくれてて、
あとはISMATCHに該当するのだけくれればあとはやっとくよ、という状態
で、そのISMATCHを渡すためにデリゲートを使う

public bool IsMatching(Person p) { return p.Name == "hoge"; }
っていうメソッドが存在していれば、あとは
persons.First(new Func<Person, bool>(IsMatching))
と言う記述でFirstにIsMatchingを渡すことができる

// 実際には省略してpersons.First(IsMatching)とか書く
// さらにいちいち"hoge"しか探せないメソッド用意するのは馬鹿馬鹿しいので
// ラムダ式を使ってpersons.First(_person => _person.Name == "hoge")とか書く
0726デフォルトの名無しさん2016/01/16(土) 10:04:13.28ID:RMhSJKcp
非同期処理とかデリで実装例おなしゃす
0727デフォルトの名無しさん2016/01/16(土) 10:31:40.22ID:RZSnFlcj
>>726
C# Taskでググれ
昔はデリゲートの非同期呼び出しとかリモート呼び出しとかあったけど今は事実上の非推奨
0728デフォルトの名無しさん2016/01/16(土) 10:55:35.08ID:Huy9AB1c
関数も変数の一つと考えろ
0729デフォルトの名無しさん2016/01/16(土) 11:01:02.87ID:PH3YsaQA
>>725
ちょうむずかしいです…
サル向きのデリゲート解説ページとかないですかね

ラムダ式は、左辺を入力として右辺を実行するとか、ラムダ式使えば匿名メソッドが簡単に?書ける
とかくらいしか分かってないです
linqのorderbyあたりで使う分にはそれくらいで何とかなってしまったので
0730デフォルトの名無しさん2016/01/16(土) 11:09:09.66ID:2WfpqfPQ
>>729
心配しなくていいよw
実はそんなに難しいことじゃないから
0731デフォルトの名無しさん2016/01/16(土) 12:19:48.29ID:1tZpiiVY
何とかなってんならいいだろ
何ともならなくなったら考えろ

100%理解しないと前に進めないならそもそも向いてないから
0732デフォルトの名無しさん2016/01/16(土) 13:27:02.32ID:ycK3j5Q3
ラムダ式・無名関数・クロージャなどは、大雑把に言えば同じ

コールバックしてもらいたい処理を渡すだけ。
関数ポインタ・関数の参照(アドレス)を渡すだけ
0733デフォルトの名無しさん2016/01/16(土) 13:39:02.04ID:hyYE+GOR
>>719

MethodA()
{
 PreMethod();
 _MethodA();
 PostMethod();
}

MethodB()
{
 PreMethod();
 _MethodB();
 PostMethod();
}

こんな場合は、_MethodA,_MethodBをdelegateにすれば、PreMethodとPostMethod()を実行する部分を1つに纏められる。

MethodX( action X )
{
 PreMethod();
 X();
 PostMethod();
}

MethodX( _MethodA );
MethodX( _MethodB );
0734デフォルトの名無しさん2016/01/16(土) 14:04:11.50ID:Vki0rxI6
質問です。

ADO.NET Entity でValidateはどこに書くのでしょうか?
DBから自動生成した.edmxファイルの中に書くと
上書きしたときに整合性がとれなくなりそうだけど

[Required]
public string test { get; set; }
0735デフォルトの名無しさん2016/01/16(土) 18:05:49.48ID:kQ++eYvW
EFは廃れる運命しかない
リードモデルでなら使えるかなと思ってた時期もあったけど
今時は最初から非正規化されてるテーブルあるいはドキュメントをそのままGETが主流だし
View側もわざわざPOCOにマップするコストを払いたくない
0736デフォルトの名無しさん2016/01/16(土) 19:42:42.71ID:qf+Fjc45
じゃあ主流は何ですか?
0737デフォルトの名無しさん2016/01/16(土) 21:09:35.97ID:zciXAlmp
>>729
LINQ使えてるなら自分がLINQ自体を実装するならどうするか考えてみればいい
orderByメソッドの引数を評価関数にするにはどうするか?
それを汎用的に宣言するには?→delegate
0738デフォルトの名無しさん2016/01/16(土) 21:58:33.49ID:Dk3A0eRo
WindowsでのコードファーフトのDBフレームワークとしては残るだろう。
>>734みたいな使い方は廃れるかもね。
単なるテーブルとクラスとのマッパーならDapperで事足りる。
0739デフォルトの名無しさん2016/01/16(土) 22:11:31.39ID:nU3glmtt
>>719
自分も勉強中の初心者だけど、理解してる範囲で解説してみる。

デリゲートとは、「メソッドを入れる型」のこと。
int型の変数に整数が入るのと同様に、デリゲート型の変数にはメソッドが入る。

なんの役に立つかというと、「処理を場合に応じて随時変更できる」ということ。
(続く)
0740デフォルトの名無しさん2016/01/16(土) 22:12:01.60ID:nU3glmtt
疑似コードで説明すると、例えば
void Convert()
{
処理1;
処理2;
処理3;
}
というメソッドがあるとする(>>733と同じような例だけど…)。

処理1と3は必ず固定の処理。処理2は、場合によって処理をいろいろ切り替えたいとする。
(ある場合は、処理2のところでMethodA()を呼びたい。また別の場合にはMethodB()を呼びたい、とか。)

こんなとき、処理2の部分で、デリゲート型変数fを使って、
void Convert(デリゲート f)
{
処理1;
f();
処理3;
}
と書けばいいい。

先に言ったように、デリゲートとはメソッドを入れる変数のこと。つまり、Convert()は、
「引数としてメソッドを受け取るメソッド」ということになる。

Convert()の呼び出し元では、
デリゲート f = MethodA;
Convert(f);
とする。これで、処理2のところでMethodA()が呼ばれるようになる。
MethodB()を呼びたいときは、かわりに
デリゲート f = MethodB;
とすればいい。
(続く)
0741デフォルトの名無しさん2016/01/16(土) 22:12:28.22ID:nU3glmtt
上の例を見て、こう思うかもしれない。
「Convert()の引数で、メソッド自体を渡さなくても、かわりに処理番号か何かを渡せばいいじゃん」。

つまり、
void Convert(int n)
{
処理1;
if(n==1) { MethodA() };
else if(n==2) { MethodB() };
処理3;
}
とすればいいじゃん、と。

これは確かにその通りだが、問題がある。
それは、Convert()は、事前に想定したメソッド(MethodAとMethodB)しか呼べないということ。

デリゲートを使えば、どんな処理でも渡せるので、
・Convert()は >>719 が作成して、ライブラリとして他の人に公開する
・具体的な処理の中身は、そのライブラリを使う側の人が自由に作る
みたいなこともできるようになる。
「処理のひな型だけは作るけど、具体的な処理は、引数にメソッドとして渡してね」と。
(続く)
0742デフォルトの名無しさん2016/01/16(土) 22:13:03.13ID:nU3glmtt
C#でGUIアプリを作れば、知らないうちに(?)、デリゲートの世話になっている。

例えば、Windowsフォームアプリで、フォームにボタンを貼り付ける。
ボタンをクリックしたら、自分の書いたハンドラが呼ばれる。
これは、デリゲートの仕組みを利用している。

Microsoftが作った.Netのライブラリの中では、
void ボタン押下()
{
f(); // fはデリゲート
}
みたいに、ボタンが押されたらデリゲートfを呼ぶ。(あくまで概念なので、実際にこんな感じかは知らない。)

ボタンを押された時に実際に何の処理をしたいかは、Microsoftはわからない(個々のアプリ作者にしかわからない)。
だから、ライブラリを作る側の人は、具体的に書きようがないので、デリゲートの形で呼ぶ。

一方、アプリの作者は、自分の書いた具体的なメソッドをデリゲートに結びつける。
これによって、ボタンを押したときに、自分の書いたメソッドが(デリゲート経由で)呼ばれるようになる。

なお、最後の例(Windowsフォームの例)は、厳密には、デリゲートじゃなくて「イベント」のはず。
だけどイベントもデリゲートの仕組みを使ってるので、ここでは単純に「デリゲート」と書いた。
(以上)
0743デフォルトの名無しさん2016/01/16(土) 22:24:26.63ID:U350HfOb
長い
ストラテジーパターンだよ、で充分
0744デフォルトの名無しさん2016/01/16(土) 22:43:24.18ID:Ip/Ue952
仕組みはともかく意味は経験がないと理解できない
だから言葉を尽くしたところで無駄
0745デフォルトの名無しさん2016/01/16(土) 23:16:08.09ID:eoc6QJ5z
>>719はデリゲートがどうやって動いてるのか聞いてるのであってデリゲートを使う理由なんか聞いてないだろ
0746デフォルトの名無しさん2016/01/16(土) 23:40:43.42ID:oUSx9HiB
>>745
1行目「だけ」読むとそう思えるね
0747デフォルトの名無しさん2016/01/16(土) 23:42:57.81ID:nU3glmtt
> 移譲とか言われても意味が分かりません
> 他のメソッドの実行を肩代わりする意味が分からないです
> 普通にそのメソッド実行するのと何が違うのか・・・

ということだったので、自分なりに答えたつもりだったんですが、総スカンですね。
グダグダ長文を書いてしまってすみませんでした。
スレ汚し失礼しました。ごめんなさい。
0748デフォルトの名無しさん2016/01/16(土) 23:47:24.63ID:Ip/Ue952
別に好かんとは言ってない
聞いたって理解できないだろってだけ
0749デフォルトの名無しさん2016/01/17(日) 00:11:47.87ID:DW1lkDap
デリゲートについて質問した物です
たくさんレスありがとうございます

ちょっとすぐに理解して返信できないので、とりあえずついたレスを
全部読ませて頂きます
レスありがとうございました
0750デフォルトの名無しさん2016/01/17(日) 00:18:25.50ID:DW1lkDap
すみません、所謂何が分かってないのか分からない状態なのかもしれません

デリゲートとは何だろう?
↓
何サイトかググってデリゲートとは?の概要とサンプルをいくつか見る
↓
移譲とも呼ばれ、C言語で言う関数ポインタに相当しメソッドの実行を肩代わりしてくれるものです
ラムダ式として使えば匿名関数を簡単に書けます
↓
?????

となったので、結局「デリゲートが何か(何をするものか)分からない」
という事なのかもしれません

ラムダ式で使う使い方は、少なくともACTIONデリゲート型を使ったデリゲートよりは分かるのですが
デリゲート型変数にメソッドを入れて何の意味が?っていう感じです
ただ、複数のメソッドを一つのデリゲート型に入れられ、実行時には順次実行される、というのは
確かに複数の機能を手続きのように実行できるので、使い方として普通にメソッドコールするより便利だな
というのは分かりました
0751デフォルトの名無しさん2016/01/17(日) 00:40:03.68ID:DW1lkDap
>>743
ストラテジーは一度だけ使った事あります(使い方が正しいかは分かりません・・・)

その時はMethodAとMethodBで共通のIFを実装して
 IViewer viewer;
 switch (hoge)
 {
  case A:
  viewer = new Viewer_A(); (breakは省略)
  case B:
  viewer = new Viewer_B();
 }
 spViewer.Start();

みたいな事をやりましたがデリゲート型にメソッド入れて実行する使い方っていうのは
ID:nU3glmt様の説明を見ると、似たような意味合いで使われるんですね
0752デフォルトの名無しさん2016/01/17(日) 00:46:17.28ID:wm0zglwe
>>750
delegateはラムダ式の入れ物ってことで理解できない?

Action printStr = () => Console.WriteLine("Str");
↑delegate    ↑ラムダ式

>ただ、複数のメソッドを一つのデリゲート型に入れられ、実行時には順次実行される
これはたぶんeventの機能かな
0753デフォルトの名無しさん2016/01/17(日) 00:51:37.12ID:DW1lkDap
 IViewer viewer;
 switch (hoge)
 {
  case A:
  viewer = new Viewer_A(); (breakは省略)
  case B:
  viewer = new Viewer_B();
 }
 viewer.Start();

すみません、こうでした
0754デフォルトの名無しさん2016/01/17(日) 01:27:37.04ID:Pwa5r+52
ここで聞いていいのかわからないけどとりあえずC#で作ってるからここで。

データベース上のテーブルaを参照して処理をするクラスXとYがあったとする。
すぐに思いついたのはaからデータを引っ張るクラスを作ってXとYに包含させることなんだけど、
リソースやパフォーマンス上の理由からaから引っ張ったデータをXとYで共有することになった。

だからaから引っ張ったデータをキャッシュしておいて、キャッシュしたデータを返すメソッドへのアクセス方法を、
delegateかinterfaceとしてXとYにprivateで定義してpublicメソッドでそのフィールドに参照を格納できる方法を実装するのを考えた。

しかしながらそのデータはXとYにとっては結構クリティカルなデータなのに、
リソースを共有したいというアプリケーション側の都合でそれを参照する方法を外部に移譲していいのかと疑問に思って行き詰まった。

ケース・バイ・ケースだと思うけどこの場合どういう実装がいいんだろうか。
オブジェクト指向について記事書いてるページ回りながら3日くらい悩んでるんだが思いつかないので意見を聞きたい。
0755デフォルトの名無しさん2016/01/17(日) 01:35:48.39ID:R7UCENDa
>>754
XとYが共にテーブルaからの取得結果Zをコンストラクターで受け取る
0756デフォルトの名無しさん2016/01/17(日) 01:40:34.65ID:TkYjcAHo
>>754
aからデータを引っ張るクラスZを作ってXとYに包含させる
キャッシュはZの内部でやる
0757デフォルトの名無しさん2016/01/17(日) 02:23:38.46ID:Pwa5r+52
回答ありがとう。
>>755
コンストラクタで受け取るようにすれば確かにデータなり参照なりを引き渡さないとインスタンスを作れなくなるからいいかもしれない。
>>756
クラスZをXとYに包含させるとして問題はそのクラスZへの参照をどうやってXとYに渡すかなんだ。
XとYの内部でZのインスタンスを作ってしまうと結局データは共有されないからどうしようかなって考えてる。
07587392016/01/17(日) 11:00:01.49ID:mdoFHj7B
>>750
> デリゲート型変数にメソッドを入れて何の意味が?

それは、「int型変数に整数を入れて何の意味が?」と言ってるのと同じこと。

なぜわざわざint型変数を使うかというと、
�@プログラム実行時に、中身の整数を動的に変更できる
�Aメソッドの引数として変数を使うことにより、整数を扱う処理を共通化(汎用化)できる
といったメリットがあるから。

デリゲートも同じ。大雑把に言えば、「整数」が「メソッド」になったというだけ。小難しく考える必要はない。

例えば>>725のいうLINQのFirstメソッドは、「ご指定の条件に一致するものを検索します」というメソッドで、
First(コレクション, デリゲート)
のように、デリゲート型の引数で検索条件を受けとる仕様になっている。
これにより、First()を呼ぶ側が、検索条件を自由に指定(入れ替え)できる。

つまりデリゲートのおかげで汎用の検索メソッドにすることができたわけで、これは要するに、上に書いた�Aと同じことだよね。
07597392016/01/17(日) 11:00:26.84ID:mdoFHj7B
> ラムダ式で使う使い方は、少なくともACTIONデリゲート型を使ったデリゲートよりは分かるのですが

もしかして、ラムダ式とデリゲートとをごちゃ混ぜに考えてる?

イメージを一言で言えば、
・デリゲートは、「メソッドを入れる型、もしくはその型の変数」
・ラムダ式は、「メソッドをシンプルに書いたもの(式)」
なので、両者は全然別のもの。

で、ポイントとして「デリゲートには、通常のメソッド以外に、ラムダ式を代入することもできる」。

上のFirst()の例で言えば、検索条件をメソッドで渡せるおかげで、どんな条件でも指定して検索できるんだけど…。
裏返せば、First()を呼ぶには、「検索条件をあらわすメソッド」を作らなければならないということ。

でも、ちょっとした検索をするだけのために、わざわざ検索条件用のメソッドを用意するのは邪魔臭いよね。
そんなときにラムダ式を検索条件として渡せば、メソッドを別途用意する必要がなくなるってこと。
0760デフォルトの名無しさん2016/01/17(日) 11:01:33.57ID:MLXXnKHy
ストラテジーパターンです
終わり
0761デフォルトの名無しさん2016/01/17(日) 11:18:50.14ID:7AwZoLrq
関数を変数として扱うだけなのにストラテジーとかいちいち命名しちゃう痛い人がいるね
07627392016/01/17(日) 11:27:25.16ID:mdoFHj7B
被ってしまいますが…

自分的には、ストラテジーパターンは、「多態性を利用して戦略を動的に変更すること」と理解してます。
で、デリゲートの場合は、多態性を用いるのではなく、メソッドそのものを直接指定しているだけなので、ストラテジーパターンとは呼べないのでは?

もちろん、やってることはどちらも「戦略を動的に切り替える」なので、意味合い的には同一だと思うのですが。
0763デフォルトの名無しさん2016/01/17(日) 11:39:15.14ID:DW1lkDap
>>762
ありがとうございます
分かりやすかったです

>>740-741を見た時、Strategyパターンと全く同じ(IFを使うかデリゲート型を使うかが違うだけ)では?
と思いましたが、>>762の説明で違いが分かりました
0764デフォルトの名無しさん2016/01/17(日) 11:43:32.09ID:mdoFHj7B
>>763
>IFを使うかデリゲート型を使うか
むしろ、IFを使わないためにストラテジーパターンがあるような気が…
0765デフォルトの名無しさん2016/01/17(日) 11:51:01.51ID:DW1lkDap
>>764
マジですか?
ttp://www.nulab.co.jp/designPatterns/images/chapter2/6-1.gif

こんな感じで、複数のクラス(機能)が共通のIFを持ち、戦略的に
IFを持った機能を切り替えるのがStrategyパターンと認識していましたが
すみません、こっちも認識間違ってるかもしれません。出直してきます・・・
0766デフォルトの名無しさん2016/01/17(日) 12:06:42.79ID:wm0zglwe
補足しとくと、ラムダ式は普通のdelegateと式木delegate?に入れることができる

Action printStr = () => Console.WriteLine("Str");
Expression<Action> printStrExpr = () => Console.WriteLine("Str");
0767デフォルトの名無しさん2016/01/17(日) 12:21:10.76ID:uVM8Tzne
>>766
最近言語仕様を勉強して自慢したくなっちゃったんだね。
せめて式ツリーをもう少し勉強してから出直すべきだったな。
0768デフォルトの名無しさん2016/01/17(日) 12:27:11.80ID:yhafN9XZ
ラムダ式とかLINQとかキモいの廃止してほしい
0769デフォルトの名無しさん2016/01/17(日) 12:27:35.39ID:mdoFHj7B
>>765
すみません。IFというのは、インターフェースのことだったのね。
if〜elseのifのことかと思った。

>>764は忘れてください。
0770デフォルトの名無しさん2016/01/17(日) 12:32:39.06ID:wm0zglwe
>>767
勉強したのは2年前くらいだけど、最近に入るか?
0771デフォルトの名無しさん2016/01/17(日) 12:37:28.12ID:OdtYk10r
ラムダ式でメソッド書けるようになったけど、便利ではあるがアレはなんか違うな
0772デフォルトの名無しさん2016/01/17(日) 12:55:42.09ID:rOaFrH3n
なんか本来簡単な話をわざわざやたら初心者に理解しづらい難しい話にしてるのがいるねw

Cのポインタ変数なんて実態はアドレスの入れ物だって理解するのが一番簡単なように、
デリゲートなんて関数ポインタの.NET版だと理解するのが一番簡単だって。

intのリテラル1とintの変数aの違いは、1はコンパイル時に値が確定するのに対してaの値は実行時に決まること。

デリゲートも同様。
普通のメソッド呼び出しはコンパイル時にどのメソッドが呼び出されるか確定するが、
デリゲート型の変数を使えばこれを実行時に決めることが出来る。

ただそれだけだよ。
0773デフォルトの名無しさん2016/01/17(日) 13:38:07.37ID:P2fArTeK
ラムダ式可読性悪くならない?
0774デフォルトの名無しさん2016/01/17(日) 13:57:29.65ID:87291EgD
>>773
ラムダ式を悪く言う人はまずいない。
LINQは賛否両論かもしれん。
0775デフォルトの名無しさん2016/01/17(日) 14:01:46.08ID:2mSqMAWV
ラムダ式の利便性が分からないが
C# を使うなら
Microsoftに従うしかない
0776デフォルトの名無しさん2016/01/17(日) 14:02:10.99ID:Xy4jFrpa
>>773
ラムダ式でそうそう可読性悪くなることはないと思うけど
偶に糞長い行入れる人とかいるけど、ユニットテスト使ってないんだろうなと
0777デフォルトの名無しさん2016/01/17(日) 14:06:58.57ID:pSWLpytB
Rubyで言えば、enum(コンテナなどの数えられるもの)を、
どの方法でソートするかを、ブロックで指定する。
例えば、ABC順とか、ファイルサイズの大きい順とか、

enum.sort_by {|item| block }

つまり、お好みの処理を指定できる。
ラムダ式・ブロック・クロージャ・無名関数・関数ポインタなども、
大雑把に言えば同じ


Pythonでは、関数に機能を追加・装飾する、
デコレータ・アノーテーションもある

def deco(func):
関数の内容を書いておいて、アノーテーションをつける

@deco
def foo():

これで、foo()を呼び出すと、
decoに書いておいた処理が実行される
0778デフォルトの名無しさん2016/01/17(日) 14:12:52.26ID:HIxL+QT3
同じことを何度繰り返すつもりだろうか
ボケ老人か
07797772016/01/17(日) 14:17:08.76ID:pSWLpytB
Pythonのデコレータでは、指定した上から順に、関数が実行される。
この場合、foo()を呼び出すと、A, Bの順

@A
@B
def foo():

C#のデリゲートも、たぶん実行順番を指定できる
0780デフォルトの名無しさん2016/01/17(日) 14:34:16.40ID:SO28ogQy
>>773
重要な意味合いを持たずコードが短く寿命も短いなら可読性上がる
そうじゃなきゃバカじゃないと使う気にならないね
0781デフォルトの名無しさん2016/01/17(日) 14:38:03.96ID:yhafN9XZ
MSだった人の子
間違いは犯す
ラムダ式とLINQは廃止すべき
0782デフォルトの名無しさん2016/01/17(日) 14:43:04.52ID:GIfr36xN
>>772
>関数ポインタの.NET版だと理解するのが一番簡単
ってのはみんなわかってそれをどうやって別の言葉で表現するか苦労してるわけよ
C#から入ったプログラムにはいった人にまずはCをマスターしてから来いっていうのは放漫だし
0783デフォルトの名無しさん2016/01/17(日) 15:01:07.47ID:kU6BDJls
つまりどうゆうことだってばよ
0784デフォルトの名無しさん2016/01/17(日) 15:11:29.81ID:HIxL+QT3
ばかばっか
0785デフォルトの名無しさん2016/01/17(日) 15:15:15.58ID:SO28ogQy
関数ポインタとか言ってる奴が最も理解から遠い
0786デフォルトの名無しさん2016/01/17(日) 15:32:55.32ID:fyCSQ8gd
>>781
ラムダ式は他言語でも採用されるくらい好評みたいだが?慣れだ慣れ。
Linqもクエリ構文はともかく、メソッド構文なら普通のメソッドと変わらないぞ。ラムダ式と組み合わせることが多いってだけで。
0787デフォルトの名無しさん2016/01/17(日) 15:35:27.31ID:E98+Jifa
C++からC#へ乗り換えましたが、ラムダ式はどういうときに使うものですか?
0788デフォルトの名無しさん2016/01/17(日) 15:57:47.18ID:8TKcXYcp
>>786
逆だろう?
lisp のラムダ式をC#が後で採用したんだよ
で,そのC#のラムダ式は,Yコンビネータを表現できるのかね?
0789デフォルトの名無しさん2016/01/17(日) 15:58:01.70ID:SO28ogQy
設計がしっかりしているシステムでは使いません
0790デフォルトの名無しさん2016/01/17(日) 16:00:47.64ID:wm0zglwe
Zコンビネータならできるよ
でもあんなものそうそう必要にならないだろ
0791デフォルトの名無しさん2016/01/17(日) 16:07:34.79ID:B0dK5BN7
>>787
デリゲートを書くときタイピング数を減らそうとして使う

https://msdn.microsoft.com/ja-jp/library/bb882516.aspx
delegate void TestDelegate(string s); // こーやって定義して…
static void M(string s) {Console.WriteLine(s);} // こーいうメソッドがあるとき
TestDelegate testDelA = new TestDelegate(M); // かつてはこう。あらかじめ定義したメソッドを使って初期化
TestDelegate testDelB = delegate(string s) { Console.WriteLine(s); }; // C#2.0からは匿名メソッド使ってラク
TestDelegate testDelC = (x) => { Console.WriteLine(x); }; // C#3.0からはラムダ式でさらにラク
0792デフォルトの名無しさん2016/01/17(日) 16:10:16.93ID:2WuVGkbt
>>787
常時
0793デフォルトの名無しさん2016/01/17(日) 16:12:57.54ID:Xy4jFrpa
>>791
もう最近じゃdelegateという記述自体やらないよね
ActionとFunctionさまさまや
0794デフォルトの名無しさん2016/01/17(日) 16:14:28.72ID:FugsQaG7
誰も使わなくなった言語機能削除してほしい
0795デフォルトの名無しさん2016/01/17(日) 16:21:26.80ID:7AwZoLrq
linqでインテリセンスが常に侵されるのは嫌だなぁ。
ばんばん使う場面ならいいけど
linqクラスに明示的にキャストしたい。
0796デフォルトの名無しさん2016/01/17(日) 16:38:22.25ID:pSWLpytB
Javaでも同じ。
最初は、メソッド1つだけのクラスを作って渡していた。
その次に、引数の中で、無名クラスを定義するようになった。
そしてラムダ式

func(クラス)
func(無名クラス)
func(ラムダ式)
0797デフォルトの名無しさん2016/01/17(日) 17:06:56.49ID:2WuVGkbt
>>795
using消しとけ
0798デフォルトの名無しさん2016/01/17(日) 22:39:32.61ID:K2essoph
androidのjavaやった時、C#のラムダ式とかイベント知ってると無名クラスがつらすぎた記憶
今は改善されたのかな?
0799デフォルトの名無しさん2016/01/17(日) 22:52:06.56ID:ZDGiYXBb
どこまで詳細書いていいかわからんのですが・・・

DataGridViewにDataSetから流し込んで編集→更新してるんですが、
セルの値変更→Updateは問題なし
続けて同じセルの値を別の値に変更してUpdateCommandを実行すると
同時実行違反のエラーがでております
IDあたりが怪しいのはぐぐってわかったのですが、(IDはAutoIncrementで主キーを設定)
同じセルの値を変更したときのRowのIDが-1になってるんですよね
データベース側のIDとは当然違うので、エラーになるんだろうなとは思っているんですが、
どう解決していいものか・・・どなたかヒントをいただければ
0800デフォルトの名無しさん2016/01/17(日) 23:01:59.20ID:1oqLgnXz
startdate 2016/1/1
enddate 2016/1/20

という二つの情報があって、

nowdate 2016/1/17
が、startdateとenddateの期間内かどうか
判定する、スマートな方法はありますでしょうか?

linqなどで、綺麗に書けそうな気もするので、
よろしくお願いします。
0801デフォルトの名無しさん2016/01/17(日) 23:22:59.74ID:D8ah+tTv
0埋めされてないから比較しづらいって話?
クソデータをフォローしてやるためにLINQがあるわけじゃねーんだけどな
0802デフォルトの名無しさん2016/01/17(日) 23:23:08.55ID:VemjrG46
>>798
無名クラスはあくまで型を実装するものだから
一個のメソッドを扱いたいのとは動機がちょっと違う
JFrame f = new JFrame();
JLabel label = new JLabel("");
f.getContentPane().add(label, BorderLayout.CENTER);
f.addMouseListener(new MouseAdapter() {
private int count = 0;
private void updateLabel() {
label.setText(String.valueOf(count));
label.setForeground(count < 10 ? Color.BLACK : Color.RED);
}
public void mouseClicked(MouseEvent e) {
count++;
updateLabel();
}
public void mouseExited(MouseEvent e) {
count = 0;
updateLabel();
}
});
こういう風にして、関連する複数のメソッドを同時に書きたいときに役立つ
0803デフォルトの名無しさん2016/01/17(日) 23:25:35.96ID:aEwXbHoX
>>800
大小比較の方法も聞かないと分からないようでは生きているのもつらいだろうな。
もし日付という概念をDateTime型に入れているならまずその誤った方法を見直せ。
0804デフォルトの名無しさん2016/01/17(日) 23:36:33.47ID:1oqLgnXz
>>803
C#どころかプログラムを始めたのも3ヶ月程度の初心者で
すみません

やはり、そういうメソッドは、自作しないと
存在しないものなのでしょうか?

C#のような歴史のある汎用開発言語なら、
自分が求めるようなメソッドがあるような気がして
お聞きした次第なのですが
0805デフォルトの名無しさん2016/01/17(日) 23:41:14.04ID:Xy4jFrpa
>>803
なんで毛嫌いするのかしらんけど、DateTime型ならDateプロパティ同士で比較すればいいだけじゃないの?
0806デフォルトの名無しさん2016/01/17(日) 23:44:34.53ID:fadv0MbS
DateTime.Parseしてから比較すればって言おうとしたけど
>>803に駄目だって言われたからやっぱわかんね
0807デフォルトの名無しさん2016/01/17(日) 23:45:46.61ID:6oiqScYX
日付はDateTimeだろ
日付だけを引数に取るコンストラクタもあるのに何を抜かしているのか
0808デフォルトの名無しさん2016/01/17(日) 23:46:31.64ID:fadv0MbS
>>804
お馬鹿な手法を言語がカバーするというのは本末転倒だろ
そんなのPHPだけだ
0809デフォルトの名無しさん2016/01/17(日) 23:48:31.91ID:VemjrG46
そもそも今どういう型で持ってるのかよーわからんしなw

あらためてDateTimeで持つんなら
startdate = new DateTime(2016, 1, 1);
enddate = new DateTime(2016, 1, 20);
nowdate = new DateTime(2016, 1, 17);
でもって
if (startdate <= nowdate && nowdate <= enddate) {/*期間内*/}
これでおkのはず
0810デフォルトの名無しさん2016/01/17(日) 23:55:45.92ID:taBDRBiw
>>809
なんでstartとend?
0811デフォルトの名無しさん2016/01/17(日) 23:58:37.39ID:VemjrG46
>>810
>>800
0812デフォルトの名無しさん2016/01/17(日) 23:59:16.44ID:D8ah+tTv
質問者がstartとendって書いてるからじゃねーの
0813デフォルトの名無しさん2016/01/18(月) 00:04:18.57ID:2ulx2Isr
>>809
非常に明快で、これ以上スマートに書く方法は無さそうですね。

質問のレベルが低すぎて、逆に難しく
捉えられたかも知れないので、
失礼しました。
0814デフォルトの名無しさん2016/01/18(月) 00:05:00.02ID:vO3VhahX
"2016/01/01"
"2016/01/17"
"2016/01/20"
文字列を大小比較すればOK
0815デフォルトの名無しさん2016/01/18(月) 00:28:18.51ID:pw6UDtYr
>>814
0詰めされてるとは限らんし、一旦DateTime.Parse()した方が確実だろうな。
0816デフォルトの名無しさん2016/01/18(月) 00:37:08.79ID:cbExZGig
803はDateTime型に親を殺されたのか
0817デフォルトの名無しさん2016/01/18(月) 00:51:22.00ID:5iYFR+Uq
エンド未定で、9999/99/99とかに出くわしたので文字列比較に1票
0818デフォルトの名無しさん2016/01/18(月) 01:23:01.87ID:4n8xvv+p
そこは仕様を確認したまえよ
よきに計らった気になるのは間抜けの所作
0819デフォルトの名無しさん2016/01/18(月) 01:24:32.80ID:wW0WiShF
お前らいつの間にそんなに馬鹿になったんだ?
それとも荒らしが沸いているだけか?

803が言っているのは、DateTimeはただの64ビット数値でしかないからそのまま比較できるって話だろ。
それをToStringで変換したら日付の文字列になるだけであって、
日付文字列自体はDateTimeの中には持っていないし、
そもそもC#で日付を文字列で確保するのはおかしいだろ。
つまり800の時点で
DateTime startdate, enddate
でなければおかしいのであって、その比較はif文で不等号(<)を使えば良いだけだし、
そんなのいちいち聞くようならプログラミングなんて無理だって話だろ。

>>813
スマートさを求める以前に君はもっとまず書いた方がいいよ。
言っちゃ悪いが何がスマートかも判断できないレベルだと思うよ。
0820デフォルトの名無しさん2016/01/18(月) 01:29:06.09ID:LBoJ+JUg
>>819
>>803とか言わずに俺と素直に言えばいいのに
0821デフォルトの名無しさん2016/01/18(月) 01:41:15.22ID:pw6UDtYr
>> もし日付という概念をDateTime型に入れているならまずその誤った方法を見直せ。
日付をDateTimeで扱うことを否定しているようにしか読み取れないが。
0822デフォルトの名無しさん2016/01/18(月) 01:44:24.84ID:L7UVOaGN
ものによっちゃあ三タイプ型がある場合があるから
(例:postgresqlの場合timestamp, date, time)
そういうノリで日付だけを扱え、という意味かと読んだ
0823デフォルトの名無しさん2016/01/18(月) 01:48:23.83ID:wW0WiShF
俺は>>803ではないぞ。
まあお前らがどう思おうが好きにすればいいが。

ただ>>817もそうだが、DateTimeは10000年-1カウントまでは保証している。
この点は>>818の言うとおりで、.NET自体はかなり完成したフレームワークだから、
変に気を使うよりは素直に使った方がいい。
DateTimeは直接比較できるように数値にマッピングしてあるわけだし、
逆に直接比較できないのなら演算子オーバーロードが為されているか、メソッドが用意されている。

というか、ある程度やっていれば、これはよく使う/余り使わない、というのは分かるようになる。
そして.NETとかなら大概その「よく使う」物は実装されている。
日付の比較なんてよく使うだろ。だったら普通に出来るように設計されている。
それがピンとこないのは書いてないからだよ。
0824デフォルトの名無しさん2016/01/18(月) 02:55:47.40ID:F4LpYkVc
>>802
うーん、やっぱり肌に合わん
IDEを持ってしても見にくいわ

ラムダ式でさえそこそこ長くなるとメソッドに分割させたくなる
0825デフォルトの名無しさん2016/01/18(月) 06:22:50.07ID:9moHsOv1
独習C#はゴミだってテンプレに書いとけ
例の書き方、説明の端折り方からしてプロのための本だとわかる
0826デフォルトの名無しさん2016/01/18(月) 06:23:33.23ID:9moHsOv1
ほんとこういうクソ本で騙して何が楽しいのかね
0827デフォルトの名無しさん2016/01/18(月) 06:59:08.20ID:f+dY9NM8
そうか?初学で独習読んだけど、一番理解できたわ。
0828デフォルトの名無しさん2016/01/18(月) 07:23:16.31ID:tfxh7JIU
初学者にはCLR via C#が最適と何度言ったら分かるのか
0829デフォルトの名無しさん2016/01/18(月) 07:36:24.94ID:bqfXjorQ
ハーバード・シルトをけなすとは大した度胸でんな
0830デフォルトの名無しさん2016/01/18(月) 08:44:43.56ID:tv0b2zna
最初からスマートさを求める初心者って、優秀なセンス持ってると思うけどな
0831デフォルトの名無しさん2016/01/18(月) 09:39:25.03ID:TV7ry5Rb
>>817
そんなコボラー脳は早く捨てろよ
0832デフォルトの名無しさん2016/01/18(月) 13:48:04.35ID:doNY95zT
Nugetとか使えない環境下なんですが、dllとかダウンロードしたら、作法的にはどこに格納するものなんでしょうか?プロジェクトフォルダ直下ですか?
0833デフォルトの名無しさん2016/01/18(月) 15:36:37.61ID:I1m11BCA
>>832
わしはbinとかobjとかの並びにlibってフォルダ作っていれてる
0834デフォルトの名無しさん2016/01/18(月) 17:52:51.30ID:rmPY04Uv
>>832
外部依存解決のためにプロジェクトひとつ作ってそのプロジェクトルートに打ち込む
0835デフォルトの名無しさん2016/01/18(月) 22:15:25.80ID:wW0WiShF
>>830
エセプログラマは黙れよ。迷惑だよ。

自分で試したり調べたりする能力がない奴は、プログラマとしては大成しない。
>>804はプログラマとして一番大事な部分がない。
それが分からない>>830もセンスないし、それ以前にエセプログラマだね。
或いはお前の周りにはその程度の奴しかいないから、それが理解できないだけ。
0836デフォルトの名無しさん2016/01/18(月) 22:34:44.19ID:vfhYYxU5
俺と素直に言ってればよかった
長文がむなしく響く
0837デフォルトの名無しさん2016/01/18(月) 22:43:02.61ID:1ZCUtN79
いっぱしのプログラマー名乗るならテンプレに目を通してから書き込んでほしいものだ。
0838デフォルトの名無しさん2016/01/18(月) 22:52:22.18ID:wW0WiShF
質問者が初心者なのはいいとして、回答者が初心者では駄目だろう。
まあそれでも邪魔だというならおさらばすることにするよ。
0839デフォルトの名無しさん2016/01/18(月) 23:03:17.73ID:8ePQenzf
やさしく回答してあげるならまだしも、そうではなく罵倒やらこめたレスしてるからでしょ
0840デフォルトの名無しさん2016/01/18(月) 23:08:21.52ID:o2Fcp8K+
心に余裕が無いんだろうね
0841デフォルトの名無しさん2016/01/18(月) 23:08:33.48ID:4n8xvv+p
べっちょカッコ悪い
0842デフォルトの名無しさん2016/01/18(月) 23:24:29.55ID:3Kl3L3Zz
質問です。
インターフェースというものがいまいちピンとこないんです。
クラスだったら、そのクラスのインスタンスの実体が作られるってのが何となくイメージがつかめるのですが、
インターフェースの場合、例えば、
var a = Enumerable.Range(1, 5);
って書いたとき、このaはいったい何者なんでしょうか?

Visual studioで、aのところにマウスポインタを持っていくと
System.Collections.Generic.IEnumerable<T>, (Tはint)
みたいな情報が出てくるのですが、つまりは何者やねん?!

「列挙できる何か」でしかないのでしょうか?
実際には何らかのクラスのインスタンスなのでしょうか?
何者かなんて、そもそも気にする必要はないんでしょうか?

なんというか、まるで「抽象クラスなのにその実体が作られちゃった」みたいな、モヤモヤした気持ちです。

うまく表現できなくてすみません。
0843デフォルトの名無しさん2016/01/18(月) 23:38:23.28ID:2MLDnvjn
インターフェースは規約の集合である
0844デフォルトの名無しさん2016/01/18(月) 23:48:03.16ID:o2Fcp8K+
Enumerable.Rangeについては
http://referencesource.microsoft.com/#System.Core/System/Linq/Enumerable.cs,7865685802e14913

なので実態はあまり気にしなくていい
0845デフォルトの名無しさん2016/01/18(月) 23:55:22.92ID:k4/XVfUV
きぐるみみたいに思っとけばいいよ
中の人なんていないんだよ
0846デフォルトの名無しさん2016/01/19(火) 00:03:46.46ID:Nad2kIAs
おお!ソースが見れるんですね!

Enumerable.Rangeの中では
static IEnumerable<int> RangeIterator(int start, int count){
for (int i = 0; i < count; i++) yield return start + i;
}
をコールしてるだけでした。
確かに実体なんて気にしなくてよさそうですね。

今度からは着ぐるみだと思うことにします!
ありがとうございました。
0847蒸し返し君2016/01/19(火) 00:22:17.59ID:tsEnAc4D
さー!蒸し返すぞ

>>803
> もし日付という概念をDateTime型に入れているならまずその誤った方法を見直せ。

これ結局どういう意味? 日付は何に入れるべき?

>>819
> 803が言っているのは〜って話だろ。
> それを〜であって、〜だろ。
> つまり〜であって、〜って話だろ。

あまりに雄弁>>803をに代弁する人の存在はさておき…

>>830
> 最初からスマートさを求める初心者って、優秀なセンス持ってると思うけどな

逆!逆ぅ!
初心者ほど妙にそれを求めるのを見てきた
何を求めているのか、何が手に入ったのかまったく判断つかないくせに
駆け出し三日目みたいな奴が「コードの美しさ」とか抜かしてたら頭カチ割りたくもなる
0848デフォルトの名無しさん2016/01/19(火) 01:00:29.78ID:3XHdRo+8
>>847
でもスマートさを求めない初心者ってコピペプログラマーになったりしないの?
0849デフォルトの名無しさん2016/01/19(火) 07:10:54.73ID:HexSh7v2
>>847
日付とtimepointの概念の違いくらい理解しろ
0850デフォルトの名無しさん2016/01/19(火) 12:26:57.20ID:w8PSLHxg
でもお前ら初心者が愚直なコード頑張って書いたのに

こんなコード今時書かねーよ死ねとか言うよね
0851デフォルトの名無しさん2016/01/19(火) 12:31:40.51ID:w8PSLHxg
デリゲート、匿名関数、ラムダ式、LINQについての初歩を学びたかったら

究極のC#プログラミング 新スタイルによる実践的コーディング

って本読むといいよ。順番を追って説明されてるから。

頭いい人はネットの断片的な情報を繋ぎ合せて分かるだろうけど、初学は本で学んでから必要な分をネットで調べるほうがいい
0852デフォルトの名無しさん2016/01/19(火) 12:37:22.58ID:lHVrmma2
>>842
列挙できる何か
この理解でパーフェクト。
0853デフォルトの名無しさん2016/01/19(火) 16:06:33.38ID:0OZUZxB2
ビルドするとフォームによって真っ白になることがあるんだが
これってなんで?

リビルドし直したり、閉じて開き直すと元に戻るんだが
0854デフォルトの名無しさん2016/01/19(火) 20:12:45.09ID:hCzDBBLk
フォームクラスの前に何か余計なもの宣言してねえですか?
0855デフォルトの名無しさん2016/01/19(火) 23:35:50.94ID:I8eUz+bb
下記のようなサンプルプログラムを見たのですが、
+=で追加されたラムダの方をコールする事は出来るのでしょうか?
こういう書き方がどう嬉しいのか掴めないのですが、
後学のためにお伺いしたく

delegate void HelloDelegate(string name);
class Program
{
static void StaticHello(string name)
{
Console.WriteLine("(static) : Hello1 {0}!", name);
}
static void Main(string[] args)
{

Foo foo = new Foo();
HelloDelegate funcs;
funcs = StaticHello; // static 関数の格納
// 無名関数の格納
funcs += (string name) =>
{
Console.WriteLine("(lambda) : Hello2 {0}!", name);
};
funcs("world");
}
}
0856デフォルトの名無しさん2016/01/20(水) 00:25:59.71ID:/jAqE9aQ
日立かよ
0857デフォルトの名無しさん2016/01/20(水) 08:41:21.18ID:Q5scciVe
((HelloDelegate)funcs.GetImpoList()[0])("aho")
0858デフォルトの名無しさん2016/01/20(水) 08:44:04.79ID:6Nwq+BmN
今デリゲートを定義するメリットあるの?
System.Avctionでいいでしょ
0859デフォルトの名無しさん2016/01/20(水) 13:48:46.45ID:OYaq8QnH
Try系用のデリゲートが欲しいときは自前で定義せざるを得ない
0860デフォルトの名無しさん2016/01/20(水) 19:40:56.68ID:zd+3gPU+
いやそんなに関数が好きならoutなんか使わずにJavaScriptっぽく
TryHoge(result => 成功時(result), err => 失敗時(err))
でいい
0861わからない奴はしね2016/01/20(水) 19:41:30.79ID:2BWCguJw
独習C#が初心者頃しである点その1
p25の最初
0862わからない奴はしね2016/01/20(水) 19:41:56.50ID:2BWCguJw
26の最初
0863わからない奴はしね2016/01/20(水) 19:50:34.01ID:2BWCguJw
歴史やら専門用語をなぜか基礎の基礎にぶち込む
なぜか名前空間を最後に飛ばす
なぜか図解がひとつもない
オブジェクトの説明すらない
大丈夫か?
08648552016/01/20(水) 22:28:30.97ID:NCZhL0AS
ステップ実行して確認したら、
ラムダの部分もちゃんと動きました
すみませんでした

委譲をすると何が便利なのか?
普通に関数をコールするより便利なのか
今一つ実感が湧きませんが
多用されるということは便利な部分があってのことだろうと思うので
とりあえず使ってみたいと思います
0865デフォルトの名無しさん2016/01/21(木) 00:09:50.07ID:a7yd+tZ2
>委譲をすると何が便利なのか?
>普通に関数をコールするより便利なのか

私と全く同じ質問してますね・・・
上の方で答えて頂きました
0866デフォルトの名無しさん2016/01/21(木) 00:17:25.15ID:u55dqyZV
説明聞くよりFormsで電卓でも作った方がよくわかる
0867デフォルトの名無しさん2016/01/21(木) 01:38:58.64ID:88LciSZZ
元Java屋がbean連呼しててうるせえ
0868独習C ◆2EF1A8jABI 2016/01/21(木) 01:59:05.24ID:OcjdRNV3
組み込み型の説明くらいしろクソ
0869デフォルトの名無しさん2016/01/21(木) 02:00:00.03ID:OcjdRNV3
独習c#辞書カスすぎ
0870デフォルトの名無しさん2016/01/21(木) 02:08:22.88ID:bcCC1z7K
そろそろNGワード、NGネーム登録かな
0871デフォルトの名無しさん2016/01/22(金) 00:32:35.06ID:fKj1OuCZ
C# Windows フォームでアプリケーションを作り始めた初心者なのですが、
ウィンドウのリサイズ時にボタンなどもリサイズさせるにはどのようにすればいいのでしょうか?

初心者の質問で申し訳無いのですが、初心者すぎて調べても関係ないことが出てきてしまい、
途方にくれています。
0872デフォルトの名無しさん2016/01/22(金) 01:08:34.19ID:Mcw4vPxl
>>871
Anchorとかでググると手がかりがつかめるかもしれないよ!
0873デフォルトの名無しさん2016/01/22(金) 01:38:02.72ID:fKj1OuCZ
>>872
セルを配置してからその中にボタンを入れてAnchorを設定してみたところ、
無事にできました。ありがとうございました。
0874デフォルトの名無しさん2016/01/22(金) 22:23:30.00ID:vvX+CTNi
クラスBのメンバ関数内から、そのクラスへの参照をメンバとして持っているクラスAの
プロパティをset,getするための構文はありますか? それとも、参照を持つクラスAで
クラスBをnewする時に自身(クラスA)への参照を渡しておく等の必要がありますか?
0875デフォルトの名無しさん2016/01/22(金) 23:03:25.03ID:cH2NbEwD
たぶんコードで書いた方がイメージが伝わると思う
0876デフォルトの名無しさん2016/01/22(金) 23:26:23.68ID:aDNowO67
>>874
後者。
0877デフォルトの名無しさん2016/01/23(土) 00:59:15.45ID:1nX2r7W+
質問の意味がわからない。例示しろ
0878デフォルトの名無しさん2016/01/23(土) 02:07:13.38ID:z9alu8d/
class ClassA
{
ClassB b;
Property { set ;get; }
}


class ClassB
{
Method()
 {
  // ClassA.Propertyを操作したい
 }
}

って、ことでしょ。」
0879デフォルトの名無しさん2016/01/23(土) 02:07:58.44ID:isFkecmI
日本語
0880デフォルトの名無しさん2016/01/23(土) 06:06:00.80ID:2K8/GI2s
class ClassA
{
ClassB b;
Property { set ;get; }
}


class ClassB
{
Method()
 {
  foreach (var a in allACollection)
   a.b = this;
 }
}
0881デフォルトの名無しさん2016/01/23(土) 11:02:23.57ID:D5H1L8g0
逆参照ってたまに欲しいときあるけど、そんな仕組みのある言語ってないよね…たぶん
0882デフォルトの名無しさん2016/01/23(土) 11:12:08.93ID:VoXQl1Qa
逆参照ってなんだよ
dereference?
0883デフォルトの名無しさん2016/01/23(土) 11:49:07.35ID:gwJcz5VZ
ジョースター貴様見ているな
0884デフォルトの名無しさん2016/01/23(土) 13:25:30.20ID:VoITVh8P
ゲームパッドの入力を使いたくて、久々にManaged DirectXを使おうと思ったら
もう既になくて、XNAもサポートなくなるらしいし
wiki をみてみると Windows API Code Pack for Microsoft .NET Framework とかってのがあるらしいのだけれど
NuGetをみてもないし、リンクも切れている
今、デスクトップアプリからDirectXを使うとしたら、どういうやり方が標準的になってるんでしょうか?

#しばらく見ない内に随分変わったな・・・
0885デフォルトの名無しさん2016/01/23(土) 13:54:40.53ID:pu55AA1r
MS的にはC++推奨
C#ならUnity
0886デフォルトの名無しさん2016/01/23(土) 13:58:50.63ID:VoITVh8P
Unityってライブラリなの?話を聞いてるとなんかVisualStudioモドキのような印象だったんだけど
作ってるのは、データの可視化ツールで、マウスだと操作がちょっと大変だったからという所なので
ゲーム開発用プラットホームに行くわけにはいかないです
0887デフォルトの名無しさん2016/01/23(土) 14:08:48.80ID:KCwna5vH
ElectronでCanvasとWebGL使えば?
MS的には一寸前はそういう用途にはXAMLを推奨してたけど、もうMS自身がElectron使ってるし
0888デフォルトの名無しさん2016/01/23(土) 14:19:30.66ID:I9i6VINo
昔sharpDX使ってたけどもうないっけ?
0889デフォルトの名無しさん2016/01/23(土) 14:20:04.04ID:l5TKWQpo
HTML5ってゲームパッドも使えるのか
0890デフォルトの名無しさん2016/01/23(土) 14:21:13.61ID:pu55AA1r
ゲームパッド使うだけならそこだけC++で書いたらええがな
1k行もいらんだろ
0891デフォルトの名無しさん2016/01/23(土) 14:21:26.90ID:VoITVh8P
まぁ、最悪Comだからラップすれば使えるけど、公式があるならそっちに行きたかったんですよね
0892デフォルトの名無しさん2016/01/23(土) 14:25:27.37ID:VoITVh8P
ネットサーフィンして見る限りもうマイクロソフトはマネージ系DirectXからは撤退したみたいな感じなんですかね
終わってしまっていたか・・・
0893デフォルトの名無しさん2016/01/23(土) 14:29:09.18ID:pu55AA1r
終わったね
.NETに対するMSの投資は今や完全にWebへ全振りしてるから
0894デフォルトの名無しさん2016/01/23(土) 14:33:18.90ID:GlocuAeT
webbrowserコンポーネントの使い方がいまいちわからず困っています。

以下のページの、「発音したユーザー」の右隣の△のボタンをプログラムから押す操作をしたいです。
http://ja.forvo.com/word/pr%C3%A9sumer/#fr

ソースを見ると、以下のようになっています。
<a class="play" id="play_1620405" href="http://ja.forvo.com/word/pr%C3%A9sumer/"; title="presumer の発音を聞
く" onclick="Play(1620405,'OTE4Njc0Ny80OS85MTg2NzQ3XzQ5XzE4MjQ3MDZfMS5tcDM=','OTE4Njc0Ny80OS85MTg2NzQ3XzQ5XzE4MjQ3MDZfMS5vZ2c=');return false;" rel="nofollow">presumer の発音を</a>

ヒントをいただけると助かります。
0895デフォルトの名無しさん2016/01/23(土) 14:35:25.47ID:VoITVh8P
どちらかというと、社員が集団で辞めたときによる起こるような撤退ぶりな印象
見る限りサポート体制が薄くなるんじゃなくて、打ち切りだからな
組織が瓦解しているのかもしれない
0896デフォルトの名無しさん2016/01/23(土) 22:57:33.94ID:tJzq42nP
windows formのコモンコントロール(ラベルなど)の表示比率をリサイズした時に
維持したいのですが、例えば左右の余白が10%ラベルが90%として固定したい場合
プロパティとかではなく、座標計算してリサイズと当時に設定するしか無いのでしょうか?
0897デフォルトの名無しさん2016/01/24(日) 01:27:15.13ID:m3rL1jl7
>>895
なんでもいいけどSharpDX使っとけDirectX API網羅してるから
NuGetにもある
0898デフォルトの名無しさん2016/01/24(日) 01:41:33.80ID:htniKezy
NuGetのMSのOCRライブラリってストアアプリでしか使えない?
どうにかしてフォームアプリで使いたいんだが、どうしたもんか・・・
0899デフォルトの名無しさん2016/01/24(日) 02:10:36.19ID:GSUVPgMJ
>>896
何を言ってるのかさっぱり分からん。

リサイズするのはFormなのかラベルなのか。
余白っていうのはどの部分を言ってるのか。
0900デフォルトの名無しさん2016/01/24(日) 05:34:54.12ID:zmKxqTJl
C#で計測系のWindowsアプリ作ったことある人に質問があります。
計測機器から拾ったアナログデータのプロット、FFTのプロットなどに、付属のChartコントロール使ってますか?
それとも、全てオーナードローでやってますか?
0901デフォルトの名無しさん2016/01/24(日) 12:08:24.15ID:Y10O6Yt5
どんな機器から拾ったどんなデータをどう見せたいのかが分からないと意味なくないか。
0902デフォルトの名無しさん2016/01/24(日) 12:33:49.14ID:sDnfZi6x
Chartコントロールで表現可能なものなら使えばいいし
そうでないなら自分で描けばいい
0903デフォルトの名無しさん2016/01/24(日) 14:27:36.78ID:pNY+NcnR
オーナードローの用語の使い方が間違ってるような
0904デフォルトの名無しさん2016/01/24(日) 15:14:04.44ID:bw3MWu8t
オーナードロー
ってカッコつけて言いたいお年頃なんだろ
0905デフォルトの名無しさん2016/01/24(日) 15:23:52.77ID:30PPh5ie
オナドロ
0906デフォルトの名無しさん2016/01/24(日) 15:36:09.53ID:sDnfZi6x
意味的にはオナニードローだよなw
0907デフォルトの名無しさん2016/01/24(日) 19:42:07.46ID:Aj6v4F1z
文字列が45個入った
List<string> listStr;
が有って、それを10個ずつに分割したリストを作りたいのですが、
ループで回してやる方法しか思いつかないのですが、LINQとかラムダ式とか、何かそういう方法でスマートに出来ますか?
取り出す要素   List<string>を5つ作りたい
00~09       listStr0
10~19       listStr1
20~29       listStr2
30~39       listStr3
40~45       listStr4
出力は、
List<string>のリストか配列でお願いします。
0908デフォルトの名無しさん2016/01/24(日) 19:45:33.47ID:efwl3LYy
SkipWhile()とTakeWhile()を組み合わせれば行けそう
0909デフォルトの名無しさん2016/01/24(日) 20:28:00.81ID:rqxMFPcY
>>907
Linqでインデックス使えるので、こんな感じで
var listStr0 = list.Where((n, i) => i >= 0 && i < 10);
Listにするには最後にToListで
0910デフォルトの名無しさん2016/01/24(日) 20:31:37.19ID:pllviQHm
Ix の Buffer の出番だな
0911デフォルトの名無しさん2016/01/24(日) 20:32:39.79ID:58N9T2+A
linq chunkでググると沢山出てくるけどイマイチこれってのが無い
0912デフォルトの名無しさん2016/01/24(日) 20:37:20.79ID:LpWoFh+w
>>909
ラムダのアロー演算子?ってもう少しわかりやすいチョイスなかったのかね
0913デフォルトの名無しさん2016/01/24(日) 21:17:16.68ID:njH/x6oD
分かりやすさはどうでもいいが、=と>のキーが微妙な位置関係で押しにくい。
0914デフォルトの名無しさん2016/01/24(日) 21:23:57.56ID:Aj6v4F1z
>>908 >>909
レスありがとうございました。
Skip()とTake()と言うのを初めて使ってみたら出来たのですが、
結局ループ変数iを使って
Skip(i*10).Take(10).ToList<string>() みたいにして取り出しました。
このiをループさせない方法はありますか?
0915デフォルトの名無しさん2016/01/24(日) 21:31:17.31ID:H1CMcA7Z
>>899
事故解決しました。
ごめんなさい、formのリサイズ時にコントロールも余白の比率を維持したまま
リサイズしたいってことでした。

formの縦横の大きさから、座標とコントロールの比率を出して、
リサイズ後に計算してリサイズすることで解決しました。
0916デフォルトの名無しさん2016/01/24(日) 21:35:23.64ID:HlsipTod
linqの=>はゴーズトゥだけど、アローの->も位置関係同じようなもんじゃん
まぁどっちも押しにくいけど
0917デフォルトの名無しさん2016/01/24(日) 21:38:30.89ID:efwl3LYy
>>914
iをforじゃなくてEnumerable.Range()にしたらLINQっぽくならない?

var n = Enumerable.Range(0, 5).Select(i => listStr.Skip(i * 10).Take(10)).ToList();

foreach (var x in n) {
foreach (var y in x)
Console.Write("'" + y + "' ");
Console.WriteLine();
}
0918デフォルトの名無しさん2016/01/24(日) 22:41:38.27ID:Aj6v4F1z
>>917
サンプルありがとうございました。
出来ました。
でもEnumerableというのは型が分からなくなって混乱するので苦手です。
0919デフォルトの名無しさん2016/01/24(日) 23:05:37.93ID:IvXHpVfl
いやSkipもTakeもToListもWhereもSelectもEnumerableクラスのメソッドだから
0920デフォルトの名無しさん2016/01/24(日) 23:15:56.05ID:CtPdemUL
Enumerable.Rangeが何となく気持ち悪いのは分からんでもない。
0921デフォルトの名無しさん2016/01/24(日) 23:30:57.09ID:sDnfZi6x
linqとかキモい
0922デフォルトの名無しさん2016/01/25(月) 00:08:27.28ID:GD04/nQG
>>921
そんな事言ってるとJava8のStreamにも取り残されるぞ
0923デフォルトの名無しさん2016/01/25(月) 01:27:52.23ID:HQphZQpT
職場の課長や部長といった上司が
「linqやラムダなんて使わなくても書ける。今までも使わずやってきたんだからこれからも使う必要はない」
って言ってきます
どうしたらいいでしょうか?
0924デフォルトの名無しさん2016/01/25(月) 02:08:49.84ID:5LljS1Oc
指示通りにすればいいと思います。
また、どうしても使いたいならば説得に足る材料を集めればよいのではないでしょうか。
0925デフォルトの名無しさん2016/01/25(月) 02:59:55.70ID:fpkb5Ns6
技術を普及させるか、
レベルが合う環境に行くかだ。

過去を理由に出すやつは脳死してるから話すだけ無駄だけど。
0926デフォルトの名無しさん2016/01/25(月) 03:11:39.59ID:pk9HSDt/
EntityFrameworkでも導入してみれば?
0927デフォルトの名無しさん2016/01/25(月) 03:20:49.36ID:fpkb5Ns6
勉強しろ馬鹿と、本音で語らうのがいいと思います。
0928デフォルトの名無しさん2016/01/25(月) 04:58:58.13ID:HcUKLD+/
仕事なんて言われた通りにやって、とっとと帰るのが一番
0929デフォルトの名無しさん2016/01/25(月) 06:10:08.22ID:0hbOE3mN
嫌なら転職
0930デフォルトの名無しさん2016/01/25(月) 21:03:36.23ID:FVVwJ32O
ASP.NETではない普通のC#プロジェクトからJavaScriptを実行するにはどうしたら出来ますか?
0931デフォルトの名無しさん2016/01/25(月) 21:20:49.19ID:Irrux0BT
・C++を介してV8などを組み込む
・WinRTコンポーネントとしてJavaScriptを呼び出す
・WebBrowserを使う (汚物)
・JScript.NET (産廃)
・WSH JScript (遺物)
0932デフォルトの名無しさん2016/01/25(月) 21:27:46.41ID:Irrux0BT
あと、
・IKVMでNashhornを利用する
遅くていいならまあ使えないこともない
0933デフォルトの名無しさん2016/01/25(月) 21:43:37.17ID:FVVwJ32O
>>931
情報ありがとうございました。
C#なので、JScript.NET (産廃) が良いかと思ったのですが、
どのあたりが 産廃でしょうか?
0934デフォルトの名無しさん2016/01/26(火) 07:49:53.97ID:fPoW1lYF
TypeScriptを使え
の意味なのかな。
0935デフォルトの名無しさん2016/01/26(火) 21:07:17.48ID:96cI6c2/
linqがーλがーって言いあえるだけ幸せだよね
0936デフォルトの名無しさん2016/01/27(水) 10:41:38.67ID:sapMCej1
それはあるね
0937デフォルトの名無しさん2016/01/27(水) 14:40:58.56ID:LCHBmKl2
C#でファイルやフォルダを削除しようとすると、他のアプリで開いていたり
するとエラー出ますよね。
そういう場合でも、強制的に削除してしまう事は可能でしょうか?
0938デフォルトの名無しさん2016/01/27(水) 14:47:33.34ID:C1RoeKPM
C#に限った話じゃないが、普通には出来ない。
0939デフォルトの名無しさん2016/01/27(水) 14:47:35.86ID:sapMCej1
管理者権限でWindowsAPIのMoveFileEXを呼べば次回起動時に消せるかもしれない
0940デフォルトの名無しさん2016/01/27(水) 14:48:15.18ID:Ky0LnzPt
Windowsの仕様でFILE_SHARE_DELETEフラグをつけずに開いたファイル
およびそのファイルを含むディレクトリは削除できません
0941デフォルトの名無しさん2016/01/27(水) 20:08:50.71ID:sdy15MxI
List<T>の最後の要素を削除したい場合、

例えば
var hoge = List<String>;
として

hoge.RemoveAt(hoge.Count - 1)
としているのですが
もっといい方法がある気がしてなりません

これより適切な方法がありましたらご教示頂きたく…
よろしくお願いします。
0942デフォルトの名無しさん2016/01/27(水) 20:17:52.96ID:vDIuwjF/
拡張メソッドでRemoveLastでも定義したらいいんじゃないですか
病気かと思いますけどね
0943デフォルトの名無しさん2016/01/27(水) 20:19:04.34ID:sdy15MxI
LastIndex的なのは無いってことで良いんでしょうか
ググッて無いとは思っているのですが
本当に無いのか?というのが引っかかってしまいまして…
0944デフォルトの名無しさん2016/01/27(水) 20:22:08.77ID:ODr2GTmu
無い
0945デフォルトの名無しさん2016/01/27(水) 20:23:13.61ID:sdy15MxI
ありがとうございます!すっきりしました
0946デフォルトの名無しさん2016/01/27(水) 20:43:51.68ID:DbJX7SkT
状況によってはQueueやStackを使うことも検討すべき
0947デフォルトの名無しさん2016/01/28(木) 02:34:11.42ID:t3813frz
何をしたいかにもよるが、LinkedListもある
0948デフォルトの名無しさん2016/01/28(木) 11:45:41.90ID:BmnTht0C
MessageBox.Showって
using System.Windows
using System.Windows.Forms;
のどちらでもOKみたいですが何が違いますか?
0949デフォルトの名無しさん2016/01/28(木) 13:31:07.11ID:59XGHKPq
株式チャートのような直線、曲線等を書き込めて、十字カーソルを表示できるプログラムを作りたいのですが、
参考になる本やサイト等教えてください
0950デフォルトの名無しさん2016/01/28(木) 13:55:24.77ID:Zt+/Dst2
>>948
MessageBox は System.Windows.Forms.MessageBox のことだよね
using System.Windows.Forms;
しておけば System.Windows.Forms が省略できるから MessageBox.Showと書けるというだけのこと

using System.Windows でもOKというのは意味がちょっとわからない。
0951デフォルトの名無しさん2016/01/28(木) 16:02:37.72ID:hRq9ptwf
System.WindowsにもMessageBoxはある WPF用の奴
できることは同じなのでどっち使っても良い
0952デフォルトの名無しさん2016/01/28(木) 16:08:51.53ID:BmnTht0C
>>951
>>950
ありがとうございました
0953デフォルトの名無しさん2016/01/29(金) 14:21:40.45ID:6UBQnz7A
Buttonのクリックイベントって、
2回連続で押した時に最短で何秒間隔まで対応出来るの?
ググってもTimerのイベントばっかり出てくるので教えてください。
0954デフォルトの名無しさん2016/01/29(金) 14:42:49.30ID:2UArfT3f
ダブルクリックイベント使ったからといってクリックイベントが呼ばれない訳じゃない
そしてダブルクリックになるかどうかは環境次第
0955デフォルトの名無しさん2016/01/29(金) 15:34:43.76ID:6UBQnz7A
ああっ、すいません。
Buttonは例に出しただけで、単純にイベントの入力最短時間が知りたかっただけなんです。
ただSystem.Form.Timerの誤差が大きいから、
フォームコントロールのイベントの最短時間も環境次第で誤差は大き目ってことでよろしいでしょうか?
0956デフォルトの名無しさん2016/01/29(金) 15:52:31.55ID:2UArfT3f
イベント駆動に応答時間の保証は無い
0957デフォルトの名無しさん2016/01/29(金) 16:25:35.49ID:6UBQnz7A
Windowsの仕様上、保証なんて出来ないですよね、ありがとうございます。
0958デフォルトの名無しさん2016/01/29(金) 17:04:10.37ID:hRxA1dAH
それどころかWM_TIMERは優先度が低いから、メッセージキューが詰まってると一生来ない
0959デフォルトの名無しさん2016/01/29(金) 18:14:23.57ID:LSfqF04s
静的型付けと動的型付けの違いがよく分かりません
性的=コンパイル時にフィールドの型を決める
動的=プログラム実行時に型を決める

らしいですが、それによって何が変わるのかが分かりません
定数やリテラルはコンパイル時に決められるんですよね?
0960デフォルトの名無しさん2016/01/29(金) 18:33:36.85ID:5/3V3hxl
ハァハァ…
0961デフォルトの名無しさん2016/01/29(金) 19:36:25.78ID:Q4yHpTCm
>>959
C#は基本的に静的型付けなので初心者のうちは動的型付けなんてものは気にしないのが良い
0962デフォルトの名無しさん2016/01/29(金) 19:57:53.04ID:qdqnYPC0
C#とMySQLで名簿の一覧をクリップボードに取り込み→DataTable→DBの流れで
データを取り込むように作っています
DataTableのUpdateの段階でデバックでは取り込んでデータが意図した順番で並んでいるのですが、
MySQLWorkBenchで取り込んだデータを見ると、なぜか順番通りに入ってきていません
ID列にはPrimaryKey、AutoIncrementを割り当てていて、IDそのものは意図した番号順に割り当てられているのですが
WorkBench上ではIDが大きいものから並んでいるんです
AutoIncrementで割り当てられている数字と実際に割り当てられるIndexはまた違うのでしょうか
0963デフォルトの名無しさん2016/01/29(金) 20:06:58.75ID:/I2B0b0V
そもそも理論上DBに格納されてるデータには順番なんて存在しない
何らかの順番でデータが欲しいなら明示的にORDER BY使うなりしないといけない
0964デフォルトの名無しさん2016/01/29(金) 20:47:52.20ID:2UArfT3f
補足すると格納順が欲しいならそれを保持するカラムを用意しなさいって事です
0965デフォルトの名無しさん2016/01/29(金) 21:01:40.42ID:9TvUQCIM
>>962
>MySQLWorkBenchで取り込んだデータを見ると
これクエリ指定で結果を見るとかならともかく、データだけなら順不同になるのは当たり前じゃね
0966デフォルトの名無しさん2016/01/29(金) 21:15:32.93ID:LSfqF04s
>>961
了解しました
ありがとうございます。
0967デフォルトの名無しさん2016/01/29(金) 21:31:33.87ID:LOv7Ax2H
複数のテキストファイルの中身をチェックしたい時に
ファイル数分のスレッドを作成してその中で
string[] lns = System.IO.File.ReadAllLines(filename)
のようにしても問題ありませんか?
ReadAllLinesを複数スレッドから同時に使用しても問題ないかということです。
0968デフォルトの名無しさん2016/01/29(金) 21:35:32.70ID:buwyBTyq
壊れはしないけどかえって遅くなるぞそれ
0969デフォルトの名無しさん2016/01/29(金) 21:38:31.01ID:CBTGpVRc
破壊的な操作をするにしても配列コピーでいいだろ
0970デフォルトの名無しさん2016/01/29(金) 21:49:59.80ID:LOv7Ax2H
ありがとうございます。
速度とかは重要ではなくて各スレッドの処理が正しく終わるかどうかが問題なのですが
ReadAllLinesで返される配列のメモリがどう確保されるのか分からなくて質問させてもらいました。

遅くなるだけで壊れはしないという事は
同時に呼ばれた場合もちゃんと別の領域を確保してそれを返してくれるという事でしょうか。
09719622016/01/29(金) 22:06:05.85ID:U6iFcKOK
>>963-965
なるほど・・・
しかし、格納順はID(PrimaryKey,AutoIncrement)で作成順にナンバリングされていきますよね
それを保持するカラムとして機能すると思っていたのですが違うんでしょうか

いままでテーブル作成していてWorkBenchで表示させたときはいつもID順に並んでいたので
別に気にならなかったんですが、今回だけはなぜか違う
その辺なにが違うんでしょうか

IDの順序が気になったのは、DataTableに入れた値を変えてUpdateしていたときに
2回目(フォーム上のボタンから更新→フォーム閉じる→再びフォーム開いてボタンから更新)の処理で
同時実行違反になってしまい、プライマリキーがIDに設定されているか確認したり、
原因を探しているときに気づいたんですが・・・ その辺も何か関連してるのでしょうか
0972デフォルトの名無しさん2016/01/29(金) 22:41:00.55ID:/cWmSx8U
>>971
だから、RDBの行は格納順は(論理的には)不定だって
取り出すときにOrder byしないと、どんな順番で出てくるかはわからない
今までID順で出てたのは、たまたまそうなっただけ

WorkBenchとやらがどうなってるか知らんが、並べ替えて表示する機能もってるんじゃないのか
0973デフォルトの名無しさん2016/01/29(金) 22:53:59.41ID:u8nDFqF+
列名のところをクリックすると昇順・降順が切り替わるけど
いつのまにかそこを触っていたとか…
0974デフォルトの名無しさん2016/01/29(金) 22:55:12.25ID:2UArfT3f
内部的な作成順は意図した順番とか限りません
DBエンジンにもよるけれどトランザクションを確定させる順序は挿入順とは限らないのです
0975デフォルトの名無しさん2016/01/29(金) 22:56:57.11ID:2UArfT3f
因みにID順が駄目って意味じゃないよ
ID順で十分って要件も普通にある
でも本当に必要な並び順が存在するなら明確にカラムを持てって話です
09769622016/01/30(土) 00:51:07.94ID:je1TvcVU
よくわかりました
単純にPrimaryKeyを基準にWorkBenchはソートしてるのかと思っていたのですが、
その辺はMySQL自体とは関係ないようですね
GridViewに表示させてるときはIDできちんと並べ替えしてましたので
その点についてはこれまで通りで参ります
>>973
デフォルトで開いたときに表示されるのとIDが逆順に並んでます
もちろん列名クリックすれば並び替えもできてます
WorkBench(SequelProでも該当のテーブルだけIDが逆順に並ぶ)は
いったい何を見て並べてるんでしょう・・・

同時実行違反はわからずじまいで、フォーム閉じる度にDataSetを再インスタンス化してます
最初に読み込んだものと1回目に更新した値、2回目に更新する値で問題が起きてるんだとは思うのですが
1回目の更新が、いわゆる他人が更新したような状態で同時実行違反につながっていると
考えているのですが、再インスタンス化以外にもっとスマートな方法がないもんでしょうか
0977デフォルトの名無しさん2016/01/30(土) 01:49:08.58ID:WPy6oV1/
>>970
そういう時は、MSDNのFileクラスの一番下を見るんだ

「この型のすべてのパブリック static (Visual Basic では Shared) メンバーは、スレッド セーフです。 インスタンス メンバーの場合は、スレッド セーフであるとは限りません。」

ただし!でかいファイルを読み込むとこの方法だと大量のメモリを消費して最悪失敗するから注意
できれば一行ずつ処理すべき
0978デフォルトの名無しさん2016/01/30(土) 02:52:45.01ID:97c75ht0
二つのList<string> list1, list2 をくっつけたい場合、
List<string> list12 = list1.Concat(list2);  だとエラーで
List<string> list12 = list1.Concat(list2).ToList<string>(); ならOKなのは
なぜですか?
0979デフォルトの名無しさん2016/01/30(土) 03:36:25.57ID:+bXCU4qn
>>978
IEnumerable<TSource> Concatだからlist1.Concat(list2)はIEnumerable<string>になるのでTolistが必要になる
0980デフォルトの名無しさん2016/01/30(土) 03:47:36.83ID:97c75ht0
>>979
List<string>を連結しているのだから、結果も自動的にList<string>になる
ほうが便利だと思うのですが、何故そうなっていないのですか?
0981デフォルトの名無しさん2016/01/30(土) 03:59:16.44ID:z1eJzV/m
つもった
0982デフォルトの名無しさん2016/01/30(土) 04:48:55.53ID:ZlzREZMQ
>>980
ToArray()にしたい場合もあるからじゃね
それにforeachにすぐ掛けることもできるし
0983デフォルトの名無しさん2016/01/30(土) 08:06:28.17ID:Io+HPEGm
string.Formatに渡す書式文字列のパラメーター数を計算する関数はありますか?
"aaa{0}bbb"なら1
"aaa{0}bb{1}ccc"なら2
"aa{0}bb{0}cc{1}ccc"なら2
といった具合に値を返して欲しいのです
0984デフォルトの名無しさん2016/01/30(土) 08:41:02.59ID:96ElhlW8
なんだ、低脳ばっかりだな
0985デフォルトの名無しさん2016/01/30(土) 08:56:46.75ID:C5JZiLR5
ここは低能用だから、問題ないだろ。
0986デフォルトの名無しさん2016/01/30(土) 09:35:25.65ID:xTElL0w9
>>980
便利だと思うのは、あなたの私見だから。
0987デフォルトの名無しさん2016/01/30(土) 09:38:13.63ID:xTElL0w9
>>983
可変長引数で関数作成して、その長さを返せば良い。
何の意味があるのかは知らないが。
0988デフォルトの名無しさん2016/01/30(土) 11:28:38.58ID:opD0leUp
まぁ低脳なんて書いちゃう奴は間違いなく低能だな
0989デフォルトの名無しさん2016/01/30(土) 11:39:09.91ID:6Po/ckh8
>>980
リストインスタンス作るコストはただじゃないから
0990デフォルトの名無しさん2016/01/30(土) 12:20:22.02ID:+FxrPnS0
>>988
そーゆうあなたは定脳
0991デフォルトの名無しさん2016/01/30(土) 12:21:19.10ID:WViD2aM9
繋ぐならAddRangeじゃだめなのかな
0992デフォルトの名無しさん2016/01/30(土) 13:16:43.52ID:WPy6oV1/
>>980
実装を見るとわかるけど、yield returnを順番にしてるだけでメモリも時間もほとんどかからないから
ToListすると、全部コピーすることになり、ものすごいコストがかかる
0993デフォルトの名無しさん2016/01/30(土) 20:06:58.13ID:PQgbVUpF
うめー
0994デフォルトの名無しさん2016/01/30(土) 23:02:46.48ID:ahDYA9hb
しかし、ListとListを結合してるのにList以外が返ってくるのは直感的ではないな
0995デフォルトの名無しさん2016/01/30(土) 23:38:53.79ID:I7tE4l0o
>>994
Concatの正体はIEnumerable<T>の拡張メソッドで、引数もIEnumerable<T>だからIEnumerable<T>を返すのは自然だったりする
0996デフォルトの名無しさん2016/01/30(土) 23:40:25.46ID:xTElL0w9
IEmuerableとIEmuerableを結合してるんだ
0997デフォルトの名無しさん2016/01/30(土) 23:42:03.59ID:K5qkBmzk
ListにConcatメソッドが生えてるわけじゃない
0998デフォルトの名無しさん2016/01/31(日) 00:53:16.84ID:OtXGSzkV
次スレ
http://peace.2ch.net/test/read.cgi/tech/1454169140/
0999デフォルトの名無しさん2016/01/31(日) 00:54:30.83ID:OtXGSzkV
これで心置きなく埋め埋め
1000デフォルトの名無しさん2016/01/31(日) 00:54:57.79ID:WZAhYY4A
1000げと
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
10021002Over 1000Thread
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/
http://pink-chan-store.myshopify.com/
レス数が1000を超えています。これ以上書き込みはできません。