1 名前:デフォルトの名無しさん [2015/09/26(土) 21:43:29.25 ID:Eb5jOjH8.net] ■Visual Studio 2013 Community & Express(無償の統合開発環境)等はこちら www.visualstudio.com/downloads/ ■コードを貼る場合はこちら ideone.com/ ■前スレ C#, C♯, C#相談室 Part88 [転載禁止]©2ch.net peace.2ch.net/test/read.cgi/tech/1437808445/ ■次スレは>>970 が建てる事。 建てられない場合は他を指定する事。
2 名前:デフォルトの名無しさん [2015/09/26(土) 21:58:07.51 ID:W4J0LT9H.net] __/l. / トi `ヨ _ノ <◎》 ヒi・ ヨ ,.、 /´ ヾニ'ノ | i , i ,,,.ノ'ヽニニ 7 レしイ`ー一レi. | //,、  ̄  ̄ Lニニノ
3 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 00:36:06.41 ID:Z8eHkRE5.net] 前スレの987です ipcとsendmessageの違い説明してもらってありがとう 追加で聴きたいんだがipcで文字列をサーバー側に送信するときってどうするの? それらしいメソッドも見つけられなかった
4 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 00:41:55.03 ID:PJ9cwNS0.net] WCFでおk
5 名前:デフォルトの名無しさん [2015/09/27(日) 10:26:53.27 ID:ULqoDcvQ.net] Wcfはやめておきな もうオワコンだよ
6 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 18:35:43.95 ID:yseIsr3i.net] 双方をサーバーにすればいいんじゃね?
7 名前:デフォルトの名無しさん mailto:sage [2015/09/27(日) 19:58:59.91 ID:jTsd9hQM.net] 色々と汎用性を考えたらsendmessageの方が有用だったのでそっちに変更したことアリ
8 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 20:21:14.51 ID:47Omh4YI.net] WPF何で勉強すりゃいいんだ... ググっても初歩的なのしか出てこないし 書籍も良さげなのないし 知恵袋だかどっかではMSのHPのサンプル動かして あとはオープンソース探して勉強しろとか言われてるし MVVMの勉強は別でやるべきなのか?
9 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 20:31:06.99 ID:nBHOHTmc.net] WPFは勉強しないが正解 来年で10年になるけど誰も使ってない
10 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 20:43:39.05 ID:W1n2yTQ9.net] 今の.NET標準のUIはASP.NET MVCだよ
11 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 20:47:17.03 ID:5W5jv3ql.net] ↑どうしようもないバカ
12 名前:デフォルトの名無しさん [2015/09/28(月) 20:49:25.64 ID:KOu+cy7g.net] formのほうがいい?
13 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 21:06:03.74 ID:VHL/k6m8.net] WPFのサンプルコードとかあるけど有名人の書いたコードでもダウンロード数が300とかだぞ 全世界で300人しか食いつかないんだぞ?
14 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 21:14:57.50 ID:VHL/k6m8.net] WPF触ってやめた人は数十万〜数百万人いるのではないだろうか? 食わず嫌いって事じゃなくて食って嫌いって人が多いと思う これからも普及しないから勉強する必要はない
15 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 21:17:27.18 ID:xzhasA3e.net] silverlightで業務アプリ作っていた会社、元気にしてるかな
16 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 21:24:29.26 ID:ySQbp+8d.net] >>15 リプレイスで金稼げるじゃん
17 名前:デフォルトの名無しさん [2015/09/28(月) 21:25:19.52 ID:ZQcFjZzd.net] windowsの業務系アプリケーションってformで作られてんの?
18 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 21:26:29.62 ID:VHL/k6m8.net] 知り合いの会社がd社h社y社からsilverlightの仕事受注してたな… 目から水が出てくる…
19 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 21:33:07.03 ID:VHL/k6m8.net] >>17 VB6アプリ→javaアプリ→htmlベースってところじゃないか? うちのはc++で主要コンポーネントを作ってwinformに貼ってる
20 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 21:36:36.53 ID:HHlxPx6I.net] wpfってそんなに人気無いのか インターフェースがいじりやすいからよく使ってるんだが
21 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 21:39:16.67 ID:FPjw0UTs.net] 糞フォームよりはきちんと設計してあるしよくできてる だが良いものが普及するとは限らないのだよ WPFの普及度は最悪だ
22 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 22:12:50.86 ID:DtOAXIl6.net] >>3 MarshalByRefObjectを継承した通信用のクラス作ったろ そいつにメソッド実装すりゃいいんだよ
23 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 22:14:39.79 ID:W1n2yTQ9.net] 今更.NET Remotingとか時代錯誤にも程があるだろ
24 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 22:15:33.10 ID:ZyrUKPY2.net] まぁ普通にWCF一択だな
25 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 22:17:17.31 ID:i42L2seC.net] asp.net MVCはまだ使われてる?
26 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 22:42:48.02 ID:DtOAXIl6.net] WCFは大げさすぎな時があるだろ ちょっとプロセス間通信したいだけなのに
27 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 22:53:57.68 ID:qO0J1M5O.net] Wpfの問題の一つは、素で全てのイベントがバインド出来ないことだな ビヘイビアなんか簡単なものだが、そこまで辿り着く前にギブアップする人も多い
28 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 22:55:37.93 ID:W1n2yTQ9.net] Remotingと比べて特に大袈裟とは思わないが 使ったことないだけじゃね? まあWXX系の名前が付いてるだけで大袈裟そうなイメージがあるのは分かるが、 WCFに関しては比較的シンプルだしフレームワークというほどアプリの構造を規定するようなものでもない
29 名前:デフォルトの名無しさん [2015/09/28(月) 23:44:53.25 ID:vgM4ZS+6.net] Asp.net Web apiがあるからなぁ セキュリティ要件とか何らかの理由がなければWcfは使う価値観無し
30 名前:デフォルトの名無しさん mailto:sage [2015/09/28(月) 23:46:10.93 ID:A3yzbLho.net] WCFは初期の説明がどこも駄目すぎた あれじゃappconfigにしか接続先書けんように誤解する
31 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 00:04:10.31 ID:oOGIUwwe.net] WCFでセルフホストして名前付きパイプでバインディングするだけの簡単な作業だな
32 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 00:11:50.95 ID:xUqh6GV8.net] ついでにサンプルがほぼ全部SOAPなのもあかんかった IIS建てるくらいなら普通にHTTPアクセスするわ
33 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 16:18:05.62 ID:NDjZX+li.net] >>8 WPFはXAMLの書き方とバインディングをさらっと勉強して 後はMVVMの理解に時間を費やすべきだろう。 つーかMVVM理解してないと正しいWPFの使い方が分からんと思う。
34 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 19:28:07.46 ID:acQqRnNE.net] >>33 やっぱそういう感じか MVVMパターンなフレームワークって他にある?
35 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 22:00:16.22 ID:NcGQK+Xr.net] WCFはシステムにごみを残すから…
36 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 22:02:36.62 ID:NcGQK+Xr.net] WPFはメモリリーク問題のころにいろいろと嫌な思い出があるのでそこでやめた
37 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 22:25:47.17 ID:+KF25K9W.net] >>34 最近はMVVMというとWebのデザインパターンだよ ビューに特化したモデルにUIをバインドするってのは モダンなWeb開発じゃ普通に行われてる VueとかKnockoutとかAngularとか
38 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 22:54:19.79 ID:qVFuDZbI.net] WebのMVVMフレームワークの楽さは段違いだけどね なんでこんなに野暮ったい作りにしたのかね WPFは
39 名前:デフォルトの名無しさん [2015/09/29(火) 23:14:37.99 ID:5ZVAdYEK.net] Mvvmはダイアログとか逆にめんどくせえよ 素人のお客様はダイアログメッセージ大好きだから使わないってわけにもいかないしくそが mvpのほうが日本の現場のやり方に適合してる
40 名前:デフォルトの名無しさん [2015/09/29(火) 23:18:26.71 ID:SqFlqVze.net] 逆じゃねーだろ。 冗長化することで疎結合を図るもんなんだから順だろ。
41 名前:デフォルトの名無しさん mailto:sage [2015/09/29(火) 23:25:56.44 ID:NcGQK+Xr.net] 単にコード書けばいいだけなのに宗教論争が出てくるところがうざい
42 名前:デフォルトの名無しさん mailto:sage [2015/09/30(水) 00:06:14.04 ID:u3/16ewm.net] WPFはDobonみたいなサイトがないのが辛い
43 名前:デフォルトの名無しさん mailto:sage [2015/09/30(水) 00:17:50.71 ID:P6f9n+3Y.net] >>37 angularは少し触ってるんよね 双方向バインドとかはいいんだけど DIあたりがまだいまいち...
44 名前:デフォルトの名無しさん mailto:sage [2015/09/30(水) 14:10:35.76 ID:/7e79CqG.net] WPFはビデオアクセラレータ詐欺が致命的 速くねえんじゃ面倒なだけやん
45 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 17:21:34.69 ID:ASS/6Yz0.net] >>42 流行ってないから作る人もいないと言う事?
46 名前:デフォルトの名無しさん mailto:sage [2015/10/01(木) 20:20:50.31 ID:TZq8STMW.net] 絶対に移行したくないでござるから PHP5.2もStruts(無印)もVB6もバリバリ現役でござる
47 名前:デフォルトの名無しさん [2015/10/03(土) 00:09:13.50 ID:Keh2Ns9c.net] イベントソーシングの利点が分かりません C#のサンプルでメリットを説明してくだだい
48 名前:デフォルトの名無しさん [2015/10/03(土) 01:47:55.03 ID:lM4fZrRH.net] 将棋アプリとかの再生機能。
49 名前:デフォルトの名無しさん [2015/10/04(日) 00:20:49.49 ID:Vt6Jil15.net] オーバーライドを強制しないインターフェイスって定義出来ませんか? オーバーライドしなかった場合空のメソッドを暗黙的に実装して、戻り値がある場合は初期値(nullや0やfalse)を返すようにしたいです。
50 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 00:24:15.38 ID:E3In34i6.net] Javaに転職して下さい
51 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 00:26:36.62 ID:K/b1ABC4.net] インターフェースのデフォルト実装はできない 拡張メソッドで頑張れ
52 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 00:29:17.30 ID:2RSKP97g.net] インターフェースじゃなくて抽象クラスじゃダメなの?
53 名前:デフォルトの名無しさん [2015/10/04(日) 00:31:22.57 ID:Vt6Jil15.net] >>50 javaから来たんだがjavaってそんな事出来た?
54 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 00:47:11.48 ID:sYhIU9Uv.net] 俺もjava出身だけどできた記憶はねえな
55 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 00:47:22.38 ID:GuH6DZcU.net] 今のJavaはできる
56 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 00:50:36.50 ID:sYhIU9Uv.net] へえ、java8からdefault methodsなんてのが入ったのか
57 名前:デフォルトの名無しさん [2015/10/04(日) 00:51:05.31 ID:Vt6Jil15.net] java凄いな
58 名前:デフォルトの名無しさん [2015/10/04(日) 00:51:44.63 ID:Vt6Jil15.net] >>56 えっ俺3ヶ月前にjavaから移ってきたけどそんなの知らんぞ
59 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 00:54:15.30 ID:K/b1ABC4.net] お前が勉強してないだけだろ
60 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 00:55:28.30 ID:z9vnEhIM.net] スッキリJAVA入門にも書いてあったと思うぞ..
61 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 02:31:21.63 ID:/6Igeukh.net] なんか筋悪そうな機能だな。 そもそもインターフェイスって何だっけって思っちゃう。 C#が出た時、Java界隈のOOP原理主義者みたいのが凄い拒否反応だったような記憶があるけど そういう連中が何て言ってるのか聞いてみたい気がする。
62 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 02:45:56.51 ID:rWuKCJFV.net] 高木のひろみちゅがdelegateをさんざっぱらディスってた頃が懐かしいのう
63 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 02:53:35.34 ID:iiWOg/+e.net] インテリはいつだって過激なことしかやらないからね ちかたないね
64 名前:デフォルトの名無しさん [2015/10/04(日) 03:15:03.16 ID:zHOzyLwf.net] >>61 なんで? インタフェースがあってデフォルト実装を持たすだけじゃん。 頭硬い
65 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 04:23:37.92 ID:sYhIU9Uv.net] 昨日言ったことなんて覚えていないさあ
66 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 06:21:43.98 ID:mWTPZ0uY.net] 今のJAVAは new Thread( () -> {System.out.println("sub thread");} ) だからな
67 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 19:20:20.48 ID:BBaweDvN.net] LINQを初めて知った時に 求めていたものはこれだっ!って感動しました みなさんはどうでした?
68 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 19:40:29.64 ID:k/Vv5opt.net] ドメインモデルアンチパターンは完全に終わったなって思った
69 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 19:47:10.70 ID:n9SWOsb2.net] LINQ見たときは、読みづれーなー、と思いました
70 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 20:04:20.62 ID:FsLwYc7A.net] >>67 最初だけだった。 linq使いまくるとコードが読みづらい。 今では滅多に使わない
71 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 20:40:06.35 ID:F7DfZVqD.net] Linq使いまくるとコードが読みにくいって どんなコード書いてんだよw
72 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 20:47:27.03 ID:BBaweDvN.net] >>70 滅多に使わないってことは コレクション操作するときも foreachとif文書く感じ? 普通メソッド形式で書くだろうから whereで絞って、selectして、orderbydescして、先頭n個取って来る みたいにメソッドチェーン通りに処理が分かると思うんだけど。
73 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 20:50:57.86 ID:FsLwYc7A.net] >>72 そのとおり。
74 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 21:07:29.40 ID:F7DfZVqD.net] >>73 いやーどう考えても foreach と if 文オンリーの方が コードが読みにくくないか?
75 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 21:16:05.68 ID:FsLwYc7A.net] >>74 そんな事ないわよ。for if で十分よ。
76 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 21:18:52.52 ID:F7DfZVqD.net] >>75 そこまで言うなら何も言わないわ ☆(ゝω・)vキャピ
77 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 21:19:07.05 ID:X+pziR5V.net] こーゆーのがレガシーコードを量産するのね
78 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 21:19:12.76 ID:2RSKP97g.net] >>72 読み辛いって言っているのは多分ラムダ表記のことなんじゃない? あのメソッドチェーンが読み辛いなんてことは流石に無いと信じたい
79 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 21:27:17.53 ID:GuH6DZcU.net] for if の方が意味的な密度が下がるからある意味読みやすい COBOLの ADD 1 TO HOGE. MOVE HOGE TO OUTPUT_HOGE. が読みやすいというのと一緒
80 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 21:32:09.27 ID:F7DfZVqD.net] レガシープログラマの鑑だな
81 名前:デフォルトの名無しさん [2015/10/04(日) 21:43:56.71 ID:zHOzyLwf.net] linqはインテリセンスが汚染されるから、データ処理がメインじゃなきゃforeachで回すな
82 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 00:47:56.95 ID:LmMVGWnX.net] 気分で決めるかな 気分で物事を決められる立場にいるから
83 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 01:19:30.73 ID:IBdfcwn9.net] ニートとか?
84 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 01:43:47.39 ID:7gRuVKiR.net] やまだくん、座布団持ってきて!
85 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 01:55:09.54 ID:b3HB7/qz.net] linqを知らない人は読めないが、逆は読める ならforで回してるほうが読みやすいということだ(QED)
86 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 07:51:51.63 ID:Hq8/NA/P.net] さすがにC#やっててLINQも使えない奴に合わせる必要ないでしょ
87 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 11:13:15.36 ID:1iyaU5vD.net] メソッド形式ばっかり使ってるわ。 クエリ式はやっぱり読みづらいし感覚的に好きになれない。
88 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 12:54:06.99 ID:6whxSJRO.net] メソッド式に虫酸が走る俺はどうやら少数派のようだ クエリ式では出来ないこともあるから嫌々使うこともあるけど
89 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 13:50:25.54 ID:Hq8/NA/P.net] クエリ形式のがいいとか言ってるのは SQL大好きな老害とかやろなぁ jQueryでメソッドチェーンしないんだろうか
90 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 14:04:40.42 ID:4nGRPUCN.net] そこで低品質の代名詞樽jQueryが出てくるのはギャグのつもりなのか?
91 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 15:29:13.32 ID:l+YmXvD7.net] LINQ使おうが使うまいがコードの読みやすさはコーダーの品質に依存する 一般的に言って、新しい物を知っているコーダーはそうでないコーダーに比べて品質が高い傾向がある LINQ使わないとしてもね
92 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 15:39:00.45 ID:Gxee2tr0.net] 自分が書いたコードをここに貼って見せなさいよ。
93 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 19:38:50.94 ID:b/j1ivXN.net] Linq 使わないって言ってるレガシーオヤジは Entity Framework とか使ったこと無いのか?w
94 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 19:43:12.16 ID:wH6k7s5h.net] EF使ってなくともコレクション操作でお世話になるからなあ
95 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 21:41:26.63 ID:m/PM7Fjo.net] EntityFrameworkって ストレスフルなだけのゴミからスクラップ廃材くらいには レベルアップしたの?
96 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 21:45:04.36 ID:AH/y3T7l.net] 少なくともウンコ盛りのアホな設定ファイル群は要らなくなった ただ廃材でないかどうかは微妙
97 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 23:49:44.26 ID:tRTFuR2/.net] Rxのことも忘れないでください クエリ式は、ラムダの記述を減らせるのがメリットだと思う 後、EFだとSQLがイメージし易い
98 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 23:59:02.02 ID:1LF/2R+b.net] >>91 > 一般的に言って、新しい物を知っているコーダーはそうでないコーダーに比べて品質が高い傾向がある そんなの聞いたことないし、単なる思い込みだろ この手の思い込みが激しい奴のコードの品質は低い傾向があるみたいだけど w
99 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 00:16:06.89 ID:TrEyw8kb.net] まあ人間いろんなタイプがあるから一概には言えんよ。当たり前だけど。 フットワークが軽くて新しいこととかトリビアルな知識はやたら持ってるけど 応用力とか設計力がない(要するにあんまり地頭が良くない)タイプもいるし、 逆にせっかくそこそこ知能は高いのに勉強嫌いで古い知識で止まってるタイプもいる。 オールマイティータイプもいる(これはごく少数だけど)
100 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 00:48:20.22 ID:yuX2pqxS.net] 新しい技術に脊髄反射で拒否反応を示す 職場のお荷物のIT土方が湧いてるなw
101 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 00:51:55.15 ID:yuX2pqxS.net] >>98 お前みたいなのはレガシーコードを書いているという自覚すら無い コピペプログラマだ
102 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 01:05:12.17 ID:TrEyw8kb.net] >>101 みたいのを見てると精神分析学を知らないことは幸せなことだと思う。 自分の言動の(本当はみじめで哀れかもしれない)動機を本人は知らずに済むのだからな。
103 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 01:06:18.36 ID:mXRqVUnf.net] >>101-102 思い込み君チース w
104 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 01:31:09.57 ID:yuX2pqxS.net] 久しぶりに覗いてみたけど 2chのマ版はすっかり過疎ってるしレベルも極端に低い 匿名掲示板の限界かw
105 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 01:41:40.66 ID:mXRqVUnf.net] マ板? レベル以前の問題だな こいつのコード、レビューしたらこの手のミスがボロボロ出てくるんだろうな w それ以前にコード書けるかどうかは知らんけど
106 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 07:04:31.85 ID:14/sy/Q9.net] LINQが使っているIEnumerableに定義されている拡張メソッドの理解がどうもすっきりとせずに辛い。混乱してくる。 IEnumerable<TSource>という型があったとすると、次のように拡張メソッドが定義される。(extendmethodメソッドなんてLINQにはないけど、例として) public static IEnumerable<TResult> extendmethod<TSorce, TResult>(this IEnumerable<TSource> source, Func<TSource, IEnumerable<TResult>>) { 中身は知らない;(質問0:LINQを使うだけなら知る必要はないですか?) } これによって、IEnumerable<anyType>インターフェイスを継承したオブジェクトなら、extendmethodメソッドが使えるようになるわけだと思う。(質問1:合ってますでしょうか) で、extendmethodメソッドは、引数として、Func<TSource, IEnumerable<TResult>>ビルトインデリゲートのみを採っている。(this修飾のは、拡張メソッドの定義用で引数でない) このデリゲートの定義で、TSourceはデリゲートの引数型、IEnumerable<TResult>は戻り型になっている。 しかし、メソッド名extendmethodのすぐあとにある<TSorce, TResult> って何なのでしょうか。どこで使われるんでしょうか。引数型だけではなぜ定義不足なのかわかりません。これが一番わからないです。(質問2) よろしくお願いします。
107 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 07:30:25.83 ID:7FNxeZR/.net] 質問0 yieldを使って実装されている。難しくないからやってみたらいい。 質問1 合っている。 質問2 >引数として、Func<TSource, IEnumerable<TResult>>ビルトインデリゲートのみを採っている。 これは間違い。thisパラメータはextensionmethodを呼ぶときに.(ドット)の左側の値が暗黙的に渡る以外は普通の引数。 >メソッド名extendmethodのすぐあとにある<TSorce, TResult> って何なのでしょうか。 ジェネリックの型パラメータ。List<T>の<T>と同じで、「任意の型に置き換えられる」ことをコンパイラに指示している。 hoge.extensionmethod(x => x.y) として呼び出したとき、hogeがIEnumerable<Hoge>型であれば、 コンパイラはTSourceにHogeが暗黙的に指定されたと推論する。 同様に、x.yがint型であればTSourceの型はint型になる。 型引数はもちろん手動で hoge.extensionmethod<Hoge, int>( と指定することもできる。
108 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 12:38:22.34 ID:14/sy/Q9.net] >>107 親切にお答えくださってありがとうございます。 ぼんやりと見えてきた感じがします。(まだその程度) >型引数はもちろん手動で hoge.extensionmethod<Hoge, int>( と指定することもできる。 これは、面白いです。 extendmethod<TSorce, TResult>の、わざわざ角かっこ内に定義されたジェネリック型指定が活きてきたからです。 つまり、extendmethod<TSorce, TResult>のように、ジェネリック型を定義することではじめてコード内でその型のプレースホルダを使えるようになることがわかりました。 次のように言えるわけでしょうか。 「 hoge が、IEnumerable<Hoge>型のオブジェクトであるとき、そして、x.yであらわされる値がint型であるとき、 次のようにして拡張メソッドを呼び出すことができる。 また、使用する拡張メソッドの定義は、次のとおり) public static IEnumerable<TResult> extensionmethod<TSorce, TResult>(this IEnumerable<TSource> source, Func<TSource, int> f) {} この拡張メソッド呼び出し方: 1、ノーマルな呼び出し方(このとき、2点は暗黙に指定されている。以下2、3の呼び出し方でこれらをそれぞれ明示的にしていく) hoge.extendmethod(x => x.y) 2、メソッド内で使われるジェネリック型を、明示的に、指定する hoge.extendmethod<Hoge, int>(x => x.y) このとき、ラムダ式のxは、TSourceなので、すなわち、Hoge型ということになる。(質問:合っていますでしょうか) 3、拡張メソッドであることも、明示的に、表しながら呼び出す hoge.extendmethod<Hoge, int>(this hoge, x => x.y) 」
109 名前:108 mailto:sage [2015/10/06(火) 12:39:00.18 ID:14/sy/Q9.net] メソッド名に続くこういうジェネリック型指定、たとえばMethod<T1,T2>のような書き方は普段はつかっていませんでした。 Methodは引数の型だけを意識していました。 普通のクラス内にメソッドを定義するときにも、こういう形式は使えるんだと思いました。(質問 B:以下のコードは正しいでしょうか。) public string Method<T1>(T1 z) { return T1.ToString(); } ありがとうございます。
110 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 13:10:56.41 ID:RmS10x6f.net] >>108 >3、拡張メソッドであることも、明示的に、表しながら呼び出す >hoge.extendmethod<Hoge, int>(this hoge, x => x.y) 実体は静的メソッドなんだからそれはない 定義されてるクラスをFooとして Foo.extendedMethod( hoge, x=>x.y ); なら可 >質問 B:以下のコードは正しいでしょうか。 正しくない。 public string Method<T1>(T1 z) { return z.ToString(); } あとこの<T1>は必須だよ
111 名前:108 mailto:sage [2015/10/06(火) 14:34:29.84 ID:14/sy/Q9.net] >>110 すみません、ありがとうございます。 >Foo.extendedMethod( hoge, x=>x.y ); this修飾子は、呼び出す側には不要ってことなんですね。 >return z.ToString(); そうか、引数定義で指定したメソッド内変数zが、ジェネリックT1で型打ちされているから、 これでいいわけか。 なるほど。ありがとうございます。 あとは、コンパイラに指摘されながら、覚えていきたいと思います。 ご親切にお相手くださってありがとうございました。
112 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 12:05:17.27 ID:tDhsttHF.net] sharpdevelopでリリースビルドしようとするとエラーでる log4netは32bitでターゲットcpuをanycpuにしてるからっぽいんだがどうやったらターゲットをx86にできんの?
113 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 12:20:03.23 ID:40NgKpJy.net] さすがに今時SharpDevelopはないわ WinならVSCE, MacやLinuxならVSCodeかMonoDevelop
114 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 12:52:22.89 ID:1Tzy0x1l.net] LINQすら使えないやつは、C#使うんじゃねーよww
115 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 13:17:18.10 ID:9sdQQKJG.net] 芝は心の安寧を求める意識の現れ
116 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 19:26:33.40 ID:F4sBdgXs.net] テストをインチキプログラムで突破する類似品に注意vwvwvwvw
117 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 20:53:19.01 ID:B5U/bW9V.net] Enumeratorってなんて発音するの? いーなめれいたー? えにゅみれいたー? paramsってぱらむすでいいのかな
118 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 21:10:26.95 ID:LRcqoY9G.net] 発音記号を見ろ 無理やり日本語読みすると「いなむれーた」と「ぱらむ」で過半数程度には通じる
119 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 22:50:51.42 ID:3pa+NQnn.net] えにゅーめらぼー
120 名前:デフォルトの名無しさん [2015/10/09(金) 03:17:38.95 ID:AWj2PSbP.net] あるクラスがあって、このクラスに継承可能で複数設定できる属性がつけられてる このクラスを継承すると、その属性も継承するわけだが、属性は継承したくないんだ 継承したクラスで、元のクラスについてる属性消す方法ってないかな?
121 名前:デフォルトの名無しさん [2015/10/09(金) 03:21:23.16 ID:bnFBmvSl.net] 属性にはスコープをつけられる。 継承したら無効とか。 継承元の属性をいじれない場合はしらん。
122 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 03:42:47.55 ID:AWj2PSbP.net] >>121 属性そのものをいじりたいんじゃなくて、継承元クラスについてる属性を消したいんだよ その継承元クラスについてる属性のAttributeUsageはInherited=true, AllowMultiple=trueだが それを変えたいわけじゃない
123 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 16:27:25.69 ID:1E5VI5Cy.net] まあ無理だろ 読み取る側が継承してる属性なんか取ってこなくていいって言うことはできるけど
124 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 17:31:11.35 ID:AWj2PSbP.net] >>123 やっぱり無理か 読み取り側を変更するぐらいなら、渡すクラスも一から自作するわ なんでプロパティじゃなくて属性なんかで設定するようにしやがったんだろう なんとなく使い分けてるけど プロパティで実装するべきか、属性で設定するべきか、使い分けの指針とかあるのかな? 設定する基準がインスタンス単位かクラス単位か?
125 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 19:38:57.34 ID:Zss3YWYL.net] >プロパティで実装するべきか、属性で設定するべきか 全然別物だろ ラップしたら
126 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 21:07:35.97 ID:CFgeSmkK.net] カスタム属性は、メタ情報というかタグというか… 例えばEnumのフィールドに別名(日本語名)が欲しい場合に使う
127 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 21:14:25.60 ID:0JeYvXK2.net] メタ情報は必要だけど メタ情報で日本語書くよりは Enumのメンバーを日本語にするのが吉
128 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 21:25:12.13 ID:AWj2PSbP.net] >>126 メタ情報っていう用語も実際のとこ、俺にはちゃんと説明できない用語だが 単なるタグだっていうなら、動作に影響するようなものは属性で制御すべきじゃないのかと たとえば検証に関してなら、エラーメッセージは属性が適当かもしれんが 最大桁数や、エラーチェックするかどうかは属性で制御するのが適当だろうか? >>127 それはまさに、通常の情報なのかメタ情報なのかの違いだと思うが その意見は、メタ情報じゃなく通常の情報としてインプリメントしろって意見だろ
129 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 21:36:36.32 ID:CFgeSmkK.net] >>128 例えばデータを格納するプロパティに属性付けて最大桁数やらチェック種別Enumを入れるのもいいよ エラー種別Enumにはエラー検証用の正規表現付けたり エラーメッセージはエラー検証メソッドで生成させるかな >>127 インテリセンス的にどうよって思ってやったことない
130 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 21:38:21.20 ID:XIlHZiEB.net] いやEnumのメンバー名はメタ情報の一つだよ 変数名はプログラムそのものについての自己記述情報に他ならない >>127 は2重にメタデータを持つことはDRYに反するよねというだけの問題
131 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 21:44:10.25 ID:Zss3YWYL.net] メタってのはようするに当該クラスの外部ってことだろ それ自身がを超えた制御情報ってだけで べつに属性だろうが外部クラスの定数だろうが 好きにしたらいいんじゃね
132 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 21:57:49.30 ID:AWj2PSbP.net] >>130 なるほど、Enumのメンバー名がメタ情報だってのは理解できる 2重にメタデータもつなってのも納得した では、属性の使いどころはどこだろう 元の言語仕様でサポートされてない開発者独自のメタ情報の表現のため? じゃあメタじゃない情報を属性で扱うってのはやっぱり下策なのだろうか
133 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 22:57:53.19 ID:HsR0vRx2.net] 外部じゃなくて上位だよ
134 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 23:01:13.11 ID:HsR0vRx2.net] 夫見逃すところだった enumのメンバー名はメタじゃないぜええええええ なぜなら文字列からパースできるから
135 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 23:03:16.07 ID:CFgeSmkK.net] >>132 >>129 に使用例書いただろ
136 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 23:06:04.38 ID:XIlHZiEB.net] >>134 あれリフレクションで実装されてるんだぜ カスタム属性で日本語名付けられるようにしたとしても、ほとんど同じ実装になる だって組み込みのメタデータかカスタム属性で与えられたメタデータかだけの違いしかないからね
137 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 23:10:15.20 ID:HsR0vRx2.net] 今の話でリフレクションを持ち出すといろんなものがメタ扱いになってしまうw
138 名前:デフォルトの名無しさん [2015/10/09(金) 23:14:51.18 ID:lI8PbTGr.net] なぜswitchでstring使えないんですか?
139 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 23:18:41.11 ID:HsR0vRx2.net] それってC++かjavaじゃね?
140 名前:デフォルトの名無しさん mailto:sage [2015/10/09(金) 23:48:22.88 ID:XIlHZiEB.net] >>137 意味がわからない 俺は>>134 のレスで文字列からパースできるからメタじゃないという謎の理屈を見て、 きっと「文字列からパースできる」→「なんか特別な仕組み」→「メタじゃない!」という思考なのだろうと推測した だからenumのparseがリフレクションで実装されていることを示すことにより、 文字列からパースできるからといって何ら特別ではないことを証明したつもりだったんだが、的外れだったようだ 真剣に疑問だから「文字列からパースできる」→「?」→「メタじゃない!」の?の部分を教えてくれ
141 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 00:13:08.97 ID:VY+pcMt2.net] パース可能 言語レベルで対応されている メタじゃない
142 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 00:31:50.62 ID:rHFZYJSj.net] そりゃ誰がどう見ても言語レベルで対応されてるけど それにパース可能かどうかがどう関係するのかが全く理解できない DateTimeはParseがあるからメタじゃない? RectangleはParseがないからメタ? メタって一体何? ちなみに.NETの公式の用語としては、メタデータはメソッド本体を除くクラスとメンバに関する全ての情報を指す
143 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 05:24:02.05 ID:/nOfalKF.net] EnumのParseはC#の言語仕様には無い
144 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 10:00:53.58 ID:chRrQaCq.net] >>138 定数じゃないとあかんで
145 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 10:25:12.24 ID:EHQzzmJM.net] >>144 は文盲 一つ後のレスも読めないらしい
146 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 10:27:04.87 ID:rHFZYJSj.net] 変数は無理って意味でしょ 別に間違ってない
147 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 10:47:14.46 ID:chRrQaCq.net] >>145 煽るなよクズ
148 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 21:02:17.87 ID:6MWep/bm.net] 属性は言語仕様を変えることなくコンパイラやらプログラ厶用に機能を追加できるというのが肝だと聞いた
149 名前:デフォルトの名無しさん mailto:sage [2015/10/10(土) 21:11:41.59 ID:OjkSZXQt.net] 属性は、メンバーとか型に追加の情報なり識別子なり持たせる役目だと思う。
150 名前:デフォルトの名無しさん mailto:sage [2015/10/11(日) 14:23:33.79 ID:lDigt0qz.net] \(^o^)/ぬるりっちょ
151 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 22:40:22.83 ID:pwM6df0l.net] List<object> list=new List<hoge>; 的なのが出来ない理由分かったぞ! もしこれが出来たら、listはhogeとhogeと子クラスしか入らないはずなのに(特定メソッドを持っている事が保障される)、objectイントランスとかが入ってしまうからだ。 もしhogeにargs()メソッドがあるとして List<object> list=new List<hoge>; list.Add(new object()); list[0].args(); ってやるとおかしくなるもんね 👀 Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
152 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 23:04:21.79 ID:e5VIXU4j.net] ほうほう、ではなぜ Object[] a = new Strin[1]; ができるのですか
153 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 23:12:03.39 ID:pwM6df0l.net] >>152 知らん
154 名前:デフォルトの名無しさん mailto:sage [2015/10/12(月) 23:16:57.36 ID:pwM6df0l.net] object[] o = new string[1]; o[0] = new object(); 出来たけど起動したらパソコンぶっこわれた
155 名前:デフォルトの名無しさん [2015/10/13(火) 00:46:06.78 ID:AkH9qfzr.net] >>151 いや、できるだろ。 指定型じゃないobjectをaddしたら例外吐くと思うが。 ジェネリックの共変性とかでできなくなったのか?
156 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 00:56:55.40 ID:rx5Up+1Q.net] List<object> は object 型じゃないから、違う型である List<hoge> を代入出来ないだけじゃねーの。 だから、 object list = new List<hoge>; とか、 List<object> list = new List<object>; list.Add( new Hoge() ); とかは出来るんじゃね?
157 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 07:14:34.67 ID:IPzu3dLL.net] ジェネリックの共変や反変を使用するには 型パラメータにそれぞれin、outを指定する必要がある inやoutはインターフェースまたはデリゲートにしか指定できない また、inまたはoutを指定した型パラメータはそれぞれ引数(入力)または戻り値(出力)にしか使えなくなる たとえばIReadOnlyList<out T>やIEnumerable<out T>などの読み取り専用インターフェースはout Tなので List<hoge>をIReadOnlyList<object>やIEnumerable<object>にキャストしたりすることはできる
158 名前:デフォルトの名無しさん mailto:sage [2015/10/13(火) 18:40:15.12 ID:1yUdPEbp.net] 配列の共変性は例外
159 名前:デフォルトの名無しさん mailto:sage [2015/10/14(水) 14:19:58.33 ID:roB5XZwg.net] >System.InvalidOperationException: シーケンスに、一致する要素は含まれてません なんで会話体なんだよw ぐぐったらぐーぐるさんに もしかして シーケンスに、一致する要素は含まれていません って怒られたわ
160 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 19:23:17.82 ID:plKY4Q25.net] ちょっと聞きたいんだがシリアル通信で対向側から100バイト分のデータが送られてきたときに100バイト取得出来るときと40バイト60バイトみたいに複数回に分けて送られてくるのはなんでなの?
161 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 20:48:58.18 ID:3PxZRlNz.net] >>160 知るかよw どんな質問だよw
162 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 20:52:27.20 ID:R/ItuJii.net] >>160 メーカーに聞きなよ つかC#関係ないじゃん
163 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 21:15:23.90 ID:3PxZRlNz.net] >>160 場違いな質問だけどまあちょっとだけフォロー。 今時シリアルポートが付いてるPCの方が少なくと思うからどうせUSB-シリアルの変換ブリッジ経由のアクセスだと思うけど、 USBはRS-232Cと違ってパケット単位の送受信になるから、アクセスの仕方によっては 見かけ上そのように見える可能性はあると思う。 まあ、たぶんこれは考え過ぎで関係ない。 恐らくデバイス側の仕様の線だろう。
164 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 22:14:59.79 ID:cazvS2P7.net] >>160 シリアル通信には『40バイト60バイトみたいに複数回に分けて送られ』 などという考えはありません。 まず「シリアル」通信とはどのような考えの通信なのかを勉強し直してください。
165 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 22:50:13.49 ID:0i22usD/.net] シリアル通信自体にはなくても、 シリアル → OS のバッファ → ファイルハンドル経由で受信 とかしてれば OS のバッファからはき出すタイミングと ファイルハンドル経由で読み取るタイミングとの関係で途中で切れることもあるんじゃね。 163 の言ってる USB のパケ単位の受信でも同じ要領なんだろうし。(たぶん)
166 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 23:09:35.66 ID:3PxZRlNz.net] まあ厳密に言えばUSBだって物理層レベルではただのシリアル通信だし、 232Cだって少なくともPCでは、一番下の水準だってハードウェアバッファに対してまとめて読み書きしてる だけなんだけどさ。
167 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 23:50:33.81 ID:GlsuvrM1.net] 40バイトしか届いていない瞬間に読み出せば 40バイトしか読みとれないだろう それを「複数回に分けて送られてくる」とは言わないぜ 100バイト届いているのに40バイトしか読みとれないことは考えにくい
168 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 00:03:40.24 ID:A8PPNIqS.net] FTDIってUSB-232Cの変換ブリッジICのメーカーのドキュメント見たら バルク転送のパケットのペイロードの64byteのうち、2バイトはシステム(FTDIのICとドライバーの間のやりとり)が使って 残りの62バイトが正味のペイロードみたいだから、>>163 に書いたような理由かもしれんね。 www.ftdichip.com/Support/Documents/AppNotes/AN232B-04_DataLatencyFlow.pdf
169 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 00:30:04.83 ID:KAwMDrmB.net] と言うか、基本はデータ長を識別出来るようにして送った上で、 データ長分のデータをきちんと受け取ってから処理するようにすれば済む話で、 普通はそういう風に実装するよな。 パケ通信とかでもこの手の質問はよく挙がる。
170 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 08:14:43.34 ID:w2ONMRNp.net] ソリューションエクスプローラで、自分で作成したフォルダを右クリックして 追加-クラスで新規作成すると、namespace プロジェクト名.Class って拡張子(.Class)がついてしまうんだけど、これならないように設定できないの?
171 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 09:13:29.49 ID:IIEWzpZc.net] 拡張子ちゃうで
172 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 21:29:35.57 ID:oF9r0LvQ.net] >>170 ttp://stackoverflow.com/questions/3317141/automatically-add-namespace-when-adding-new-item これと逆のことをすればいい
173 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 23:51:28.24 ID:iL1w7ncH.net] 特定メソッドのオーバーロードが用意されている型のみを引数で受け取ることは出来ませんか?
174 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 23:56:16.88 ID:/26VfrL0.net] >>173 何を言ってるのか全然わからない
175 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 23:59:55.94 ID:iL1w7ncH.net] static int hoge(a args); static int hoge(b args); static int hoge(c args); という関数があったとすると static int f(hoge() args){ return hoge(args); } みたいな事は出来ないかなと思って
176 名前:デフォルトの名無しさん mailto:sage [2015/10/17(土) 00:03:58.16 ID:XvNYZLvx.net] ジェネリックを使えばよいんじゃね?
177 名前:デフォルトの名無しさん mailto:sage [2015/10/17(土) 00:35:45.30 ID:FN3G7dO/.net] static int f<T>(Func<T, int> hoge, T args) だな
178 名前:デフォルトの名無しさん mailto:sage [2015/10/17(土) 00:41:26.06 ID:XvNYZLvx.net] C#のことは全然知りませんが static int f<T>( T args ) { return hoge( args ); } これではダメなんですかね?
179 名前:デフォルトの名無しさん mailto:sage [2015/10/21(水) 08:22:48.75 ID:bMkc0D2x.net] 独学なので教えて欲しいのだけど メソッド書いたときにほとんどの場合returnに戻り値を付けずにクラスのフィールド値を書き換えて すませているんだけど、パフォーマンス的にそれでもいいの? 書き方の作法として、できるだけ戻り値で返してフィールドに 値を残さないとかそういうものってあるのかな
180 名前:デフォルトの名無しさん mailto:sage [2015/10/21(水) 10:58:03.82 ID:/9+8IY9r.net] パフォーマンスを聞きたいのか作法を聞きたいのか焦点がぼけてる
181 名前:デフォルトの名無しさん mailto:sage [2015/10/21(水) 10:58:33.71 ID:TCTaTEQd.net] 作法というかメソッドの目的による。 object.ToString が文字列を返さないとか、object.setValue が値を返すがフィールドを変化させないとかが合理的だろうか?
182 名前:デフォルトの名無しさん mailto:sage [2015/10/21(水) 11:01:30.64 ID:t8SS3rgX.net] すごい、こんぽんてきなところで、C#とまったくむかんけいなしつもんだ…
183 名前:デフォルトの名無しさん mailto:sage [2015/10/21(水) 12:36:32.28 ID:NrGyflQ0.net] >>179 「C# プロパティ」で検索するときっとピッタリのものが見つかる
184 名前:デフォルトの名無しさん mailto:sage [2015/10/21(水) 17:25:02.26 ID:vLvdh1RP.net] 自動実装プロパティだとJITが最適化してくれるからほぼフィールドアクセスと変わらない。 というか、その程度、気にしたところで誤差の範疇でしかないだろ
185 名前:デフォルトの名無しさん mailto:sage [2015/10/21(水) 18:39:25.56 ID:DYiNz1wT.net] ASP.Netが今度色々今っぽいグラントとか載るみたいやけど 皆々様はウェッブ開発はC#とNodeならどちらが樂ですか? ASPでフロントにReactjs使ってる人、いるのかなあ。日本語のやってます情報ひとつもない
186 名前:デフォルトの名無しさん mailto:sage [2015/10/21(水) 18:50:00.22 ID:/9+8IY9r.net] nodeはようやくLTSが出たばっかりだし C#を使ってるくらいだから「ようやくプロダクション時の候補として選べるな」くらいに思ってんでは
187 名前:デフォルトの名無しさん mailto:sage [2015/10/21(水) 19:52:42.76 ID:QYO898Dn.net] web入門にはnodeの方が取っ付きやすいだろう aspは通信処理が隠蔽され過ぎてて初心者にはかえって入り難いと思う
188 名前:デフォルトの名無しさん mailto:sage [2015/10/21(水) 21:05:51.44 ID:6ZAFfyFg.net] >aspは通信処理が隠蔽され過ぎてて 例えば?
189 名前:デフォルトの名無しさん mailto:sage [2015/10/21(水) 21:12:22.08 ID:vLvdh1RP.net] ブラックボックスになってて、裏側で何してるかわかりにくいってことだろ
190 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 15:01:52.95 ID:EVhgfJB8.net] >>160 遅いけども serialPort1.ReadBufferSize の、値を大きくしてみ
191 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 16:18:31.37 ID:IMT9I6Q/.net] >>190 そんなの無関係。 受信バッファをオーバーフローしたデータは単に捨てられるだけ。
192 名前:デフォルトの名無しさん mailto:sage [2015/10/22(木) 16:22:15.21 ID:IMT9I6Q/.net] ああ、フロー制御された場合を想定してるのか。 一応ありうるけど可能性は低いな
193 名前:デフォルトの名無しさん mailto:sage [2015/10/23(金) 06:05:58.46 ID:GwYAWrq0.net] オブジェクトの初期化(フィールドの復元)は、コンストラクタで行うべきだと痛感した。 このオブジェクトの通常のsetプロパティーを使って、初期化(フィールド復元)コードを作成したら、 妙なバグに悩まされて、6時間!(見当をつけたメソッド内に、デバッグ用の変数をあちこちに設置して、ようやく見つけた。) この通常のsetプロパティの正常な動作は、同じgetプロパティーに依存するようになっていた。(自分でそのように作っていた) 以下、バグ発生の仕組み↓ 1、setアクセサで「プライベート変数を初期化」しようとする。これが目的である。(プライベート変数は初期化できていない。) 2、setアクセサ内には、getアクセサ経由で「同プライベート変数」に依存するコードが存在している。ところが、この変数はまだ初期化されていない。 3、初期化されていない変数の影響で、setアクセサがおかしい動作をする。(変数は初期化されないまま。)!バグ発生! もし、ここで、コンストラクタを使って、直接プライベート変数を初期化していたら、こんなことにはならなかった。 そしてオブジェクトにアクセスして、setアクセサでさらに値を変更しても、 たとえsetアクセサ内でgetアクセサに依存するコードがあったとしても、動作していた。 長くなりましたが、おねがいします。 (1)setアクセサ内で、同じプロパティのgetアクセサに依存するコードを書くことは、良くないんでしょうか。禁則に当たりますか? (2)オブジェクトの初期化は、絶対に、コンストラクタで行うべきでしょうか。 (3)熟練プログラマは、デバッグせずとも、エスパーでバグの住処を言い当てられるのでしょうか。 (「思い込み」から逃れられずに、早々に詳細なデバッグをかけず、結局6時間もかかってしまいました。) (4)バグが、VisualStudioで開いている方のプロジェクトでなくて、 別のソリューションでビルドされたdllファイルに閉じられたクラスに存在する場合、 デバッグをかけるために、わざわざ別ソリューションのその対象のクラスのみをこちらのプロジェクトにコピー&ペーストして一度統合するしかないんでしょうか。
194 名前:デフォルトの名無しさん mailto:sage [2015/10/23(金) 07:36:25.62 ID:FoOVnDir.net] >>193 問題を履き違えている (1) プロパティに限った話ではない。 今回「デバッグに時間がかかった」のは別のメソッド(getter)経由で未初期化フィールドを参照していたことに 気づかなかったためであり、同じプロパティのgetアクセサに限らず一般のメソッドであっても 「同プライベート変数」でなくても問題は発生しうる。 結局自分の書いたコードの動作を理解していないことが原因であって、規則で縛ってどうにかなる問題ではない。 (2) 問題の本質ではない。絶対に、動作を自分で理解していないコードを書かないこと。 とはいえ常に最小粒度の命令レベルまで全て把握しろというのは無理な話なので、 理解しやすくするためにカプセル化や不変オブジェクトなどの様々な手法が存在する。 コンストラクタでまとめて直接初期化する方が理解しやすいのならそうすればいい。 (3) エスパーできるかどうかは経験の問題だが、デバッグするにしてもコードの各地点でそれぞれ どういう状態になっていてほしいのかを正しく理解していれば問題箇所の特定は機械的にやれるはず。 そのとき把握する必要のある情報の範囲が狭いほどデバッグは容易なので、 一般的にはなるべくそれを局所化するのがデバッグしやすいコードを書くコツ。 (4) pdbファイルがあればデバッグ可能。
195 名前:デフォルトの名無しさん mailto:sage [2015/10/23(金) 08:00:05.12 ID:VM5bh9Hg.net] 名前空間を複数形にするかどうかはどうやって決めればいいですか?
196 名前:デフォルトの名無しさん mailto:sage [2015/10/23(金) 13:10:38.44 ID:7JhC24+l.net] プロパティ内で色々やらせるのはよくないよな 例外処理できないし
197 名前:デフォルトの名無しさん mailto:sage [2015/10/23(金) 15:02:38.35 ID:+AiXCDdV.net] なんで例外処理できないと思った?
198 名前:デフォルトの名無しさん mailto:sage [2015/10/24(土) 12:04:22.22 ID:/s9N4mON.net] >>179 パフォーマンスも保守性も可読性も最悪 どうしても必要でなければオブジェクトの状態を更新してはならない
199 名前:デフォルトの名無しさん mailto:sage [2015/10/24(土) 17:04:51.29 ID:dOGyJCjw.net] >>179 クラス内で使い回すからそうしているんだろうけど、そのメソッドを利用する側はどういう結果を出されたかわからないわけです。まあフィールドを見ればわかるけど。それにクラスを分離しようとするときもフィールドに依存していると面倒なことになる
200 名前:デフォルトの名無しさん mailto:sage [2015/10/24(土) 17:17:56.73 ID:qC5jNYSK.net] >>199 問題を混同してるな。 それは本来必要のないはずのフィールドを持っちゃった場合の問題。 否定的な意見が多いけど、フィールドなりプロパティなり保持してるデータを更新するのに、 _hoge = GetHoge(); だろうが UpdateHoge(); だろうが同じこと。 前者の方が分かりやすいとかそんなことないよ。
201 名前:デフォルトの名無しさん mailto:sage [2015/10/24(土) 17:29:30.83 ID:tJFEMZX0.net] そもそも更新する必要があるのかは一考するべきだけどな。 更新することが目的ではなくて、その更新された結果を使って何かをするのが目的なんだろ? なら更新しなくてもその「何か」をするメソッドを直接呼び出せばいい。 そういう考え方を理解すると、プロパティや状態更新はかなり少なくできるようになるよ。
202 名前:デフォルトの名無しさん mailto:sage [2015/10/24(土) 18:03:13.79 ID:wB/X7nCW.net] 本人不在なのによく問題や目的を断定したりできるっすね 妄想力旺盛なようで羨ましい
203 名前:デフォルトの名無しさん mailto:sage [2015/10/24(土) 18:17:39.17 ID:qC5jNYSK.net] なるほど、お前さんの読解力の欠如の問題とは思わないんだ。 まあ、確かに質問者は>>200 に書いたように2つの問題を混同している可能性がある。 というか、まあたぶんそうだろう。 恐らく本当に知りたいのは戻り値を返さないメソッドの是非じゃなくて、 保持する必要のない一時データをフィールドで持つことの是非だろう。 こんなのはもちろん非に決まってる。
204 名前:デフォルトの名無しさん mailto:sage [2015/10/24(土) 18:56:14.20 ID:wB/X7nCW.net] その「たぶん」をいいたいが為に何分掛けたんすか? 君の人生って安いんだね
205 名前:デフォルトの名無しさん mailto:sage [2015/10/24(土) 19:01:56.68 ID:Qmn5VnV2.net] 休みの日に複数スレで煽りを入れているような人間が 一体誰を馬鹿にできるんだろうか? 底辺君
206 名前:デフォルトの名無しさん mailto:sage [2015/10/24(土) 20:21:21.69 ID:n9apvFnD.net] メソッドの戻り値で返す場合がしっくりする文脈もあるし、 メソッドがオブジェクトのフィールドの状態を変更して済ませた方が良い場合もあると思う。 対外的な文脈においては、戻り値で返す方がわかりやすいと思う。 自販機(オブジェクト)で言えば、ボタン(メソッド)を押せばジュース(戻り値)が出てくるような感じ。 そして、ジュースが売れたという事実は、自販機内のフィールドに記述される。
207 名前:デフォルトの名無しさん mailto:sage [2015/10/24(土) 22:24:05.60 ID:dOGyJCjw.net] >>200 Updateてメソッド名で戻り値がないなんて気持ち悪くて使いたくないな。
208 名前:デフォルトの名無しさん mailto:sage [2015/10/24(土) 22:34:23.98 ID:dOGyJCjw.net] 自分が初心者の時を振り返ってみると ひとつのクラスでなんでも済ませようとしたり、役割分担ができてないのが原因。恐らくそのクラスにあるのがおかしいメソッドだと思うよ。
209 名前:デフォルトの名無しさん mailto:sage [2015/10/24(土) 22:40:26.57 ID:fd/dB9hc.net] 更新するメソッドで戻り値がないのはよくあるだろ 返すとしたら更新したかどうかのフラグとか?
210 名前:デフォルトの名無しさん mailto:sage [2015/10/24(土) 23:06:00.58 ID:7oDBCbbL.net] >>207 Updateって単語から、更新すべき値が返ってくるとはあまり考えないな。 更新結果がbool値で返って来るのなら予想するけど。
211 名前:デフォルトの名無しさん mailto:sage [2015/10/25(日) 00:09:00.78 ID:e8QLZtXl.net] >>206 今回の場合その例えで言うと、ボタンは自販機の内側にあって外部から押せない状態で、 出てくるはずのジュースも自販機のどこかに落ち込んでるんだと思うよ。 だから自分でも違和感があるんでしょうよ。 それにパフォーマンスとかなんで初心者が考えるんだろうね。そんなこと考えるのはまともに動くアプリができてからやればいいのにって思いまーす。
212 名前:デフォルトの名無しさん mailto:sage [2015/10/25(日) 00:20:54.69 ID:e8QLZtXl.net] 最初の頃はカプセル化が理解できなかったな。実際全部自分で作っているわけだし内部構造も把握しているわけで、クラス利用する側も利用される側も全部自分なので発想の切り替えがなかなかできなかったよ。
213 名前:デフォルトの名無しさん mailto:sage [2015/10/25(日) 16:39:21.40 ID:1HXJB/EU.net] オブジェクト指向なんて学ぼうとしてはいけないと思うわ。 継承とかカプセル化とか、ある程度、複雑なものを作るときに初めて存在価値に気付くわけだし。
214 名前:デフォルトの名無しさん mailto:sage [2015/10/25(日) 16:42:50.05 ID:A/yOhDl2.net] ゴッドクラスを一つ作れば何も問題ない 神に任せれば何でもやってくれる
215 名前:デフォルトの名無しさん mailto:sage [2015/10/25(日) 17:55:25.32 ID:B7WANnu5.net] >>214 物が落下することを考える場合、 オブジェクト指向で、「物」に落下という動きを実装するのが一般的だと思う。 しかし、実際は、重力によって「物」が加速させられたわけだから、「地球」オブジェクトの重力イベントに、 各「物」のイベントハンドラーを登録する必要がある。 ゴッドは、ラッパーなんですか?
216 名前:デフォルトの名無しさん mailto:sage [2015/10/25(日) 18:03:56.15 ID:4FhC3Gim.net] >>215 物理シミュレーションなら あらゆる「物」の相互作用を「神」が計算して「物」の「力」プロパティを更新 それによって発生する「物」の変位を「物」の更新メソッドで求めて位置を更新 という流れになる
217 名前:デフォルトの名無しさん mailto:sage [2015/10/25(日) 18:11:18.28 ID:l/fL5071.net] そこまで神が計算をするなら >「物」の変位を「物」の更新メソッドで求めて位置を更新 もはや、これも「神」が計算すりゃ良くね?
218 名前:デフォルトの名無しさん mailto:sage [2015/10/25(日) 18:13:42.25 ID:UpnA5iMK.net] 世界をシミュレートするには世界の外に出ないといけない
219 名前:デフォルトの名無しさん mailto:sage [2015/10/25(日) 18:15:10.75 ID:MI/upuKE.net] なんだかアホな話になってるけど、三体問題って聞いたことないのかな
220 名前:デフォルトの名無しさん mailto:sage [2015/10/25(日) 18:29:46.19 ID:4FhC3Gim.net] >>217 力まで求められてるなら変位はオブジェクト自身の性質(質量や慣性モーメント)のみで決まるからオブジェクト自身に持たせてもいい
221 名前:デフォルトの名無しさん mailto:sage [2015/10/25(日) 18:45:02.54 ID:ip/vnDdd.net] くだらない話をしているうちに 文明はどんどん発達していく…
222 名前:デフォルトの名無しさん mailto:sage [2015/10/25(日) 18:49:08.47 ID:4coy8BX6.net] 文明(笑)
223 名前:デフォルトの名無しさん mailto:sage [2015/10/25(日) 19:52:20.96 ID:B7WANnu5.net] >>219 神でなければ実装できない処理の話のことですよね
224 名前:デフォルトの名無しさん mailto:sage [2015/10/25(日) 20:38:05.14 ID:1HXJB/EU.net] 神は神でも邪神だろw
225 名前:デフォルトの名無しさん mailto:sage [2015/10/25(日) 20:54:13.91 ID:ruGH96NV.net] どっちかというと貧乏神‥
226 名前:デフォルトの名無しさん mailto:sage [2015/10/26(月) 00:28:32.09 ID:i/Pr50pl.net] 異教徒どもめ
227 名前:デフォルトの名無しさん mailto:sage [2015/10/27(火) 17:46:22.69 ID:xjXQWbVB.net] コンボボックスのコレクションに動的に追加するのに、xmlを利用して設定ファイルとして作っておいて 読み込ませた後、いままではプロパティの値を一つ一つAddしてたんだけど、 項目が200ほどあるので格納用クラスのプロパティを配列に入れて一気に回したい プロパティを配列に一気に入れるには何か方法がありますか? (プロパティ名は連番をつけている Item001 Item002・・・)
228 名前:デフォルトの名無しさん mailto:sage [2015/10/27(火) 18:16:00.37 ID:sDzKh5al.net] >>227 それは、こんな感じのクラスがあるということか? class Hoge { public string Item001 { get; set; } public string Item002 { get; set; } .... public string Item200 { get; set; } } 非効率だがリフレクションでやれないこともない var tmp = new Hoge(); var items = tmp.GetType().GetProperties() .Where( x => x.Name.StartsWith( "Item" ) ) .Select( x => x.GetValue( tmp ) ) .OfType<string>() .ToArray();
229 名前:デフォルトの名無しさん mailto:sage [2015/10/27(火) 18:37:39.63 ID:AF18ul7Z.net] >>227 問題はそこじゃないだろ <items> <item>a</item> <item>b</item> <item>c</item> ・・・ </items> こういうxmlにして、読み込む段階でコレクションとして読めばいいだけのこと
230 名前:デフォルトの名無しさん mailto:sage [2015/10/27(火) 18:44:38.34 ID:LyVSHq6d.net] >(プロパティ名は連番をつけている Item001 Item002・・・) (ノ∀`)アチャー
231 名前:デフォルトの名無しさん mailto:sage [2015/10/27(火) 19:07:33.01 ID:iNYJ0klc.net] 俺はむしろLINQ使った方が読みやすいと思うがなあ。メソッド式の方ね。
232 名前:デフォルトの名無しさん mailto:sage [2015/10/27(火) 19:45:43.85 ID:lOeUxmUq.net] PropertyInfo[] info = obj.GetType().GetProperties();
233 名前:227 mailto:sage [2015/10/28(水) 00:46:39.63 ID:xiejTC4w.net] みなさんレスどうもです >>229 Listで一気に読みこませて無事コンボボックスに設定できました
234 名前:デフォルトの名無しさん mailto:sage [2015/10/28(水) 02:28:55.47 ID:EDNJzsKV.net] プロパティ200個って… 正気の沙汰ではない
235 名前:デフォルトの名無しさん mailto:sage [2015/10/28(水) 18:14:23.99 ID:rjKxrYR0.net] 業務システムではよくあること。 プログラミングの目的がプログラミングの人には信じられないかもしれないが。
236 名前:デフォルトの名無しさん mailto:sage [2015/10/28(水) 18:30:25.71 ID:3nTbM/Mv.net] あーこれはキリッってつけたくなるレスだわ 我慢できない プログラミングの目的がプログラミングの人には信じられないかもしれないが。キリッ
237 名前:デフォルトの名無しさん mailto:sage [2015/10/28(水) 18:41:16.23 ID:j5VggJ8Q.net] 未だに .NET 1.1を使ってそうだなw
238 名前:デフォルトの名無しさん mailto:sage [2015/10/28(水) 20:22:26.76 ID:lvqGKJHt.net] >>219 何だよそれ?
239 名前:デフォルトの名無しさん mailto:sage [2015/10/28(水) 20:40:08.70 ID:3nTbM/Mv.net] >>238 宇宙に2つの星しかないとする そうするとニュートン力学で簡単に振る舞いを記述できる しかし星が3つ4つと増えていくと互いに及ぼす重力の影響の計算が複雑になっていって 事実上計算不可能になるという問題のこと
240 名前:デフォルトの名無しさん mailto:sage [2015/10/28(水) 20:51:44.91 ID:8s7NCB3J.net] いやム板的には余裕で計算できるぞ 解析的に解けないだけだ
241 名前:デフォルトの名無しさん mailto:sage [2015/10/28(水) 21:06:10.72 ID:Q/PXF6pR.net] >>219 つまりジェットストリームアタックはかわせないって事?
242 名前:デフォルトの名無しさん mailto:sage [2015/10/28(水) 22:58:34.15 ID:zTRdryA5.net] 滑ってて悲しいね
243 名前:デフォルトの名無しさん mailto:sage [2015/10/29(木) 00:29:14.00 ID:pm6XZBWM.net] お前は踏み台にされたんだよ
244 名前:デフォルトの名無しさん mailto:sage [2015/10/29(木) 08:50:32.75 ID:D2KeTagd.net] さすがドム 滑りだけは上手だ
245 名前:デフォルトの名無しさん mailto:sage [2015/10/29(木) 11:20:17.03 ID:nhE9MuJP.net] ドム板だったのか
246 名前:デフォルトの名無しさん mailto:sage [2015/10/29(木) 15:05:47.50 ID:VvBy2VYR.net] >>240 そこまでは、神は与えなかったんですね。 「計算機でも作って、回せなww」
247 名前:デフォルトの名無しさん mailto:sage [2015/10/31(土) 21:53:19.69 ID:iqPkH1iD.net] オブジェクト指向は必要ないとかいって aspx.csファイルのコードが30Kstepのプログラム作ってるやつ
248 名前:デフォルトの名無しさん mailto:sage [2015/10/31(土) 21:57:36.78 ID:9dOg6vGq.net] 少数精鋭でまともに作ったら数分の1の工数でできちゃうことが客にバレたら業界が崩壊するからな 世の中クソコードのおかげでうまく回ってるんだからそれでいいんだよ
249 名前:デフォルトの名無しさん mailto:sage [2015/11/01(日) 10:36:19.05 ID:e1qJyonr.net] linuxはいまだにcなんだろ オブジェクト指向に移行したらいいのに
250 名前:デフォルトの名無しさん mailto:sage [2015/11/01(日) 11:44:17.28 ID:8yFkftFr.net] 以下、LinusによるC++罵倒文禁止
251 名前:デフォルトの名無しさん mailto:sage [2015/11/02(月) 08:06:06.56 ID:c5cJUF33.net] 実行時に動的に読み込むアセンブリにある型をAssemblyクラスのGetTypeではなく TypeクラスのGetTypeで取得する方法はありますか?
252 名前:デフォルトの名無しさん mailto:sage [2015/11/02(月) 10:41:52.13 ID:bqedN87E.net] ロード済みなんであれば、完全限定修飾名指定すればとれるけど たとえばSystem.Windows.Forms.Formならこういう名前 System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
253 名前:デフォルトの名無しさん mailto:sage [2015/11/02(月) 10:51:18.97 ID:6BSNMQg5.net] timer.Tick += ( s, e ) => { ....; timer.Stop(); timer.Dispose(); GC.KeepAlive( timer ); }; こういうGC.KeepAliveに意味ある?
254 名前:デフォルトの名無しさん mailto:sage [2015/11/02(月) 10:55:28.48 ID:lz5NDAKO.net] >>253 その場合は、無意味。
255 名前:デフォルトの名無しさん mailto:sage [2015/11/02(月) 10:56:46.82 ID:dQRiL6jM.net] ない System.Windows.Forms.Timerが動作中にGCされることはない
256 名前:デフォルトの名無しさん mailto:sage [2015/11/02(月) 11:52:26.99 ID:6BSNMQg5.net] なるほど! GCHandle.Alloc/Freeしてるみたいだ