ふらっと C#,C♯,C#(初心者用) Part131at TECH
ふらっと C#,C♯,C#(初心者用) Part131 - 暇つぶし2ch2:デフォルトの名無しさん
17/09/08 21:39:46.11 mcCYyLIS.net
>>1

ボーリング処理だったか..

3:デフォルトの名無しさん
17/09/08 21:41:20.91 13cy/HVm.net
そうそうw
ボーリング処理ってなんだよ
わかるかよ
957 名前:デフォルトの名無しさん (ブーイモ MMba-d5PD)[sage] 投稿日:2017/09/07(木) 16:48:04.48 ID:CjGXGOTyM [2/2]
1秒毎にボーリング処理するなかであるクラスのメソッドを呼び出す場合、毎回newするのは悪手ですか?staticが基本でしょうか?

4:デフォルトの名無しさん
17/09/08 21:44:51.40 13cy/HVm.net
答え
普通のstaticで済む用途ならstaticで書いたほうがいい
負荷やリソースじゃなくて毎回newする意味がない
sin計算するとして毎回Mathインスタンスをnewしなくてはいけない設計だったら糞だなって思う

5:前スレ 966
17/09/08 21:52:15.93 nZ7nhjDi.net
前スレ >>968 の ID:VpThhHIU0 さん。
助かりました。ありがとう。
その例外メッセージ後半が目に入っていませんでした。。おバカでした。
後半の方法で対応できたのですが。
この方法で派生先クラスをシリアライズすると、クラスの情報も一緒に出力されるんですね。
出力しない方法があったら知りたいです。もっと探せば見つかるかなあ。

6:デフォルトの名無しさん
17/09/08 22:04:57.94 5liNTHI5.net
前スレ>>975
> 1分以上止まっちゃってたことあるよ
その時の.Net Frameworkのバージョンいくつだったんだろ。
今はバックグラウンドGCとか、GCも改良されてて長期間止まり難くなってるけど。

7:デフォルトの名無しさん
17/09/08 22:10:04.29 5liNTHI5.net
改良されたとは言っても、全く止まらない訳じゃないから、
数100msecでも止まって欲しくない場合は、やっぱり手動でGCを制御する必要があるけどね。

8:デフォルトの名無しさん
17/09/08 22:45:19.27 Ej7G00WU.net
>>4
答になってないよw
staticで済む用途ならstaticで書いたほうがいい、ではなくてそれはstaticで書かなきゃだめw
最初から言ってるように、毎回newするのと対立する方法は、
フィールドでインスタンスを持っておこくと。

9:デフォルトの名無しさん
17/09/08 23:26:37.19 13cy/HVm.net
>>8
>普通のstaticで済む用途なら

10:デフォルトの名無しさん
17/09/08 23:50:16.96 Ej7G00WU.net
>>9
意味が分からない
普通であろうがなかろうが、staticで書けるメソッドをインスタンスメソッドで書く意味はないし
やってはダメだろうに

11:デフォルトの名無しさん
17/09/08 23:53:51.95 mcCYyLIS.net
気分はstaticになってきたな

12:デフォルトの名無しさん
17/09/09 02:26:05.00 QZscGhnQ.net
staticおじさんがまた大勝利してしまったと聞いて

13:デフォルトの名無しさん
17/09/09 03:16:09.56 ZyaEKkZw.net
前すれワッチョイとかいうのだったんだな
2chのシステムよく知らんので普通のスレで立てちゃったよ
やり方知らんしw
気に入らなかったら別のスレ立ててね

14:デフォルトの名無しさん
17/09/09 03:27:48.28 Dk6TKP7N.net
1月強で1000行くんだから我慢して使い切れよ

15:デフォルトの名無しさん
17/09/09 06:30:41.62 mbeKZ08U.net
おまいらに真実を話す。ポーリングって確かに打ったんだわ。スマホが勝手にボーリングに変換してたんだわ
ATOKあほすぎんだろ

16:デフォルトの名無しさん
17/09/09 08:37:40.24 GUslkcWv.net
変換はgoogleのが絶対いいな
流行りのワードも出てくるし
これ以外考えられないって性能になっちゃってないか?

17:デフォルトの名無しさん
17/09/09 10:04:18.06 m2qj4yLN.net
インスタンスをキープしたいのなら、ポーリングのクラスにフィールド設定してそこに置けば済むわけでstatic classは有り得ないわな
static classはグローバル参照がどうしても必要な設定値とか、拡張メソッドとか、Mathのようなライブラリで使うもので
不用意に使うとろくな事がない代物だ

18:デフォルトの名無しさん
17/09/09 10:20:42.56 6JP7a1zU.net
>>5
DataContractSerializer系じゃ無理なはず
飽くまでシリアライザなんでデシリアライズできなきゃならない
型情報が無くなったら元のどの型にデシリアライズすればいいか分からなくなっちゃう

19:デフォルトの名無しさん
17/09/09 10:39:45.84 IbIBfPO7.net
それでも書いた処理によってガベコレまでの一時メモリリークは起こるので強制ガベコレの管理はどうせ必要になる
誰かのライブラリ使ってて中がブラックボックスだったときにガベコレまでの一時メモリリークは気づけない
staticで変数用意してもそれがすべてと言い切れないなら意味がない
無駄な努力じゃねーかな?

20:デフォルトの名無しさん
17/09/09 10:42:06.00 bgDvHBVU.net
>>17
だいたいあっているけどstaticにしようとしていたのはメソッド

21:デフォルトの名無しさん
17/09/09 11:56:12.29 usm4kYFG.net
ライブラリだったら内部の構造は考えられずガンガン使われるから
ポーリングクラスが1000個とか作られてつかえねーなって言われる
だったらstaticな要素にしといたほうがいい

22:デフォルトの名無しさん
17/09/09 13:29:46.77 WZb5jfgG.net
なんか昨日から変なところでstatic使えとか意味不明なこと言ってる人がいるけど、
Cのstatic付きのローカル変数と勘違いしてないか?w
それC#にはないよ
VBにはあるけどねw

23:デフォルトの名無しさん
17/09/09 13:49:42.28 mQdlpUO1.net
>>22
何の話をしているんだ
元の質問が別のclass内のメソッドを呼びたいが1秒ごとに呼び出すのに毎回インスタンスを作りたくないので
そのメソッドをstaticにしてインスタンス作らずに呼べるようにした方がいいかってものだった
だから上の方でそのインスタンスをフィールドで持っておけば済むって話になってんの

24:デフォルトの名無しさん
17/09/09 14:06:55.82 WZb5jfgG.net
>>23
だから、(これは質問者の質問のせいでもあるけど)話の最初からstaticなんて
まったく関係ない。そんなことは機能かれ俺自身が言ってるのよ
それとは別に、>>19とか>>21とか読むと、C#にもCのstaticなローカル変数が存在すると
勘違いしてるんじゃないかと

25:デフォルトの名無しさん
17/09/09 14:17:10.91 yizOjyJK.net
質問でも回答でもない雑談なら他でやれよ

26:デフォルトの名無しさん
17/09/09 15:31:26.30 mbeKZ08U.net
>>23
わかりやすい

27:デフォルトの名無しさん
17/09/09 15:55:44.10 usm4kYFG.net
>>24
誰もそんなことは言ってないのに
勝手にそう思ってるのはよくわかった
質問はstaticメソッドの話をしてるのはみんなわかってる

28:デフォルトの名無しさん
17/09/09 17:51:48.60 f8+hvMV6.net
>>27
じゃあ何の話をしてるの?
率直に言って>>21は何を言ってるのかさっぱり分からん
昨日から言ってるし>>23も言ってるように、そももも元の質問者の話とstaticは何の関係もない。
恐らく質問者は何か勘違いしてstaticと書いてるだけ

29:デフォルトの名無しさん
17/09/09 18:18:19.52 usm4kYFG.net
>>28
え?
憶測だけど
イベント内で毎回生成される
var a=new ClassA();
a.Do(b);

staticメソッドのClassA.Do(b)にしようかということじゃないのか?
;初心者の質問なんてその程度だろ
どこからc++のstaticと勘違いしてるなんて変な主張が出てくるのかわからない

30:デフォルトの名無しさん
17/09/09 18:24:38.82 usm4kYFG.net
インスタンスのフィールドでaを持てって話も出てるけど
そもそもインスタンス作る必要もないものをわざわざ保存しておく意味はないよ
それがなぜだか生成コストの話になりそっちに付き合って話したら妙な揚げ足取りみたいのに
絡まれていいことないわ

31:デフォルトの名無しさん
17/09/09 18:28:32.66 f8+hvMV6.net
>>29
何周遅れの話をしてるのよ。疲れるわ
だから、staticで書けるメソッドならstaticで書くのが当たり前で、
それをあえてインスタンスメソッドとして書くという選択肢は存在しない。
何が「え?」だよ。こっちが言いたいよw

32:デフォルトの名無しさん
17/09/09 18:30:13.39 usm4kYFG.net
だからそこでおわってんだよ
でなんでc++のstaticが出てきたり
質問者が勘違いしてstaticって言ってるみたいなトンチンカンな話になるのかと
もうおとなしくしてればいいのに

33:デフォルトの名無しさん
17/09/09 18:32:50.82 usm4kYFG.net
>昨日から言ってるし>>23も言ってるように、そももも元の質問者の話とstaticは何の関係もない。
>恐らく質問者は何か勘違いしてstaticと書いてるだけ
こういうこと書いててよく言えるな

34:デフォルトの名無しさん
17/09/09 18:34:06.78 xrlCaMPb.net
「staticは関係ない」って書いている奴はC#の前に日本語勉強しろよ

35:デフォルトの名無しさん
17/09/09 18:34:21.92 f8+hvMV6.net
なんか日本語「も」不自由な人みたいだね
何言ってるのかさっぱり分からんw

36:デフォルトの名無しさん
17/09/09 18:35:50.91 usm4kYFG.net
>>35
じゃあ
>>28の説明をまともにしてみろ

37:デフォルトの名無しさん
17/09/09 19:41:37.58 FYc/xt6+.net
荒れてるので、名のりにくいのですが、私が質問者です。
>>23
この記載で、最適解はこれだと認識しました。
で、質問した時点では
>>29の憶測通り。
とりあえず個人的にはもう納得してるので、これで終わりにしてほしい。
皆さんありがとう

38:デフォルトの名無しさん
17/09/09 19:47:52.23 m2qj4yLN.net
>>31
それは大間違い。staticで書かなくても良いものは極力インスタンスメソッドにするべきだな

39:デフォルトの名無しさん
17/09/09 19:52:01.12 GUslkcWv.net
>>38
理由を書けよw
いったいどういう育ち方したらそんな投げっぱなしのジャーマンなんだ?

40:デフォルトの名無しさん
17/09/09 19:55:18.70 G5uGYTR5.net
>>38-39
いつまで続けてるの?
質問者が終了を宣言してんだよ

41:デフォルトの名無しさん
17/09/09 19:59:42.49 GUslkcWv.net
>>40
は?お前はどうしたいの?

42:デフォルトの名無しさん
17/09/09 20:03:34.87 suZLJloi.net
ワッチョイが無いとこの一連全部同一人物なんじゃないのと勘ぐっちゃうわ

43:デフォルトの名無しさん
17/09/09 20:29:10.27 f8+hvMV6.net
>>39
>>38は釣りじゃなく本気で言ってるなら(恐らくそうw)
関わっても時間の無駄にしかならないお方だ。暇つぶしにはいいかもしれないけどw
時々対面の世界でもこういうガチで盛大な勘違いをやらかしてる人がいるから困るよ本当w

44:デフォルトの名無しさん
17/09/09 21:30:45.08 usm4kYFG.net
前に会ったRuby使いはクラスメソッド(c#のstaticメソッド)は極力使わないで
インスタンスメソッドを使うべきだって言ってたのを思い出した
何らかの理由があるんだろうけど無視した

45:デフォルトの名無しさん
17/09/09 22:09:15.56 wzTKK5fz.net
どっちがいいって話じゃないけど、あとで実装を差し替える可能性があるなら
クラスメソッドを直接使わずにシングルトンにするって手法はある。

46:デフォルトの名無しさん
17/09/09 22:28:01.73 m2qj4yLN.net
インスタンスってのは主に多重実行のための仕組みなんだから、ある程度適当に作ってもスレッドセーフな物が出来上がる
staticで作るなら、複数のスレッドから同時多数アクセスが有っても大丈夫なように組まないといけないし
それが面倒だから極力スタティックは避けるべきだと思うんだがな

47:デフォルトの名無しさん
17/09/09 23:17:45.56 nwiyZr1T.net
Taskでも内部でThreadPoolを使うから
(ThreadPool.SetMinThreads(実行したい数))は必要だけど
ThreadPool実行で実行して待ち合わせ
とTaskで実行して、Task.WhenAll
は何が違いますか?
そもそも、ThreadPoolは必要ないですけど気になったので、質問します。

48:デフォルトの名無しさん
17/09/09 23:20:05.29 5C7c1QNW.net
極力staticメソッドを使うという方針を取ると
関数用クラスとデータ用クラスに分かれやすくオブジェクト指向の考え方からは離れやすい
OO的にはアンチパターンになる可能性もあるけどトレードオフを理解して方針を決めればいいと思うよ

49:デフォルトの名無しさん
17/09/10 00:19:09.54 0Cs8J57s.net
>>18
そうですね。
今回の場合、相手がアレで。向こうが予期しない要素を含むデータを送ると不正終了するらしく。
最初の質問前に時間がなかったのでデータクラスを完全に2つに分けて作ってしのいでたのですが、そのままにするしかないかも。。

50:デフォルトの名無しさん
17/09/10 00:57:09.14 pV2ta4X5.net
>>47
既定ではスレッドプール使うってだけでTaskが後ろで何使うかは規定されてない
あとWhenAllはasync/await向けに作られてる

51:デフォルトの名無しさん
17/09/10 01:13:53.87 dSp+Ezdg.net
>>50
規定なら同じですか?
async/await使わないならthread poolの方が良いのかな?

52:デフォルトの名無しさん
17/09/10 01:40:04.99 pV2ta4X5.net
>>49
Json扱うならJson.NET使うのが良いよ
基本ライブラリ以外使っちゃダメとか言われてるならSystem.Web.Script.Serialization名前空間

53:デフォルトの名無しさん
17/09/10 01:42:59.22 MMSQKBM8.net
>>51
いや普通にTask実行Task.WhenAllで良いんじゃね

54:デフォルトの名無しさん
17/09/10 02:11:55.78 dSp+Ezdg.net
>> 53
やっぱり、メソッド分けてasync/await使いたくなる気がする。
ThreadPoolの方がメソッド分けしない糞コードでも書きやすい。

55:デフォルトの名無しさん
17/09/10 03:56:30.01 6GasKA+m.net
わざわざ低位のThreadPoolを使うメリット無いだろ。
ちなみにTaskの方は生成時のオプションでThreadPool使わず専用スレッドを割り当てたりも出来る。

56:デフォルトの名無しさん
17/09/10 04:49:01.84 hdyOlPd+.net
超低レベルな質問ですみません
wpfで実験しています
ボタンを押すとLabelが回転するというテストです
ボタンはトグル処理してあって押すと回転、もう一度押すと止まっるという作動です
int band = 0;
DispatcherTimer tim = new DispatcherTimer();
public void Rotet()
{
label01.Content = "自動回転";
tim.Start();
tim.Interval = TimeSpan.FromMilliseconds(10);
tim.Tick += Tim_Tick1;
}
public void Rotstop()
{
label01.Content = "自動回転停止";
tim.Stop();
}

57:デフォルトの名無しさん
17/09/10 04:49:17.97 hdyOlPd+.net
public void Tim_Tick1(object sender, EventArgs e)
{
band++;
label01.RenderTransform = new RotateTransform
{
Angle = band
};
}
10ミリ秒毎に1度回転するという作動を希望しています
が、トグルボタンを押してRotetを呼び出すたびに、band++での増加量が加算されてしまいます
5回Rotetを呼び出すと10ミリ秒毎に5�


58:揩ヲます 増加量は常に1であって欲しいのですが、これの根本原因はなんでしょうか?



59:デフォルトの名無しさん
17/09/10 05:21:45.40 6GasKA+m.net
>>56
Tickイベントのハンドラ登録だけを毎回してるから。
登録は1度だけにするか、毎回解除もするようにしないと。
後、質問とは関係ないけど、タイマーを開始するタイミングもおかしい。

60:デフォルトの名無しさん
17/09/10 07:49:42.90 hdyOlPd+.net
>>58
どうもありがとうございます
今VS立ち上げられないので確認はあとになりますが、教えていただいた内容は把握できました
後、たしかにstartのタイミングおかしかったですね
こっちも直してみます
どうもありがとうございました

61:デフォルトの名無しさん
17/09/10 08:59:57.01 hdyOlPd+.net
>>58
今VS2017C#で修正確認できました
ありがとうございました

62:デフォルトの名無しさん
17/09/10 11:02:35.14 u2dcVsCu.net
>>55
既存のメソッドに手を加えずtaskにできますか?

63:デフォルトの名無しさん
17/09/10 18:43:13.56 yZp0NmX3.net
Macで開発されている方がいましたら環境を教えて欲しいです
visual studio for macはwindowsアプリを作らなければ不便はありませんか?

64:デフォルトの名無しさん
17/09/11 03:02:17.61 OjrsKbwz.net
>>61
TaskでもThreadPoolでもThreadでも同じだけど、
既存メソッドがスレッドセーフでないなら、一般的なマルチスレッド対策は必要。

65:デフォルトの名無しさん
17/09/11 04:22:03.43 xOd8/hnB.net
インターフェイス(ICollection)を実装しています。
例えば、.Clear() メソッドを実装するときに、
public void ICollection<String[]>.Clear()
{
のように、public を付けると、怒られます。
修飾子 public がこの項目に対して有効ではありません。
合理的な理由でもあるのでしょうか。

66:デフォルトの名無しさん
17/09/11 06:00:48.58 dDtMImyT.net
>>63
ThreadPoolが長時間処理に向かないって書いてあったけど、それも嘘だと思う。
GUIアプリとかゲームなら表示を妨げるけど、データ処理だけやるなら変わらない。

67:デフォルトの名無しさん
17/09/11 08:29:53.19 qHOAMFMh.net
>>65
何言ってるのかさっぱりわからんね

68:デフォルトの名無しさん
17/09/11 08:52:59.26 OjrsKbwz.net
>>65
それはThreadPoolは実行されるスレッド数を少なく抑えて処理を順番にこなすための仕組みだから。
長時間の処理だとThreadPoolの少ない実行スレッドの1つを占有してしまう。
ThreadPoolの実行スレッド数の上限を増やしても良いけど、それより専用のスレッドを割り当てたら方が良いだろう。
Taskの場合は、LongRunningオプションを付ければ、ThreadPoolではなく専用スレッドになる。

69:デフォルトの名無しさん
17/09/11 09:22:14.90 /+/7clo/.net
>>64
publicを付けたければICollection<>.を外せばいい。
インターフェイス名.メソッド名 の形のメソッド定義はインターフェイスメンバの明示的実装といって、
クラスとして見ると不可視だけどインターフェイスを通せばアクセスできるメソッド定義方式。
なのでpublicでもprivateでもないということでアクセスレベルを指定できない。

70:デフォルトの名無しさん
17/09/11 10:29:45.93 dDtMImyT.net
>>67
その処理以外やらないなら、どうでもよくね?

71:デフォルトの名無しさん
17/09/11 10:44:26.27 pmpZkIs4.net
まあ小さいプログラムで全部把握できて問題ないと判断できるなら好きにすればいいだろ

72:デフォルトの名無しさん
17/09/11 11:38:40.59 8iugXZk3.net
書いてあった
これ馬鹿の証な

73:デフォルトの名無しさん
17/09/11 12:59:45.47 dDtMImyT.net
馬鹿でも使えるってのは重要
async/awaitなんて頭の良い奴しか使えない
しかも必要のない簡単なレベルの処理もある

74:デフォルトの名無しさん
17/09/11 15:25:28.66 4atU11H8.net
C#は馬鹿でもできちゃうけど
逆引きサンプルを適当に見つけてきてコピペするだけで完了
でもVC#使わないとGUIが作れない
VC#が作る雛形何なのかすら知らない
一からテキストエディタだけで作れるのはコマンドラインツールぐらいしかできない

75:デフォルトの名無しさん
17/09/11 15:41:22.50 n0q9WWLR.net
label内に複数行を表示すると、表示領域外にまで改行された行が表示されず、上部の行だけが表示されます
最下行基準で、入り切らない部分は上部の行をスクロールアウトさせて表示させたいのですがやり方が検索しても上手く探せませんでした
どういう方法がありますか?

76:デフォルトの名無しさん
17/09/11 16:01:55.79 D2XcMjyP.net
>>73
お前CLIでWebアプリ作れねーのかよ

77:デフォルトの名無しさん
17/09/11 16:17:45.12 1TpoY8sm.net
>>74
OnPaintをオーバーライドしてDrawString使って自分で実装するしかないでしょう

78:デフォルトの名無しさん
17/09/11 17:37:45.41 n0q9WWLR.net
>>76
ありがとうございます
自分にはかなり無理なんでtextboxの方でどうにかしてみます

79:デフォルトの名無しさん
17/09/11 18:57:43.16 JSNADtu1.net
リファクタリングしてくれるサービスないかな?
糞長いコード書いて可読性やばいんだわ

80:デフォルトの名無しさん
17/09/11 19:02:47.03 McMCGXVu.net
githubに上げてここにURL晒せばみんながボコボコに叩いてくれるよ

81:デフォルトの名無しさん
17/09/11 19:10:16.26 JSNADtu1.net
>>79
優しくしてくれないと発狂しそう

82:デフォルトの名無しさん
17/09/11 21:03:26.89 9wMrToxf.net
class A{ public virtual void test(){} }
class B : A{ public override void test(){} }
var b = new B();
b.test();
bからAのtestを呼びたい場合はどうすればいいでしょうか。

83:デフォルトの名無しさん
17/09/11 21:11:05.30 McMCGXVu.net
>>81
まっとうな方法はない
MethodInfo使っても無理
ILGeneratorなどで(callvirtでなく)call命令を発行する必要がある

84:デフォルトの名無しさん
17/09/11 21:12:50.19 1TpoY8sm.net
>>81
URLリンク(docs.microsoft.com)

85:デフォルトの名無しさん
17/09/11 21:26:34.21 wRb7h9Km.net
>>81
これを実現したいのって、具体的にどういうケースなの?
差し支えない範囲で用途を教えて

86:デフォルトの名無しさん
17/09/11 21:31:06.84 9wMrToxf.net
>>84
状況によって派生された処理ではなくオリジナルの処理をしたいだけです

87:デフォルトの名無しさん
17/09/11 21:35:23.53 wRb7h9Km.net
>>85
それはわかってるよー
その中身を聞いてるんだ

88:デフォルトの名無しさん
17/09/11 21:36:40.45 zUMWcZ3H.net
日本語で無駄なやり取りするより>>83みたいにURL1つ貼ってコレ見ろでいいじゃないの
設計がどうのとか言ってもしゃーないし

89:デフォルトの名無しさん
17/09/11 21:41:05.67 9wMrToxf.net
>>83
これを見てもよくわかりません。
メソッドの内部からbaseで基底クラスのメソッドにアクセスできる方法はしっています。
質問は変数bからAのtestを呼ぶ方法です。

90:デフォルトの名無しさん
17/09/11 21:45:55.36 mdk6iQ5T.net
できねえから考え方を改めろ

91:デフォルトの名無しさん
17/09/11 21:56:12.41 1TpoY8sm.net
>>88
Bにベースクラスのtestを呼ぶメソッドが用意されていなければ普通の方法では不可能でしょう

92:デフォルトの名無しさん
17/09/11 21:58:07.40 9wMrToxf.net
>>90
その方法にすることにします

93:デフォルトの名無しさん
17/09/11 22:04:35.15 S1tKpOaB.net
>>52
それだ! < System.Web.Script.Serialization
ありがとう。

94:デフォルトの名無しさん
17/09/11 22:23:45.62 wRb7h9Km.net
overrideをnewに変えてBaseクラスにキャストしてから使えば
同じメソッド名でBaseクラスのを呼び出せる

95:デフォルトの名無しさん
17/09/11 23:37:21.39 adY5bmZu.net
overrideしなきゃいいだけじゃないの?

96:デフォルトの名無しさん
17/09/11 23:48:23.10 xOd8/hnB.net
>>68
とてもわかりやすく有難うございました!
インターフェイスに実装方法が二種類あるとは知りませんでした。
明示的ではない方で実装したいと思います。
結構ぐぐったんですが、それについて述べられたページが見つからなかったし、
C#のハンドブックにも載っていなかったことなのでとてもためになりました。

97:デフォルトの名無しさん
17/09/12 09:00:44.91 EOOe72TQ.net
○次受けが多いほど退場率が早くなる。高くなる
直受けの50万 客:いつまでもうちにいていいよ
3次受けの50万(客は90万払ってる) 客:短期延長していい?
5次受けの50万(客は150万払ってる) 客:作り終わったらとっと出てけ できなかったら即退場だ 
長時間労働 高稼働 高スキル要求が多い
フリーランスサイトを運営している零細ITの自称エージェントは労働市場から流れてくる案件を転売してるだけだった。
労働市場に加入すれば誰でも案件に応募することができた。収入が40万50万台にならなくて済む
エンド - ユー子 - エージェント-JIET 公表価格 90~60 - エージェント×3 = 言い値50万以下
エンド - ユー子 - エージェント-JIET 公表価格 90~60 - エージェント×1 悪質な言い値で50万以下
エンド - ユー子 - エージェント-JIET 公表価格 90~60 - JIETに加入して公表価格で応募できる
eJobgo JIET JISA で検索
優良エージェント・優良サイト
首都圏IT(PE-BANK) クラウドテック プログラマーズ

98:デフォルトの名無しさん
17/09/12 09:41:27.60 BNnArjmm.net
Listのselectで入力された値に応じてPropertyを指定したいのですが、もっとスマートなやり方がありそうなので教えてください
今は↓のように手作業で全パターンをチェックしていて、
class Product {
string Field1 ...
string Field2 ...
...
}
List<Product> list = ...
string input = ...
switch (input) {
case "Field1":
result = list.select(p => p.Field1);
break;
case "Field2":
result = list.select(p => p.Field2);
break;
...
と、続いて長いくて見辛いし手間
}
これを
result = list.select(p => p[input]);
こんな感じで入力された値に応じて返す方法を知りたいです

99:デフォルトの名無しさん
17/09/12 10:57:43.00 3hDQXbkU.net
>>97
お前何なの?
初心者じゃねーなら自分で勝手にやれよ

100:デフォルトの名無しさん
17/09/12 11:24:21.98 0auESU8x.net
>>98
答えられないなら黙ってればいいのに

101:デフォルトの名無しさん
17/09/12 11:26:42.14 FDETfUWp.net
>>97
Dictionaryは?

102:デフォルトの名無しさん
17/09/12 11:29:54.29 FDETfUWp.net
Enum使う手もあるけど
用途次第

103:デフォルトの名無しさん
17/09/12 11:42:24.56 3hDQXbkU.net
>>97
linqは遅いので使わない方法に直す

104:デフォルトの名無しさん
17/09/12 12:06:09.15 vpJikBX5.net
>>102
その程度の差が問題になるくらいシビアなパフォーマンスを求められる場合ならばね

105:デフォルトの名無しさん
17/09/12 12:23:45.40 1FkmH3QI.net
class Product
{
  string Field1 ...
  string Field2 ...
  ...
  private static Dictionary<string, Func<Product, string>> mSelectorTable
  = new Dictionary<string, Func<Product, string>>()
  {
    {"Field1", p => p.Field1},
    {"Field2", p => p.Field2},
    ...
  }
  public static Func<Product, string> GetSelector(string key)
  { return mSelectorTable[key]; }
}
...
var s = Product.GetSelector(input);
var result = list.select(s);

106:デフォルトの名無しさん
17/09/12 12:27:58.67 3hDQXbkU.net
>>103
わざわざ遅い方法で書く必要もないだろ

107:デフォルトの名無しさん
17/09/12 12:31:47.09 UuTpmvic.net
また無駄な最適化野郎か

108:デフォルトの名無しさん
17/09/12 12:36:22.11 vpJikBX5.net
>>105
わざわざ冗長な方法で書く必要もないだろ

109:デフォルトの名無しさん
17/09/12 13:05:09.61 02LA08SS.net
無駄な時間ならいくらでもある人らが語る最適とは…?

110:デフォルトの名無しさん
17/09/12 13:11:24.60 3hDQXbkU.net
>>107
でも遅いのは問題だよね

111:デフォルトの名無しさん
17/09/12 13:12:12.91 3hDQXbkU.net
わざわざ変な書き方して遅いとか最悪だよね

112:デフォルトの名無しさん
17/09/12 14:33:34.10 FDETfUWp.net
>>97
とにかくswitch文をなくしたいならGetPropertyとGetValue

113:デフォルトの名無しさん
17/09/12 14:57:46.17 vpJikBX5.net
>>109
その遅さが問題になるくらいシビアなパフォーマンスを求められる場合ならね

114:デフォルトの名無しさん
17/09/12 14:58:53.99 DYcGerqT.net
>>110
もしlinq自体を変な書き方と言っているのであれば論外やな

115:デフォルトの名無しさん
17/09/12 15:54:15.87 PKo4ssy2.net
車輪やねん

116:デフォルトの名無しさん
17/09/12 16:11:01.84 BNnArjmm.net
>>111
GetPropertyとGetValueで一行で出来ました!ありがとうございます

117:デフォルトの名無しさん
17/09/12 17:18:31.24 3hDQXbkU.net
>>113
え?
linq流行ってると思ってるの?
いつリストラされてもおかしくない機能

118:デフォルトの名無しさん
17/09/12 17:22:05.97 pxacDdSl.net
絶対構うなよ

119:デフォルトの名無しさん
17/09/12 17:33:49.59 3hDQXbkU.net
>>117
単発に言われてもね

120:デフォルトの名無しさん
17/09/12 17:42:06.71 ZIY9GNtc.net
Linqはいらないけどイテレーターパターンとλ式は要るよね

121:デフォルトの名無しさん
17/09/12 17:44:55.63 3hDQXbkU.net
>>119
俺はいらねぇ
使いたい奴は使えばいい

122:デフォルトの名無しさん
17/09/12 17:47:10.30 ZIY9GNtc.net
そうだね
じゃあこの話題は終わりだね

123:デフォルトの名無しさん
17/09/12 19:25:39.37 DYcGerqT.net
こいつASP.NET Coreのテンプレ見たら発狂しそうだな

124:デフォルトの名無しさん
17/09/12 19:37:32.63 DSJ7r+Sb.net
Linq使わないでどうやってんの?
毎回foreach回してんの?

125:デフォルトの名無しさん
17/09/12 19:52:04.69 3hDQXbkU.net
>>123
まあ、初心者には難しいよね

126:デフォルトの名無しさん
17/09/12 19:57:40.23 ymUUq88t.net
>>123
荒らしはスルー推奨

127:デフォルトの名無しさん
17/09/12 19:59:52.92 3hDQXbkU.net
>>125
単発に言われてもね

128:デフォルトの名無しさん
17/09/12 20:06:00.88 qnTxA+Nu.net
誰だアホの逆鱗に触れたのは
責任もって殺しとけよ

129:デフォルトの名無しさん
17/09/12 21:29:57.85 3hDQXbkU.net
>>127
単発に言われてもね

130:デフォルトの名無しさん
17/09/12 21:36:08.20 3hDQXbkU.net
こういう状況になると必ず単発ばっかりになるよねw
ビビリのくせに発言してんじゃねーよクズがw

131:デフォルトの名無しさん
17/09/12 21:44:26.71 8OQVQBrq.net
さすがにここまで幼稚で恥知らずだと引くね

132:デフォルトの名無しさん
17/09/12 21:45:04.44 JIE9XJ1l.net
for使っている会社のおっちゃんにforeach楽ですよとそれとなく言ったら、遅いしそれに添字使えねえだろと叱られた

133:デフォルトの名無しさん
17/09/12 21:49:02.28 3hDQXbkU.net
>>130
って単発で言うんだ?w

134:デフォルトの名無しさん
17/09/12 23:13:52.09 ZIY9GNtc.net
添え字っていつ使うんだ?

135:デフォルトの名無しさん
17/09/12 23:34:48.50 AR+my0wk.net
さいて~

136:デフォルトの名無しさん
17/09/12 23:50:16.50 gWobfM7L.net
ID:3hDQXbkU(13)

137:デフォルトの名無しさん
17/09/12 23:55:21.70 3hDQXbkU.net
>>135
匿名掲示板でもそんなビビリで大丈夫なのかお前w

138:デフォルトの名無しさん
17/09/13 02:42:40.26 LyfBWgxR.net
C#で使える軽量なWebブラウザコンポーネントを教えてください。
SHDocVwはAxImportしてもレジストリ編集しないとIE7相当でしか動作しないですし、Chromeだとインストールしないといけないので・・・・
exeと同じフォルダにdll置いておくだけで使えるのが欲しいのですが。

139:デフォルトの名無しさん
17/09/13 07:55:13.31 szmZ8wjk.net
>>131
foreachってコレクションのアクセス順序保証してるんだっけ?

140:デフォルトの名無しさん
17/09/13 08:05:28.36 RaLzloEv.net
質問です。よろしくお願いします。
システムカラーを変数で指定するにはどうしたら良いでしょう?
SystemColors defBGC;
defBGC = SystemColors.ActiveCaption;
簡単に言うと↑のような事をやりたいのですが、宣言ではローカル変数として扱われますが、代入でエラーが出てしまいます
どのようにして代入すればよいのでしょうか?

141:デフォルトの名無しさん
17/09/13 08:05:39.55 NbPbWVRY.net
Linqが遅いって言う馬鹿はなんでC#使ってるの?
機械語で直接プログラミングでもしてろw

142:デフォルトの名無しさん
17/09/13 08:20:31.29 efGCb2+a.net
>>140
そんな遅さじゃ無いよね?
下手すると10倍ってレベルだし

143:デフォルトの名無しさん
17/09/13 08:22:40.72 Lhui2ZmI.net
それがシステムのボトルネックになる場合のみ気にしろ

144:デフォルトの名無しさん
17/09/13 08:23:54.63 NbPbWVRY.net
>>141
はあ?

145:デフォルトの名無しさん
17/09/13 08:24:37.37 KoAlYIGF.net
10倍君って前にも暴れてたよーなと思ってログ検索したら100倍だった
IBMがどうとか言ってたから多分別人のバカだ

146:デフォルトの名無しさん
17/09/13 08:29:18.96 efGCb2+a.net
いや、流石にそこまで遅くなる処理わざわざ使う意味ねーし
俺は遠慮させてもらうわ

147:デフォルトの名無しさん
17/09/13 08:32:14.78 efGCb2+a.net
あ、ちょっと気になって
いまもそうなのかなぁと思って前書いたコードでやってみたけど
100倍も有り得る数字出るな
激遅いじゃん
これは普通に使ってると問題出るね

148:デフォルトの名無しさん
17/09/13 08:36:51.86 NbPbWVRY.net
>>145-146
そんなに遅いのが嫌なら別の言語やれよ低脳w

149:デフォルトの名無しさん
17/09/13 08:37:47.60 efGCb2+a.net
>>147
お前の作るものが欠陥品過ぎて気になってないだけ

150:デフォルトの名無しさん
17/09/13 08:40:07.14 NbPbWVRY.net
>>148
どうしてC#使ってるの?ねえ?なんで?w

151:144
17/09/13 08:46:03.62 KoAlYIGF.net
IBMじゃなくてOracleだったわ
統計的結果がどーたらって
もう6年も前の話なんだなあ
いまだにこんなのが湧いてくるくらい、C#ユーザも新陳代謝してるんだな
感慨深い

152:デフォルトの名無しさん
17/09/13 08:51:52.43 2OL+AYLM.net
oracle()

153:デフォルトの名無しさん
17/09/13 09:00:16.82 jUJn8YC2.net
>>149
10倍も遅くならないから
でもlinqは普通に10倍ぐらいは遅いよ

154:デフォルトの名無しさん
17/09/13 09:08:49.90 NbPbWVRY.net
>>152
1ナノ秒が10倍遅いのと1秒が2倍遅いのとでは10倍の方が結果速いって例えは理解できる?
Linqは前者。てーのーくんにはわからないだろうな~w

155:デフォルトの名無しさん
17/09/13 09:10:16.92 NSWcHcOm.net
>>139
SystemColorsの各プロパティが返すのはColor型だよ
システム色だけを代入できる型ってのはSystem.Drawingには存在しない
全部Color構造体で扱われる

156:デフォルトの名無しさん
17/09/13 09:14:16.27 jUJn8YC2.net
>>153
問題は同じ処理だとしてもネックになる箇所で同じ処理でも別の処理書かなきゃいけないじゃん
それも面倒だし
全体に散りばめたときに10倍っていうと流石に問題が起きる遅さだよね
linq禁止のがぶっちゃけ楽だねぇ

157:デフォルトの名無しさん
17/09/13 09:18:11.66 AIHl3Jwd.net
>>150
C#は入りやすいし、色々作りやすいから好きだわ
GUIもちゃと


158:作れるし、Unityでゲームも作れる 今後はxamarinでアプリ開発もできるようになるし やったねC#!



159:デフォルトの名無しさん
17/09/13 09:22:17.18 uHFm/dQd.net
>>155
コード晒せ

160:デフォルトの名無しさん
17/09/13 09:24:03.36 RaLzloEv.net
>>154
ありがとうございます
できました

161:デフォルトの名無しさん
17/09/13 09:26:53.05 NbPbWVRY.net
>>155
え?処理のかき分けが面倒なんだw
Linq禁止する方が面倒なのにな~wてーのーくんは世界の人々がどうしてLinq使ってるか考えたことないの?ねえ?

162:デフォルトの名無しさん
17/09/13 09:50:09.34 jUJn8YC2.net
>>159
だってかき分けの工数見積りに入ってねーし

163:デフォルトの名無しさん
17/09/13 10:04:51.90 a0xLHUjR.net
URLリンク(qiita.com)
LINQが遅いと言われてたので速度比較してみた
結論
LINQは遅いっていうのは、ボトルネックの考え方的に間違いである。
ただし、LINQの一部関数は遅いので改良の余地はありそう。

164:デフォルトの名無しさん
17/09/13 10:07:49.89 MBL3+jC1.net
売国安倍は憲法改正で国民主権と基本的人権
を奪うつもりだ。 ← 民主主義の崩壊
URLリンク(www.data-max.co.jp)
↑ マスコミは 9条しか報道しないが 自民案
の真の恐怖は21条など言論の自由を奪うこと
URLリンク(blog.goo.ne.jp)
↑超危険な緊急事態条項で人権無視の内閣独裁に!
URLリンク(www.youtube.com)
上のビデオで 自民党は 国民に基本的人権
は必要ないと怖いことを平気で主張。
URLリンク(xn--nyqy26a13k.jp)
↑ 都民ファーストも安倍と同じく 憲法改正で 人権
無視の大日本帝国憲法に戻すつもりだから
絶対に投票してはだめだ。 民主主義が崩壊する
URLリンク(blog.goo.ne.jp)
↑ ネトウヨ= 安倍サポーター工作員はネットで国民を騙す。
URLリンク(dot.asahi.com)
URLリンク(blog.goo.ne.jp)
↑ 安倍自民を操るカルト右翼「日本会議」は国民主権否定。
国民投票や選挙では自民党、維新、小池新党に絶対に入れるな。

165:デフォルトの名無しさん
17/09/13 10:20:15.53 NbPbWVRY.net
>>160
はー?そんなんだから底辺なだよ君はw
もっとさぁ勉強してきなさい

166:デフォルトの名無しさん
17/09/13 10:26:50.59 jUJn8YC2.net
>>163
実際二度手間じゃん
わざわざ遅い処理使う意味もよくわかんないし

167:デフォルトの名無しさん
17/09/13 10:28:43.32 uHFm/dQd.net
>>164
コード晒せ

168:デフォルトの名無しさん
17/09/13 10:35:04.05 NbPbWVRY.net
>>164
はあ?二度手間?これだから低脳はw
自分の考えとやってる事が手間になってるという現実にはやく気付こう?ね?

169:デフォルトの名無しさん
17/09/13 10:40:39.80 krw6K623.net
>>166
は?実際二度手間じゃん
使わなければそれに悩むこともないし
しかもこれを使ったからといってそんなに手間が減るわけじゃないよ
でも、10倍遅いんだよ
リスクばっかり高いよね

170:デフォルトの名無しさん
17/09/13 10:45:51.78 +YTT5det.net
>>166
君も自分が確信犯で荒らしてる寂しいバカの共犯にとっくになってることに早く気づけ。
っていうかこんな幼稚なバカ相手にして何が楽しいんだ

171:デフォルトの名無しさん
17/09/13 10:45:59.33 NbPbWVRY.net
>>167
使い分けができない底辺プログラマーですって自己紹介してるようなものだよ?
それとも自分はそうですって認めちゃってるのかな??

172:デフォルトの名無しさん
17/09/13 10:47:58.15 krw6K623.net
>>169
え?どうやって使い分けるの?
見積りに必要なのに見積り時に出てこないじゃん
かき分けの工数が

173:デフォルトの名無しさん
17/09/13 10:50:09.53 9sNAvSM9.net
>>138
これ見る限り大丈夫じゃね
URLリンク(msdn.microsoft.com)(v=vs.71).aspx
>foreach が配列の要素を走査する順序は、次のように定義されます。1 次元配列の場合、要素はインデックス 0 から始まってインデックス Length ? 1 で終わるインデックスの昇順に走査されます。
>多次元配列の場合、要素は、最初に右端の次元のインデックスが増加し、次にその左側の次元のインデックスが増加し、さらにその左側の次元のインデックスが増加する、というように走査されます。

174:デフォルトの名無しさん
17/09/13 10:51:21.99 NbPbWVRY.net
>>170
あ、やっぱり出来ないんだね
その歳で可哀想

175:デフォルトの名無しさん
17/09/13 11:14:56.36 rN6iPy1t.net
やばすぎワロリーヌ

176:デフォルトの名無しさん
17/09/13 11:21:14.85 dr0a1QEl.net
$"{num:D4}"
こういうふうに書式を指定して数字を表示したいときに、この4の部分を変数に変えるのってどうすればいいの?

177:デフォルトの名無しさん
17/09/13 11:46:51.07 szmZ8wjk.net
>>171
なる程、大丈夫そうだね。サンクス

178:デフォルトの名無しさん
17/09/13 11:47:30.22 NSWcHcOm.net
>>174
多分無理
$"{num.ToString("D"+x)}"
みたいにそこだけToStringすれば?

179:デフォルトの名無しさん
17/09/13 11:48:53.98 krw6K623.net
>>172
ん?でどうやるの?
答えられないのに煽りだけは一丁前なの?

180:デフォルトの名無しさん
17/09/13 11:54:11.91 NbPbWVRY.net
>>177
あれあれ?
さっきからてーのーくんの言ってること全部ブーメランしてるよ

181:デフォルトの名無しさん
17/09/13 12:04:54.00 krw6K623.net
>>178
は?どこが?
このままだと負けちゃうからって変なこと言い出すなよw

182:デフォルトの名無しさん
17/09/13 12:08:41.80 +9qu6YUz.net
キチガイにさわんなすな

183:デフォルトの名無しさん
17/09/13 12:08:44.02 NbPbWVRY.net
>>179
負けるとか何言ってるのかな?本当に頭悪いね~w
使い分けができないのを言い訳にしないでまずはちゃんと勉強しなさい

184:デフォルトの名無しさん
17/09/13 12:23:06.88 krw6K623.net
まあ、俺をやっつけたところでlinqがおっそいことは変わらないけどね
お前の作るものって全部ナチュラルに10倍遅いだろ
今時のPCだから大丈夫って?
いやー、俺の使うアプリでは遠慮して欲しいなw
メモ帳とかお前が作ると普通に起動に10倍かかるんだろ?w

185:デフォルトの名無しさん
17/09/13 12:23:18.90 +YTT5det.net
>>175
これ、前にも話題になったけど、
foreachが列挙する順序はコレクションの列挙子の実装に依存するよ。
>>171の記述は配列についてのもの

186:デフォルトの名無しさん
17/09/13 12:28:02.59 NbPbWVRY.net
>>182
Linq使うと起動に10倍も時間かかるんですか~?w
無知を曝け出して恥ずかしくないの?あ、低脳だから気付いてないのかw

187:デフォルトの名無しさん
17/09/13 12:30:29.30 X5nLy4IB.net
private void Form1_Load(object sender, EventArgs e)
とForm1ロード時に実行されるイベントハンドラを
Form1上のボタンが押された時に再度実行したい時に
ボタンクリックのイベントハンドラに
Form1_Lord(null,null);
と書いて呼び出した場合、何かまずいことありますでしょうか?
今のところ、Form1_Load内でthis.はForm1として作動しているようですが、
Form1を明示的に指定したほうが良い気がしますが、
Form1_Lord(null,null);
のnullの部分にどう書くとForm1からの呼び出しという体になりますか?
やりたいことはボタンで追加した配列を再度読み込んでForm1_Lordを動かしたい
いわばForm1のリロードといった感じです
言葉を間違えてるかもしれませんが、よろしくお願いします

188:デフォルトの名無しさん
17/09/13 12:38:12.21 krw6K623.net
>>184
でもお前が作ったもんって普通に遅いと思うよ
どこでもそういう遅い処理書いて全体に散りばめちゃってるとネックになるとこしかみないっしょ?
でもロードとかちょっとしたとこでも処理使い回してるから
いまるところで微妙に遅いっしょw
積もり積もってクソ遅いけど比較対象がないからバレにくいって感じ

189:デフォルトの名無しさん
17/09/13 12:43:04.63 NbPbWVRY.net
>>186
そうやって事実でないことを思い込みで事実だとして今までの人生を生きてきたのかな?
君の頭の中ではLinq使うと起動が10倍遅いんだもんね~
そろそろ現実を見ようよ?

190:デフォルトの名無しさん
17/09/13 12:52:48.02 U2Uyxd+B.net
マジキチの共演か
ただのプロレスか

191:デフォルトの名無しさん
17/09/13 13:04:29.12 xEywpSPi.net
>>185
よくやります。
自分は
Form1_Lord(this,null);
にして、呼ばれ側で e がNULLがどうか見て、自然なイベントか人為的イベントか区別したりしてます。

192:デフォルトの名無しさん
17/09/13 13:16:33.38 +YTT5det.net
>>185
>>189
いや、そういう場合は今Form1_Loadに書いている処理を別の独立したメソッドHogeに移して、
FormのLoad、ButtonのClickそれぞれのイベントからHogeが呼ばれるようにしましょうよ
方法はラムダ式使って
this.Load += (s, e) => Hoge();
Button1.Click += (s, e) => Hoge();
でもいいし、ラムダ式が分からないならデザイナで追加したイベントハンドラから
Hogeを呼んでもい

193:デフォルトの名無しさん
17/09/13 13:30:55.02 PNHj0wS/.net
決まった目的のために作られたイベントハンドラを別の目的に使うのはよくないよ
すでに書いたコードを実行したいだけなら別のメソッドにしたほうがいいというかすべきだよ
VSのリファクタリングが便利
メソッドにしたい部分を選んでおいてメソッドの抽出を行うだけ

194:デフォルトの名無しさん
17/09/13 13:53:58.18 efGCb2+a.net
>>187
いや、普通に遅いだろ

195:デフォルトの名無しさん
17/09/13 14:17:03.48 NbPbWVRY.net
>>192
起動が10倍遅いって本気で思ってるんだ?呆れた

196:デフォルトの名無しさん
17/09/13 14:23:53.02 GgMwIiBh.net
LINQに親を殺されたマン

197:デフォルトの名無しさん
17/09/13 14:35:06.35 X5nLy4IB.net
>>190
>>191
どうもありがとうございます
やはり行儀悪そうですよね。スッキリもしてないし、なんとなくロジカルじゃない。
別メソッドに移してソレを呼び出す方向でいきます
>>189
どうもありがとうございます
「あぁここでリロードかからないから更新されないんだぁ~」と気づいた時に応急処置的に使ったんですが、
「あ、結構ちゃんと動くw」のでこれ良いのかな?ってっ感じでしたが、人為的呼び出しを区別するという使い方もできるんですね
今は勉強中なので、私には裏技的なものはまだ早いですね

198:デフォルトの名無しさん
17/09/13 16:56:12.13 bmJBLYID.net
このスレはラムダ、LINQ、デリゲート禁止なんで

199:デフォルトの名無しさん
17/09/13 16:57:28.21 szmZ8wjk.net
あとvarもな

200:デフォルトの名無しさん
17/09/13 16:59:44.77 Lhui2ZmI.net
varは宗教戦争
ラムダとlinqは新しい物に適応出来ない老害が喚いてるだけ

201:デフォルトの名無しさん
17/09/13 17:02:03.09 efGCb2+a.net
>>198
えーあの遅さを老害で片付けるってなくね?
10倍だぜ10倍

202:デフォルトの名無しさん
17/09/13 17:04:29.26 NbPbWVRY.net
頭の遅れも10倍のてーのーくんにはLinqが理解できないらしい

203:デフォルトの名無しさん
17/09/13 17:06:30.00 cy/tvTzl.net
することないからと言って初心者の質問スレで雑談するな。他行けよ

204:デフォルトの名無しさん
2017/09/1


205:3(水) 17:08:01.04 ID:efGCb2+a.net



206:デフォルトの名無しさん
17/09/13 17:14:08.58 NbPbWVRY.net
Linq使うと起動が10倍遅くなると言う奴が言っちゃうんだ?

207:デフォルトの名無しさん
17/09/13 17:16:44.60 +9qu6YUz.net
だからお前らキチガイにさわんなって

208:195
17/09/13 17:53:06.84 X5nLy4IB.net
>>191
うぉおお
リファクタリングスゴイ!
VSの機能もっとよく勉強しよう…

209:デフォルトの名無しさん
17/09/13 18:08:41.03 e8EuhLKE.net
DataGridViewのCellを複数行の文字列を表示するComboBoxにしようとしてるんですが
DataTableにComboBoxの列を挿入して
そのDataTableをViewのDataSourceとして使おうと思ってます
ここで困っているのですが、DataTableのComboBoxの列のDataTypeって
System.Stringでいいんでしょうか??
複数行の文字列をList<string>でまとめて渡そうとしてるんですが
「実行時にDataGridViewComboBoxCellの値が有効ではありません」エラーが出ます
DataTypeがListではなくstringなので当たり前の話のようにも思えますが
DataTypeで使えそうなのは他にSystem.Objectくらいで、これもエラーになります

210:デフォルトの名無しさん
17/09/13 20:38:23.16 DuSqV2km.net
とりあえずDataTableにはComboBoxは入れない
もうなんというか全体によく分からん
そもそもComboBoxは表示じゃなくて選択のためのコントロールだと思うんだけど
ひょっとして単に数行にわたるデータをドロップダウンで表示したいってこと?

211:デフォルトの名無しさん
17/09/13 20:42:22.41 bd/NJHl4.net
逆にDataTableにcomboboxで出力して型を確かめればいいんじゃないの
通常のcomboboxもObject.CollectionでList<string>は直に入れられない

212:デフォルトの名無しさん
17/09/13 20:45:55.39 e8EuhLKE.net
>>207
そうそうそんな感じです

213:デフォルトの名無しさん
17/09/13 20:48:04.62 e8EuhLKE.net
ComboBoxで複数選択肢を見せて
ユーザがドロップメニューから必要な選択肢を選んだときに
イベントハンドラでそれに対応する値を拾って・・・みたいな感じです

214:デフォルトの名無しさん
17/09/13 21:15:35.44 Kb3sPxGP.net
Unityで以下のコードの[Dependency("Cat")]を
[Dependency("Dog")]や[Dependency("Fox")]のように
文字列の部分を動的に書き換えたいのですが
そのような事は可能でしょうか?
よろしくお願いします
public class Person
{
[Dependency("Cat")] //ここを動的に"Dog"や"Fox"に書き換えたいです
public IAnimal Pet { get; set; }
public void CallPet()
{
Pet.Cry();
}
}

215:デフォルトの名無しさん
17/09/13 22:13:13.17 DuSqV2km.net
>>210
もうちょっとシナリオを詳しく

216:デフォルトの名無しさん
17/09/13 22:18:36.37 DuSqV2km.net
>>211
URLリンク(tnakamura.hatenablog.com)
このページ?
> 今回はコードで依存性を注入しました。
> 属性を使った方法では、クラスを切り替えるにはコードを修正して
> リビルドする必要があるので、使う場面は少ないでしょう。
> 次は構成ファイルを使って依存性を注入する予定。

217:デフォルトの名無しさん
17/09/13 22:41:09.81 n1InxPaY.net
>>211
アノテーションやめてResolveするときにクラス名渡すようにすればいい
Resolve<T>(String)やBuildUp<T>(T, String)の
Stringのところにマッピング登録時に指定した名前を渡す

218:デフォルトの名無しさん
17/09/13 23:01:12.47 bDhlqYix.net
実装の動的切り替えが必要ということはそれはDIパターンでやるべきじゃないってことだよ
せっかく依存性を断ち切った筈なのに選り好みしちゃダメでしょ
設計を間違えてるんだよ
こういう場合は素直にFactoryパターンを使う
FactoryそのものはDIすればOK

219:デフォルトの名無しさん
17/09/13 23:54:41.00 eqWbXMWw.net
datagridviewに、エクセルのデータバーみたいなの表示させたいんですが、できますか?

220:デフォルトの名無しさん
17/09/14 07:17:51.37 33e4FbzQ.net
>>213
そうです
そのページを見た時に、文字列の部分をXMLファイルに書けば呼ぶクラスを外部のファイルに書けると思ったんです
続きがある事に気付かなかったので合わせて読もうと思います
ありがとうございます

221:デフォルトの名無しさん
17/09/14 14:49:16.54 pAH1a2kb.net
class hoge
{
public int a;
public void func(){++a;}
}
delegate void func();
var h = new hoge();
func f = h.func;
h = null;
f();
この場合f()は正常に実行されますか
hをnullにしただけではGCでお掃除されないのですか

222:デフォルトの名無しさん
17/09/14 15:10:34.66 QdQxHVhn.net
コンソールへの表示についての質問です。
BackgroundColorなどを変更して文字の色を変えるのではなく、文字列自体に色をつけることはできないのでしょうか?
string str = MyColor.Red + "Red";
Console.WriteLine(str);
// 赤色で、Redと表示されるようにしたい

223:デフォルトの名無しさん
17/09/14 15:21:48.41 srSq6PT2.net
>>219
URLリンク(msdn.microsoft.com)
ここに書かれていることしかできない

224:デフォルトの名無しさん
17/09/14 15:33:35.47 FSouChj9.net
一旦現在の前景色を退避して、前景色を指定した色に変更、文字列出力、もとの前景色に戻す
っていう関数を自分でつくればいい
前景色は
Console.ForegroundColor = ConsoleColor.Red
のようにして変えられる

225:デフォルトの名無しさん
17/09/14 15:46:46.92 4pNC6iaA.net
>>218
デリゲート変数がインスタンスhのインスタンスメソッドへのデリゲートを握ってる間は、
間接的にhへの参照を持ってるのと同じことになるみたいよ。
もちろんデリゲート変数じゃなくてイベントでも同じ。
だからこれがリークの原因になることがある。
ググってみたけどMSDNだとここにちょろっと説明があるぐらいだなあ
URLリンク(docs.microsoft.com)

226:デフォルトの名無しさん
17/09/14 16:38:29.22 XVFgKdZv.net
>>218
class Hogeにファイナライザ実装して
h=nullの後にGC.Collect()呼べば自分で確かめられるよ

227:デフォルトの名無しさん
17/09/14 17:43:05.75 QdQxHVhn.net
>>220 >>221
ありがとうございます。

228:デフォルトの名無しさん
17/09/15 00:42:42.05 Ay+AWdB+.net
配列に要素を追加するべく、検索で調べて、色々やってても希望の作動にならず、散々悩んでたのですが
参考にしたページの
>配列に要素を1つ追加した新しい配列を取得したい場合のメモ。
>
>配列でやる。
>
>int[] array = { 0, 1, 2 };
>int[] result = new int[array.Length + 1];
>result[array.Length] = 3;
>
これで最後にarray = result;
入れてもきませんよね?
初心者の私が文句言うわけじゃないですが、半日悩んでしまった
追加した分しか表示されないぃ~とw

229:デフォルトの名無しさん
17/09/15 02:16:45.02 kDBNGlTT.net
result[array.Length] = 3の前か後ろにArray.Copy当たりが抜けているんだろうが
配列1 = 配列2
みたいな代入はまずやらない

230:デフォルトの名無しさん
17/09/15 04:20:57.10 Ay+AWdB+.net
そゆことでした
他のページ見て気づきました
このコードで行くと
int[] array = { 0, 1, 2 };
int[] result = new int[array.Length + 1];
array.CopyTo(result,0);
result[array.Length] = 3;
で行けたのでした
で今気づいたのですが、実装はstring[]だったんですが
要素数が違うもので代入しても大丈夫…なんですよね?
エラーも出ないし
arrayが全くresultと要素数含めておなじになると

231:デフォルトの名無しさん
17/09/15 04:39:07.14 pokoDkL3.net
質問内容と変わっちゃうけど、動的に配列使うなら、Listを使った方がいいような
Arrayにしないといけないなら、そのときだけToArray使えばいいし

232:デフォルトの名無しさん
17/09/15 08:11:43.44 eL7tpeWb.net
でもLinqまで使うと起動が10倍遅い君が暴れだすから気をつけろ

233:デフォルトの名無しさん
17/09/15 08:21:21.03 8bT15OBL.net
起動時間が気になるならUWP使えばいいのにな
ライブラリをスタティックリンクで、使わないクラスは実行ファイルから取り除かれる
だから笑っちまうほど起動は高速だ

234:デフォルトの名無しさん
17/09/15 11:32:01.43 E70gGXQb.net
そういえば前スレでもLINQが遅い遅い言ってるのいたけど同じ奴かな
Stack OverFlowの中の人が遅いからusing System.Linqを根こそぎ消したとか言ってたけど、
その情報のソース聞いても教えてくれなかった

235:デフォルトの名無しさん
17/09/15 11:58:09.79 U5HKHjh0.net
>>231
そんな細かい情報知らないよ
俺は自分が試したことしか言わない系

236:デフォルトの名無しさん
17/09/15 12:03:46.69 U5HKHjh0.net
しかも英語読めないのでソースに英語サイト紹介されても無視するのでよろ

237:デフォルトの名無しさん
17/09/15 12:13:29.77 Y21IVLhl.net
根こそぎ消したのはEFだろ
あれもいちおLinqな

238:デフォルトの名無しさん
17/09/15 12:16:10.74 2JmbV9iR.net
>>227
まず参照型がどういうものか理解した方がいいね。
配列は参照型。
参照型の変数に入っている値はオブジェクトの参照(とりあえずオブジェクトのメモリー上の位置を表す値だと思えばいい)
であってオブジェクトそのものではない。
array = result;
だからこれは、変数resultの中に入ってる「配列への参照(位置情報)」をarrayにコピーしてるだけ。
webで言えばarrayやresulに入ってる値はただのURIであってドキュメントやファイルそのものではない。
URLリンク(msdn.microsoft.com)

239:デフォルトの名無しさん
17/09/15 12:21:40.65 eL7tpeWb.net
Linq使うとプログラムの起動が10倍遅いソースはまだ?

240:デフォルトの名無しさん
17/09/15 13:11:40.52 U5HKHjh0.net
>>236
自分で測ってみれば?
テストプログラムじゃなくて会社で納品するようなプログラムでやってみるのオススメ

241:デフォルトの名無しさん
17/09/15 13:29:37.48 eL7tpeWb.net
>>237
測ってみても起動に10倍も遅くならないからソース出せよ

242:デフォルトの名無しさん
17/09/15 13:36:18.08 48fogf69.net
>>235
stringも参照型なので、そこだけだとその人はともかく変に勘違いする初心者もいるかもしれない
URLリンク(okwakatta.net)
このサイトが分かりやすいと思った
>>228
var array = new List<string>(new string[] { "0", "1", "2" });
array.Add("3");//要素の追加
string[] result = array.ToArray();//string[] に変換
こんな感じだよな
参照型に同じ型代入するのはだめじゃないけどなんか気持ち悪い

243:デフォルトの名無しさん
17/09/15 13:38:43.47 DZnU5fjo.net
>>238
マジで
10倍が控えめに見えるぐらいの数字出るけど?

244:デフォルトの名無しさん
17/09/15 13:46:22.35 eL7tpeWb.net
>>240
その根拠を見せてみろ
ん?どうした?はやくしろよ

245:デフォルトの名無しさん
17/09/15 14:04:27.63 DZnU5fjo.net
>>241
いいよ別にw
お前が納得したってしなくたってw
俺の人生にはなんの肥やしにもならない
ただ、お前の作るプログラムはナチュラルに遅いw

246:デフォルトの名無しさん
17/09/15 14:06:57.75 eL7tpeWb.net
>>242
はい逃げた

247:デフォルトの名無しさん
17/09/15 14:09:01.17 DZnU5fjo.net
>>243
ハイハイw
逃げるw逃げるw

248:デフォルトの名無しさん
17/09/15 14:17:25.98 eL7tpeWb.net
>>244
プログラムの起動が10倍遅いって嘘を喚いても誰も信じてないんだよ?可哀想

249:デフォルトの名無しさん
17/09/15 14:34:30.37 DZnU5fjo.net
>>245
いや、�


250:ィ前の作るものは遅いだろ



251:デフォルトの名無しさん
17/09/15 14:46:47.67 eL7tpeWb.net
>>246
いや全然?
起動が10倍遅いとか言っちゃう頭悪い底辺の方が遅いよ。みんなそう思ってる

252:デフォルトの名無しさん
17/09/15 14:49:09.47 DZnU5fjo.net
>>247
じゃあ、ここまで食い下がることないじゃん
満足しとけよw
俺は使わないけどねw

253:デフォルトの名無しさん
17/09/15 14:49:55.78 eL7tpeWb.net
>>248
頭悪い底辺プログラマーを助けてあげたいんだよ?だからまず自分が間違ってるってことに気付こうね

254:デフォルトの名無しさん
17/09/15 14:58:01.14 DZnU5fjo.net
>>249
そんなのどっちでもいいよw
linq使って速くなることはないんだし

255:デフォルトの名無しさん
17/09/15 15:02:22.39 eL7tpeWb.net
>>250
あー自分の誤ちを認められないパーソナル障害なんだろうな
そうじゃないと起動が10倍遅くなるなんて言えないもんね

256:デフォルトの名無しさん
17/09/15 15:03:30.41 DZnU5fjo.net
>>251
だからいいよそれでw
linqは遅いから使わないけどね

257:デフォルトの名無しさん
17/09/15 15:05:20.69 eL7tpeWb.net
>>252
まーだLinqについて理解できないのか
Linq使うと起動が10倍遅いから使わないって本当に底辺だからもう二度と言わない方がいいよ

258:デフォルトの名無しさん
17/09/15 15:09:54.13 3/LXnd4x.net
もう夏休みって終わったんじゃねえの・・・?

259:デフォルトの名無しさん
17/09/15 15:17:40.95 DZnU5fjo.net
>>253
そうやって言論弾圧をするのはなんか意味あるの?
まあ、linqは遅いから使わないけどね

260:デフォルトの名無しさん
17/09/15 15:20:27.93 eL7tpeWb.net
>>255
どうしてLinq使うと起動が10倍遅いって信じてるの?
根拠まだ?

261:デフォルトの名無しさん
17/09/15 15:35:48.45 axyMTLT4.net
とんでもない低スペックパソコン使ったら10倍遅くなるんじゃねーの(笑)

262:デフォルトの名無しさん
17/09/15 16:01:37.67 2773lCIl.net
>>231
Nick Craverのtweetやで

263:あ
17/09/15 18:56:08.86 Or0Hv36R.net
linq使って重いって言う奴は、explain一度もせずSQL書いて重いって言う奴ときれいにカブる。

264:デフォルトの名無しさん
17/09/15 18:59:10.29 nPRjnf/b.net
またやってる
ワッチョイ有りでも無しでもヒマな基地外には関係ないのか

265:デフォルトの名無しさん
17/09/15 19:26:35.57 9COQlrBX.net
>>260
ワッチョイ無いから一人で自演しているんじゃないの?
まあ付けてもスマホと自宅だからバレないと思うけどさ

266:デフォルトの名無しさん
17/09/15 20:05:35.57 uW7EI8ic.net
結局2chでは幼稚で恥知らずな奴が最強で絶対に「勝つ」ことになってる。
北朝鮮と同じだ。
恥も自尊心も持たない奴には物理的な暴力以外何も抑止力にならないからね

267:デフォルトの名無しさん
17/09/15 20:43:53.62 JbFuM7sY.net
2chに勝ち負けなんてあるの?

268:デフォルトの名無しさん
17/09/15 20:45:16.31 OqF1Hiig.net
ここでバカ晒している俺らが負け組
ROMって知識蓄えている人たちが勝ち組

269:227
17/09/15 21:36:21.07 Ay+AWdB+.net
>>235さん>>239さん
どうもありがとうございます
配列によって、動的にボタンを追加する方法を勉強するtestプロジェクトで、ボタン追加方法のテストだったんで
配列は適当でいいやとstring[]でやってたんですが、後々、配列に追加したら…とか色々実験していく内に
「あ…List<string>でやっときゃよかった…とは思ってみたものの、string[]ベースでいろいろな処理書いちゃったんで、
後に引けずにパッチ当ててるみたいなみっともないことになってしまいました
List<string>ならadd~で簡単に追加できてたんでちょっと戸惑ってしまいました
参照型というものの性質がなんとなくわかりました

別の質問を
フォームデザイナーでContextMenuStrip(cms1)を作って
Form1_Loadの中にcms1.Show();
を書いても表示されないのに
Form1のクリックイベントでForm1_Loadを呼び出すとcms1が表示されるのはどうしてでしょう?

270:デフォルトの名無しさん
17/09/15 21:43:39.81 2gj3jaOv.net
>>262
5年10年粘着を続けられる奴には負けるだろ

271:デフォルトの名無しさん
17/09/15 21:46:05.55 Z/MvErxh.net
10年2ちゃんに粘着とかまるでネトウヨみたいなやつだな

272:デフォルトの名無しさん
17/09/15 22:00:17.38 OqF1Hiig.net
>>265
Loadはフォームの表示前(this.Shownの前)だからコントロールが表示されない
フォームの表示後に呼び出したいものはShownのイベントメソッド内に書く

273:デフォルトの名無しさん
17/09/15 23:55:27.93 Ay+AWdB+.net
>>268
ありがとうございます
できました

274:デフォルトの名無しさん
17/09/16 09:20:56.65 z+cPNeEM.net
Linqで起動10倍遅い君はみんなから無視されてるにも気付かず調子こいて嘘ついてたから
これからはちゃんと指摘してあげる

275:デフォルトの名無しさん
17/09/16 09:23:02.03 S4dTswZ/.net
ただの鎌ってちゃんなので、無視して普通にlinqの話をするのが吉

276:デフォルトの名無しさん
17/09/16 09:45:23.81 S/6lhX5d.net
そんなに俺のリサイタルが聞きたいのか?
linqを使う奴は遅いかもしれないからコアな処理では使わないでねってゴミクラスを量産する
○○ファイルの読み込み?たしか□さんのところでやってたよね?
しかし、残念なことにそのクラスはlinqが使われていたのです
   おっそwwww

277:デフォルトの名無しさん
17/09/16 09:55:29.87 z+cPNeEM.net
つまんね

278:デフォルトの名無しさん
17/09/16 17:14:50.61 onYOCQSE.net
俺もstring遅いから全部byteで処理してる
StringBuilderも遅すぎる

279:デフォルトの名無しさん
17/09/16 17:18:29.80 NmFgsGO2.net
>>274
C++ を検討することを勧める

って言いたいけどこんなことを言い出す奴に技術力のあったためしはないから好きにしろ

280:デフォルトの名無しさん
17/09/16 17:26:44.23 ONgAFYB5.net
Cそのレベルで高速化したいならC++だろw

281:デフォルトの名無しさん
17/09/16 19:25:48.53 W42Z2QXo.net
Cそのレベルって何

282:デフォルトの名無しさん
17/09/16 19:27:34.42 YNlal7Li.net
プログラミング未経験の人向けのC#入門書を探してるんだが、お勧めの本があれば教えて頂きたい

283:デフォルトの名無しさん
17/09/16 19:31:37.12 QE5Dhgdp.net
独習C♯
猫でもわかるC♯
本屋で適当にプログラム本捲って自分が読める感じの探すのがいいけど

284:デフォルトの名無しさん
17/09/16 19:40:33.90 3905ntF4.net
C#の絵本
概念掴むのにはコレは分かりやすいよ

285:デフォルトの名無しさん
17/09/16 19:46:57.37 QE5Dhgdp.net
>>280
俺もこれ持ってるわ
読みやすいから導入としてはこれも良い

286:デフォルトの名無しさん
17/09/16 19:51:03.57 QOgyryHO.net
絵本シリーズか、悪くない

287:デフォルトの名無しさん
17/09/16 20:04:58.39 YNlal7Li.net
C#の絵本買ってみようかな
来月中旬に出る第2版を読んで良かったら買うよ

288:デフォルトの名無しさん
17/09/16 20:23:42.33 5Re80ay8.net
回り道に思っても一度Cを勉強した方が結局早いような気もするけど、どうかね。
構造化プログラミングやポインタの理解を経由せずに
いきなりC#で概念の洪水に晒されてちゃんと消化できるのか。

289:デフォルトの名無しさん
17/09/16 20:26:47.21 W42Z2QXo.net
ぜひ実験して教えてくれよ
思うレベルのご意見は要らねえからよ

290:デフォルトの名無しさん
17/09/16 20:27:49.29 ikTXova5.net
Cの余計な知識なんていらないでしょ

291:デフォルトの名無しさん
17/09/16 20:44:59.49 3905ntF4.net
C#をやってみようって決意したんだろうからそれを踏まえて指南すれば良いのでは?
デリゲート使う時に壁を感じたらそれはその時考えれば良い事で、その時だったら今よりはCに浮気するハードルは高くないはずだと思う

292:デフォルトの名無しさん
17/09/16 20:45:44.36 Zk6Irz58.net
んー、もちろんいらないといえばいらないんだけどね
C#あたりの今時のプログラミング言語になってくると、できることが多すぎるから
プログラミングまったく初めての人は、Cなどの昔ながらの言語で初歩を勉強してから
入門したほうが挫折のリスクは少ないし、それからのほうがC#の理解も容易だろうとは思う
で、もしポインタでつまづくようなら、全然むいてないってことだしw

293:デフォルトの名無しさん
17/09/16 20:48:46.79 hF16Uo8A.net
物理的なメモリレイアウトが見えてるほうがイメージしやすくて逆に簡単という意見もある
標準ライブラリも貧弱だから覚えること少ないし
TMPの誘惑に取り憑かれなければ回り道というほどでもないだろう

294:デフォルトの名無しさん
17/09/16 20:49:57.29 ikQV5H4G.net
プログラミング初心者でC#やりたいならCの構造化は邪魔になるだけだと思うけどなぁ

295:デフォルトの名無しさん
17/09/16 20:54:04.12 SMlIDWsJ.net
Cから入ると変な癖がつくからお勧めしないな
C自体がダメというわけじゃないがコーディングスタイルが古い
モダンな言語への移行を前提として古臭い書き方を廃した入門書があればいいけど

296:デフォルトの名無しさん
17/09/16 21:03:11.30 5Re80ay8.net
>>290
構造化プログラミングの理解はC#であろうが必須事項ww
>>291
別にCを極める必要はないよ。
Cの方が覚えることが少ない分恐らくクイックスタートが切れるだろう、ということ
Cでも「stdioって何?」みたいな最初は「おまじない」としてやり過ごすしかない部分はあるけど、
C#だと桁違いにそれが増える

297:デフォルトの名無しさん
17/09/16 21:07:37.57 QE5Dhgdp.net
CやC♯から入らずにphpから入ったわ・・・

298:デフォルトの名無しさん
17/09/16 21:18:53.41 5uPi2u+e.net
>>292
C#だって、ラムダ式より前の基本的な文法だけなら、覚えることそんなに多くないだろ。

299:デフォルトの名無しさん
17/09/16 21:20:26.04 S4dTswZ/.net
出来る事が最初から多過ぎる、てのは解る気がするわ
C#でも、GUIをしばらくお預けにしてCUIから教える分には
そんな複雑でも無いとは思うけどね

300:デフォルトの名無しさん
17/09/16 21:22:07.89 5GJ5fljb.net
C#で構造化プログラミングを学べないわけもないだろう。

301:デフォルトの名無しさん
17/09/16 21:25:05.16 gxsdxxSU.net
ハードに近い所で仕事したいならともかく
本当に回り道にしかならん

302:デフォルトの名無しさん
17/09/16 21:25:11.68 Pzxpwiqj.net
「猫でもわかるC#~」は初心者には絶対に勧めない
自分がC#を勉強しようとして最初に読んでえらく悶絶したので
もし書名が「ざっくり覚えるC#文法」とかだったら納得もできる
猫や初心者にわかるように丁寧に説明している本ではない
他のプログラミング言語を知っている人が、さっとC#の文法を理解するにはたぶん良いのだろう
例えば、版によるかもしれないがこの本には「文字列はダブルクォーテーションで囲む」
ということがどこにも書かれていなかった
なのになぜか「char型はシングルクォートで囲む」という説明はある
要するに、文字列をダブルクォートで囲むという「常識」を知らないような初心者目線では書かれていない
そういうのが他にも多数ある
書名の付け方を間違えたのか、作者に初心者を慮る能力が欠けているのかはわからないが
初心者向け参考書なのに読んでもわからずググってやっと理解する、という繰り返しになるので
超初心者は他の本を買った方がよい

303:デフォルトの名無しさん
17/09/16 21:45:24.46 YNlal7Li.net
絵本シリーズが一番いいんかな

304:デフォルトの名無しさん
17/09/16 21:52:40.76 ikQV5H4G.net
>>292
もちろん理解しないといけないのは当然だけど、普通にプログラミングを重ねれば自然とそうなるでしょ
初心者で下手ゆ構造化プログラミングに慣れてしまうとオブジェクト指向の考え方が理解しづらくなるかなと思って
書籍は個人的に「実戦で役立つ C#プログラミングのイディオム/定石&パターン」がおすすめ出来るかな

305:デフォルトの名無しさん
17/09/16 22:00:36.81 S4dTswZ/.net
まず、「構造化プログラミング」と聞いて何を連想するかが人によってかなり異なるので
もっと別の言葉に置き換えた方が良いぞ
その上で、「プログラミングその物の入門に」という話なので
ンな手癖が付くほどがっつり深くやれって話でなく、触り程度に概念を理解するくらいで終わる話じゃないの

306:デフォルトの名無しさん
17/09/16 22:05:19.42 Zk6Irz58.net
>>300
とゆーか、オブジェクト指向自体が今時のプログラミング言語で初心者を挫折させる
元凶のひとつだからなw
オブジェクト指向がすんなり理解できるような人だったら、いきなりC#からで別段
問題ないし、よくわからないうちはとりあえずはわかったふりで無理して使わなくて
いーよと適切なアドバイスできる人が近くにいるなら心配ないんだけど

307:デフォルトの名無しさん
17/09/16 22:13:07.82 QE5Dhgdp.net
>>300
今読んでるけどおすすめだと思う
ただ未経験からいきなりそれ読んでも分からなそうな感じ
独習C♯で写経して、イディオムでパターン覚える感じというか、俺がそんな感じで進めてるところ

308:デフォルトの名無しさん
17/09/16 22:19:26.45 fBWSyi5J.net
俺が最初に読んだプログラミング本ってK&Rだったけど、アレはいい本だったな

309:デフォルトの名無しさん
17/09/16 22:19:46.48 ja70x9oy.net
スッキリわかる Java入門 第2版、2014
本当の初心者は、スッキリから行かないと、
オブジェクト指向が理解できない

310:デフォルトの名無しさん
17/09/16 22:37:39.28 ajkFqLJv.net
VS2017でC#勉強中です
ソースエディタでクラスやメソッドは折りたためますが、この折りたためる要素のソース内での表記の順番を入れ替えたいのですが、
動かす部分を全行選択して切り取ってペーストする以外に方法はないでしょうか?
気の利くエディタなので、この程度の事は一発でできそうな気もするのですが…

311:デフォルトの名無しさん
17/09/16 22:47:31.05 I8TGF8JO.net
>>306
折りたたんで切り取れば一行で済むのにそんなのいるか?

312:デフォルトの名無しさん
17/09/16 22:55:08.96 ajkFqLJv.net
ありがとうございます
折りたたんだ状態で全部を切り取れるんですね
気づかなかったです
更に
折りたたんで選択しとけばドラッグも出来ました

313:デフォルトの名無しさん
17/09/16 22:59:15.21 +xkFVGQp.net
Wordもいつからかそれが出来るようになって便利になったなーと思った

314:デフォルトの名無しさん
17/09/17 02:13:43.86 sWVhSEDv.net
ジェネリックなインターフェースってどうなんですか?できることはわかっているのですがどういうメリットデメリットがありますか?
string型もしくはUri型を引数にしてWebスクレイピングを行うメソッドなのですが、返り値はList<>で返したり、データクラスで返したりしたいのですがインターフェース化するとどういうメリットがありますか?

315:デフォルトの名無しさん
17/09/17 03:14:43.81 laU7wNws.net
そんな奇形メソッドに使ってもメリットはねーだろ

316:デフォルトの名無しさん
17/09/17 06:00:39.78 CHXibXnz.net
その要件でインターフェイスを使うこと自体には意味がある。けどそれがジェネリックなものである必要性はない。

317:デフォルトの名無しさん
17/09/17 09:28:39.99 rBV8stJp.net
>>306
行を選択(複数行可)して Alt + カーソル で移動、という方法もある
Shift + カーソルで行選択すればキーボードから手を離さず操作できる

318:デフォルトの名無しさん
17/09/17 10:01:53.64 TKU7D


319:vDW.net



320:デフォルトの名無しさん
17/09/17 13:08:39.84 KkY0e3DN.net
C#でWindowsフォームアプリケーションじゃないものを(VC++でいうSDI)を作る場合って
Visual Studioでどのテンプレートを選択すべきなんでしょうか?
VC++はMFCのSDIテンプレートなんかあってとっかかりやすかったんですが、
C#はWindowsフォームアプリケーションかWPFぐらいしか
すぐに使えそうなテンプレートが見当たらなくて。。。

321:デフォルトの名無しさん
17/09/17 13:20:54.70 bn1LOyuD.net
>>315
wpfならURLリンク(github.com)を使ってみるのも良いかもしれん

322:デフォルトの名無しさん
17/09/17 14:02:47.82 FKLlCzPO.net
>>315
VC++はフォームの作り方に難があるから目的別テンプレートが必要なので当って
winformsやWPFは自由にデザインしやすいから別に出来合いのテンプレートが必要ないと思う

323:デフォルトの名無しさん
17/09/17 16:57:27.84 KkY0e3DN.net
>>316,317
WPFとWindowsFormsというフレームワーク?を使わずにその他の「何か」を想像していたんですが、
そもそもその考えが間違っているようですね。出直してきます。

324:デフォルトの名無しさん
17/09/17 17:25:07.29 sWVhSEDv.net
>>312
やっぱりインターフェースだとジェネリックメソッドは意味はないのでしょうか?
>>314
設計が悪いのか返り値がIList<>オンリーじゃないですね

325:デフォルトの名無しさん
17/09/17 17:42:10.34 CHXibXnz.net
>>319
なぜ意味があると思った?

326:デフォルトの名無しさん
17/09/17 18:08:20.43 MRaZ3EJn.net
>>319
特定のコードじゃなく一般論の話をしてるなら、ちょっと短絡的過ぎない?w
IEnumerable<T>.Castなんかジェネリックだし、場合によっては使い道あるんじゃないの?
それと、前スレでもちょっと出てた話だけど、
個人的には必要もないのにインターフェイスかぶせても
生産性と可読性が下がるだけで何もメリットないと思うよむしろ

327:デフォルトの名無しさん
17/09/17 22:38:37.23 AtDn9PVi.net
Visual Studio 2017 Community
エディタ上の変数の色を変えるにはどうしたら良いのでしょうか?
URLリンク(qiita.com)
C++では↑のような方法でできるようなのですが

328:デフォルトの名無しさん
17/09/17 22:47:20.64 MRaZ3EJn.net
>>322
オプションの画面に検索機能がついてるんだからそれらしいワード入れれば見つかるでしょ
とりあえず「フィールド」でやってみたら?

329:デフォルトの名無しさん
17/09/17 23:17:30.87 AtDn9PVi.net
すみません見つからないんです
例えば『フィールド』で検索しても出てくるのはC#→コードスタイル→前半の中のものだけ
『フォント及び色』→にはC++用のいろいろな設定はあるんですが、C#の変数の表示を変えるようなものがどれかわからないんです
それっぽいな?というものを変更しても変わらず
変えられたのは行番号とコメントの色だけ
変えられないってことありますか?
ネット検索してもC++の例はあってもC#での例が見つからない

330:デフォルトの名無しさん
17/09/18 00:41:29.71 EYlFP7gd.net
>>324
VSはC#のために作られてるので()
c#の○○という表記じゃないだけ
下のほうにキーワードとか文字列とかいろいろあるでしょ
そのうちのどれかですとしか言いようがない

331:デフォルトの名無しさん
17/09/18 00:47:59.35 EYlFP7gd.net
あ、わかった
識別子だ
変数だけは無理だな

332:デフォルトの名無しさん
17/09/18 00:49:52.49 EYlFP7gd.net
眠い中探した俺を誉めろ

333:デフォルトの名無しさん
17/09/18 02:20:01.85 ozgak7


334:o7.net



335:デフォルトの名無しさん
17/09/18 05:39:51.27 8KP9vlA9.net
>>327
眠い中どうもありがとうございます
雷鳴ってPC落としてたら…
やはり他の部分も変わってしまいますね
変数だけ色分けできたら使いやすいのに…

336:デフォルトの名無しさん
17/09/18 06:00:31.65 Yvok/w5K.net
クラスでListや配列を扱う勉強してます
以下はテキストボックスを使ってListをどう扱えば良いのかを考えている実験用ソースです
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
string hyouji;
TextBox textbox01 = new TextBox();
this.Controls.Add(textbox01);
hyouji = Test01();
textbox01.Text = hyouji;
}
private string Test01()//テスト用オブジェ作成メソッド
{
List<string> testList = new List<string> { "a", "b" ,"あ","ん"};
Testclass jikken;
jikken = new Testclass();
jikken.youso = testList;
return jikken.test();
}
}

337:デフォルトの名無しさん
17/09/18 06:00:51.39 Yvok/w5K.net
public class Testclass//クラスと配列のテスト用
{
public List<string> youso = new List<string>();
string modori;
public string test()
{
modori = string.Join(",", youso);
modori = modori + "-" + modori;
return modori;
}
};
class Testclassの中のtestメソッドで文字列に変換したものを
stringの戻り値を多段経由してテキストボックスに表示しています
クラス跨いでのControlの扱いが分かってないのですが、
のソースで戻り値を経由せず、Testclassのtestメソッドからtextbox01.textに直接書き込むにはどうしたら良いでしょうか?

338:デフォルトの名無しさん
17/09/18 06:02:16.29 Yvok/w5K.net
色々余計なことや面倒くさい宣言、ダサいことしてたりしますが、試行錯誤の名残なのでご容赦ください

339:デフォルトの名無しさん
17/09/18 06:12:51.82 Yvok/w5K.net
URLリンク(ideone.com)
すみません コード貼る…の使い方が分かってなかったです
コード貼っときました

340:デフォルトの名無しさん
17/09/18 08:33:57.39 7QJzTfH9.net
どっちかというと外に追い出すべきは
textBox.Textへの書き込みでは無くて
Test01メソッドの方

341:デフォルトの名無しさん
17/09/18 10:54:18.79 g7YoyWj5.net
WebBrowserのNavigating、Navigated、DocumentCompleteイベントがわかりません
ログ見てるとNavigatingが一度しか呼ばれていないのにNavigatedが2回呼ばれてDocumentCompleteが呼ばれる
自分の頭の中ではNavigating→Navigated→DocumentCompleteの順番だと思っているのですが違うのでしょうか?
参考になるページありましたらご教示お願いします

342:デフォルトの名無しさん
17/09/18 21:27:10.73 HjSStS87.net
初歩的かもですが、下記例の書き方で、Objectで引数を受け取るのにクラス変数の型に合わせてキャストして受け取る形が少し不自然に感じます。
この様な書き方で問題ないのでしょうか?
それとも他にいい感じの書き方がありますでしょうか?
class Test
{
private int a;
private string b;
public Test(params object[] param)
{
a = (int)param[0];
b = param[1].ToString;
}
}

343:デフォルトの名無しさん
17/09/18 21:31:12.97 IcOpWHLw.net
>>336
動けばいいだろカス

344:デフォルトの名無しさん
17/09/18 21:35:23.03 BIiVnPJO.net
>>336
object型で引数を受け取る必要あるの?
public Test( int a, string b )
{
 this.a = a;
 this.b = b;
}

345:デフォルトの名無しさん
17/09/18 21:35:57.16 JMdJN0yq.net
>>336
何を求めているのかいまいちわからないけど、その文だとparam[0]がキャストできないときにエラーで止まる
なので例えば
bool result = Int32.TryParse(param[0], out a);
に変える
この場合キャストできないときにresultにfalseが入る

346:デフォルトの名無しさん
17/09/18 21:38:06.59 HjSStS87.net
>>338
あくまで例って言う通り、実際はもっと多い引数だったり、場合によっては一部値を渡さない実装(デフォルト値設定)するつもりなんですよね
paramsって名前付き引数にできるのか?とか今調べてます
無理そうならDictionary使おうかとか考えてるところです

347:デフォルトの名無しさん
17/09/18 21:40:19.22 HjSStS87.net
>>339
ありがとうございます
TryParseの存在は知ってましたが、例外処理書いて載せるのめんどいのでとりあえずキャストだけ書いとけってやりました
すいません

348:デフォルトの名無しさん
17/09/18 21:43:00.12 xV3zBIyo.net
他人にエスパー能力を求めてる自覚がない人は困っちゃうねw

349:デフォルトの名無しさん
17/09/18 21:47:27.13 nAoTSCTK.net
>>340
型を作る
用途次第だけど

350:デフォルトの名無しさん
17/09/18 21:48:03.01 HjSStS87.net
実際はこの画像の感じで色んな型の変数をセットしていくのに、コンストラクタにparamsで渡していって、受け取ってない場合は初期値入れるってのをやるつもりです。
URLリンク(imgur.com)
元々rubyで書いてあるプログラムなんですが、C#で移植しながら書こうとしています。

351:デフォルトの名無しさん
17/09/18 21:52:25.02 IcOpWHLw.net
>>344
なんでそんな賽の河原の石積みみたいなことしてんの?

352:デフォルトの名無しさん
17/09/18 21:52:57.70 k38CZIuV.net
paramsは可変長引数だからその例には適さないぞ

353:デフォルトの名無しさん
17/09/18 21:59:58.66 HjSStS87.net
>>346
rubyだと
def Initialize(params)
@stock_code = params[:stock_code]
@trade_type = params[:trade_type]
な感じで実装されてたので、C♯でも可変長変数と名前付きで渡せるかなーって考えてました・・・
それが無理なら変数をまとめて型にするか、Dictionaryかなって感じです

354:デフォルトの名無しさん
17/09/18 22:04:11.24 xV3zBIyo.net
なぜ素直にオーバーロードとかオプション引数&名前付き引数を使わないんだろう...

355:デフォルトの名無しさん
17/09/18 22:09:33.77 nAoTSCTK.net
>>344
コンストラクタでTryParseとかはアレなんでFactory使う
あと各データのできるタイミングやまとまりが違うものがフラットに混ざってるので
DBの正規化的なアプローチで少しデータ構造を考えといたほうがいいかもね
とりあえず移植したいだけなら型つくって移植して
後で困ってからリファクタリングしたのでもいいと思う

356:デフォルトの名無しさん
17/09/18 22:09:51.89 vOYXlSBd.net
dynamicと匿名型使えば?

357:デフォルトの名無しさん
17/09/18 22:10:50.50 BIiVnPJO.net
>>344
コンストラクタでは初期値だけ入れて、newする時にプロパティに代入するのが良いと思う。
var trade = new Trade()
{
 stock_code = X,
 trace_type = Y,
....
};

358:デフォルトの名無しさん
17/09/18 22:21:57.04 HjSStS87.net
>>348
確かにそっちのが簡潔ですね・・・
元々長いのと後々追加する時を想定して少しこの辺りいい方法無いかなって模索してたので
>>349
Factoryは知りませんでした、調べてみます
>>351
こういうやり方のがすっきりしてそうですね、見た目も分かりやすそうな感じがします
ただsetはこれだとpublicですが、private運用のがいいのかとか考えていました。
プロパティ使って代入ってよくある使い方なのでしょうか?

359:デフォルトの名無しさん
17/09/18 22:25:06.53 HjSStS87.net
>>350
これも使い方調べてみます

360:デフォルトの名無しさん
17/09/18 22:42:34.01 HjSStS87.net
>>352
一先ず、プロパティのset使って運用しようかと思います
後々何かいい形に出来そうなら変更していこうかと思います
回答下さった皆様、ありがとうございました

361:デフォルトの名無しさん
17/09/18 22:49:09.22 IKMu/QN7.net
パ�


362:宴=[タークラス作ってそれに全部値入れて渡せば?



363:デフォルトの名無しさん
17/09/18 22:51:27.14 IKMu/QN7.net
object[]で渡すなんてバグの温床だよそんなもん
自分で呼び出すときと処理書くときに困るだけだ
初心者なら普通に関数書くほうがいい

364:デフォルトの名無しさん
17/09/18 23:04:27.54 vOYXlSBd.net
直接プロパティを設定するのはあまり良くないよ
いつ外から書き換えられるかわからず、それに対応できるように作るのは無駄に手間がかかるしテストもクソ面倒になる
結局、いつでもプロパティを書き換えられるように見えるくせに初期化時以外に書き換えたら壊れる糞みたいなクラスが出来上がる

365:デフォルトの名無しさん
17/09/19 00:12:55.89 UFvzWEfw.net
>>344
証券会社どこに対応?

366:デフォルトの名無しさん
17/09/19 01:11:24.64 OkajuEzq.net
>>358
そういうのとは違うみたいよ
URLリンク(books.google.co.jp)

367:デフォルトの名無しさん
17/09/19 06:59:39.45 +o0BYr/j.net
>>359
なるほど

368:デフォルトの名無しさん
17/09/19 20:36:01.35 dvJOAkmr.net
メソッドの戻り値がListで、その中身を可変にした定義がしたいのですができますか?
インターフェースで List<Type> Select<Type>() と定義して
具象クラスで同じように定義、return List<string>(); とかやっても
"List<string>をList<Type>に暗黙的に変換できません。"とエラーになってしまいました。

369:デフォルトの名無しさん
17/09/19 20:38:26.15 sbE0HbQy.net
linuxサーバーに好きな言語使ってwebアプリ作れって言われたら、言語何使う?

370:デフォルトの名無しさん
17/09/19 20:46:10.64 HSXd4/vW.net
>>361
何言ってるのか分からないけど、自分で(メソッドの戻り値の型を)可変にしたいといいつつ、
List<string>という非ジェネリックな型を返すのは何なの?
意味がわからないよ

371:デフォルトの名無しさん
17/09/19 21:37:01.96 oUqqEkrK.net
>>362
それをなぜここで聞く?

372:デフォルトの名無しさん
17/09/19 22:12:23.33 ekU6MC2y.net
>>361
まずTypeじゃなくてT使うように
メソッドのシグネチャーが
List<T> Select<T>()
なら実装は
return new List<T>();

373:デフォルトの名無しさん
17/09/19 23:49:48.63 WGzo2g/5.net
TabPageクラスを拡張してTabPageExクラスを作ったんですがTabControl.TabPages[index].Foo()を呼ぼうとしても呼べません
どうやったら呼べるようになりますか?TabPageCollectionを派生したクラスを作らないとダメですか?

374:デフォルトの名無しさん
17/09/19 23:53:29.45 3bAYaO8L.net
どうやっても呼べるようにはならないですよ

375:デフォルトの名無しさん
17/09/20 00:00:37.73 pKHwkxOR.net
>>366
拡張した内容が分からない
まず拡張したクラスでなく元のコントロールで呼び出していないか確認
その上で拡張した内容を張らないと誰もわからない

376:デフォルトの名無しさん
17/09/20 00:05:28.12 pKHwkxOR.net
あ、TabControl.TabPages[index].Foo()の時点で元のコントロールだな
それはだめだ

377:デフォルトの名無しさん
17/09/20 00:21:20.04 OL4nI+z3.net
失礼しました。拡張した内容ですが以下のとおりです
タブブラウザを作りたいのでこういう風にしました
TabPageクラスにGoBack、GoForwardメソッドを実装しそれをメインフォームのボタンから呼びたいのです
そのためにはtabControlでどのタブが選択されているか取得しないといけないので苦労しているところなのです

TabControl
URLリンク(ideone.com)
TabPage
URLリンク(ideone.com)
MainForm
URLリンク(ideone.com)

378:デフォルトの名無しさん
17/09/20 03:50:11.03 OL4nI+z3.net
無理なんですね、わかりました
やりたいことは各TabPage上にWebBrowserがあるのですがその進む戻るボタンをToolStrip上に実装したいのです
どうにか実装する方法ってないでしょうか?

379:デフォルトの名無しさん
17/09/20 06:47:27.86 f7lGjoxP.net
グローバルフックの事�


380:wびたく、 http://d.hatena.ne.jp/myugaru/20071130/1196434749 にあるソースを実行したいと思います 新規でコンソールアプリのプロジェクトを作り Formを追加し ソースをネームスペース以外コピペして、エラー無くデバッグで立ち上がるも、コンソールとFromは出るものの、なんの反応もありません 「Visual Studio ホスティングプロセスを有効にする」を外せとのことですがVS2017Communityではその項目が見当たりません デバッグでなくビルドしたexeでも同様です どう改変したら動くようになりますでしょうか? よろしくお願いいたします



381:デフォルトの名無しさん
17/09/20 09:28:35.33 QOv/22JC.net
>>370
まあ単純には、
var tabex = TabControl1.TabPages[x] as TabPageEx;
if (tabex != null) {
...
}
でもいいんじゃね

382:デフォルトの名無しさん
17/09/20 10:09:23.61 QOv/22JC.net
>>374
普通に動いたわ
新規プロジェクト作成でWindows Formsアプリケーションを選択
Form1.csを削除
Program.csを開いて既存のコードは削除してからリンク先のコードをペースト
F5
VSをアクティブにして出力ウィンドウにフォーカス移動して適当にキー入力するとmessage=KEYDOWNとか出力される
VS2017はホスティングプロセスがなくなったっぽい
ちなみにホスティングプロセスで動いてるかどうかは
デバッグ実行中にタスクマネージャ開いて
hoge.exeの代わりにhoge.vshost.exeが動いてるかどうかで判断できる

383:デフォルトの名無しさん
17/09/20 18:54:31.86 EHoWpSXt.net
>>374
ありがとうございます
できました

384:デフォルトの名無しさん
17/09/20 21:35:02.01 PQ6KY/LI.net
test

385:デフォルトの名無しさん
17/09/20 21:35:49.94 PQ6KY/LI.net
URLリンク(github.com)
このコードについて質問です
StringExtentions っていうのをなぜ改めて作っているのかわからないんですが
クラスの中にString型のオブジェクトがあれば、IsNullOrEmptyを呼び出せないの?

386:デフォルトの名無しさん
17/09/20 22:16:03.45 DOSxYj0U.net
>>377
static methodだからインスタンスメソッドとしては呼び出せない
String.IsNullOrEmpty(foo) と foo.IsNullOrEmpty の違い

387:デフォルトの名無しさん
17/09/20 22:42:10.58 eNb8jX7J.net
今となってはFormアプリケーションの作り方を覚えても無駄でしょうか?
現場でGUIアプリケーションはどのように作りますか?

388:デフォルトの名無しさん
17/09/20 22:54:26.15 JtkVUIC7.net
その現場による

389:デフォルトの名無しさん
17/09/20 22:55:28.94 eNb8jX7J.net
防衛省案件とかはどうでしょうか?

390:デフォルトの名無しさん
17/09/20 22:56:02.60 eNb8jX7J.net
Qt?

391:デフォルトの名無しさん
17/09/20 23:13:28.76 FueCi3Km.net
>>379
未だにそれよ
無駄にはならないよ
なんだかんだいって仕組みは一緒だから

392:デフォルトの名無しさん
17/09/21 08:27:22.37 3ejzg6/y.net
>>373
できました。ありがとうございます。
>>370を作る過程でマウスの中クリックでWebBrowserのタブ追加を行う際にTabControlクラスのメソッドを呼ばないと行けないんですが、この場合どうするのがいいのでしょうか?
・TabControlクラスのメソッドをTabPageクラスのコンストラクタに渡し、さらにWebBrowserのコンストラクタに渡す
・TabControlクラス内でパブリックな静的インスタンスを保持するプロパティを作成し、その静的インスタンスを介しWebBrowserクラスからメソッドを呼び出す

393:デフォルトの名無しさん
17/09/21 08:29:37.61 3ejzg6/y.net
>>384
途中送信してしまいました
設計上はどちらが優れているのか教えてほしいです
また他にいい案ありましたらお願いします

394:デフォルトの名無しさん
17/09/21 10:32:53.97 qZmCICJB.net
Parent.Parent


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch