C#, C♯, C#相談室 Part89at TECH
C#, C♯, C#相談室 Part89 - 暇つぶし2ch1:デフォルトの名無しさん
15/09/26 21:43:29.25 Eb5jOjH8.net
■Visual Studio 2013 Community & Express(無償の統合開発環境)等はこちら
URLリンク(www.visualstudio.com)
■コードを貼る場合はこちら
URLリンク(ideone.com)
■前スレ
C#, C♯, C#相談室 Part88 [転載禁止]©2ch.net
スレリンク(tech板)
■次スレは>>970が建てる事。
建てられない場合は他を指定する事。

2:デフォルトの名無しさん
15/09/26 21:58:07.51 W4J0LT9H.net
      __/l.
     /    トi `ヨ
   _ノ <◎》 ヒi・ ヨ ,.、
  /´        ヾニ'ノ    
  | i  ,    i ,,,.ノ'ヽニニ 7  
  レしイ`ー一レi. |   //,、
    ̄       ̄   Lニニノ

3:デフォルトの名無しさん
15/09/27 00:36:06.41 Z8eHkRE5.net
前スレの987です
ipcとsendmessageの違い説明してもらってありがとう
追加で聴きたいんだがipcで文字列をサーバー側に送信するときってどうするの?
それらしいメソッドも見つけられなかった

4:デフォルトの名無しさん
15/09/27 00:41:55.03 PJ9cwNS0.net
WCFでおk

5:デフォルトの名無しさん
15/09/27 10:26:53.27 ULqoDcvQ.net
Wcfはやめておきな
もうオワコンだよ

6:デフォルトの名無しさん
15/09/27 18:35:43.95 yseIsr3i.net
双方をサーバーにすればいいんじゃね?

7:デフォルトの名無しさん
15/09/27 19:58:59.91 jTsd9hQM.net
色々と汎用性を考えたらsendmessageの方が有用だったのでそっちに変更したことアリ

8:デフォルトの名無しさん
15/09/28 20:21:14.51 47Omh4YI.net
WPF何で勉強すりゃいいんだ...
ググっても初歩的なのしか出てこないし
書籍も良さげなのないし
知恵袋だかどっかではMSのHPのサンプル動かして
あとはオープンソース探して勉強しろとか言われてるし
MVVMの勉強は別でやるべきなのか?

9:デフォルトの名無しさん
15/09/28 20:31:06.99 nBHOHTmc.net
WPFは勉強しないが正解
来年で10年になるけど誰も使ってない

10:デフォルトの名無しさん
15/09/28 20:43:39.05 W1n2yTQ9.net
今の.NET標準のUIはASP.NET MVCだよ

11:デフォルトの名無しさん
15/09/28 20:47:17.03 5W5jv3ql.net
↑どうしようもないバカ

12:デフォルトの名無しさん
15/09/28 20:49:25.64 KOu+cy7g.net
formのほうがいい?

13:デフォルトの名無しさん
15/09/28 21:06:03.74 VHL/k6m8.net
WPFのサンプルコードとかあるけど有名人の書いたコードでもダウンロード数が300とかだぞ
全世界で300人しか食いつかないんだぞ?

14:デフォルトの名無しさん
15/09/28 21:14:57.50 VHL/k6m8.net
WPF触ってやめた人は数十万~数百万人いるのではないだろうか?
食わず嫌いって事じゃなくて食って嫌いって人が多いと思う
これからも普及しないから勉強する必要はない

15:デフォルトの名無しさん
15/09/28 21:17:27.18 xzhasA3e.net
silverlightで業務アプリ作っていた会社、元気にしてるかな

16:デフォルトの名無しさん
15/09/28 21:24:29.26 ySQbp+8d.net
>>15
リプレイスで金稼げるじゃん

17:デフォルトの名無しさん
15/09/28 21:25:19.52 ZQcFjZzd.net
windowsの業務系アプリケーションってformで作られてんの?

18:デフォルトの名無しさん
15/09/28 21:26:29.62 VHL/k6m8.net
知り合いの会社がd社h社y社からsilverlightの仕事受注してたな…
目から水が出てくる…

19:デフォルトの名無しさん
15/09/28 21:33:07.03 VHL/k6m8.net
>>17
VB6アプリ→javaアプリ→htmlベースってところじゃないか?
うちのはc++で主要コンポーネントを作ってwinformに貼ってる

20:デフォルトの名無しさん
15/09/28 21:36:36.53 HHlxPx6I.net
wpfってそんなに人気無いのか
インターフェースがいじりやすいからよく使ってるんだが

21:デフォルトの名無しさん
15/09/28 21:39:16.67 FPjw0UTs.net
糞フォームよりはきちんと設計してあるしよくできてる
だが良いものが普及するとは限らないのだよ
WPFの普及度は最悪だ

22:デフォルトの名無しさん
15/09/28 22:12:50.86 DtOAXIl6.net
>>3
MarshalByRefObjectを継承した通信用のクラス作ったろ
そいつにメソッド実装すりゃいいんだよ

23:デフォルトの名無しさん
15/09/28 22:14:39.79 W1n2yTQ9.net
今更.NET Remotingとか時代錯誤にも程があるだろ

24:デフォルトの名無しさん
15/09/28 22:15:33.10 ZyrUKPY2.net
まぁ普通にWCF一択だな

25:デフォルトの名無しさん
15/09/28 22:17:17.31 i42L2seC.net
asp.net MVCはまだ使われてる?

26:デフォルトの名無しさん
15/09/28 22:42:48.02 DtOAXIl6.net
WCFは大げさすぎな時があるだろ
ちょっとプロセス間通信したいだけなのに

27:デフォルトの名無しさん
15/09/28 22:53:57.68 qO0J1M5O.net
Wpfの問題の一つは、素で全てのイベントがバインド出来ないことだな
ビヘイビアなんか簡単なものだが、そこまで辿り着く前にギブアップする人も多い

28:デフォルトの名無しさん
15/09/28 22:55:37.93 W1n2yTQ9.net
Remotingと比べて特に大袈裟とは思わないが
使ったことないだけじゃね?
まあWXX系の名前が付いてるだけで大袈裟そうなイメージがあるのは分かるが、
WCFに関しては比較的シンプルだしフレームワークというほどアプリの構造を規定するようなものでもない

29:デフォルトの名無しさん
15/09/28 23:44:53.25 vgM4ZS+6.net
Asp.net Web apiがあるからなぁ
セキュリティ要件とか何らかの理由がなければWcfは使う価値観無し

30:デフォルトの名無しさん
15/09/28 23:46:10.93 A3yzbLho.net
WCFは初期の説明がどこも駄目すぎた
あれじゃappconfigにしか接続先書けんように誤解する

31:デフォルトの名無しさん
15/09/29 00:04:10.31 oOGIUwwe.net
WCFでセルフホストして名前付きパイプでバインディングするだけの簡単な作業だな

32:デフォルトの名無しさん
15/09/29 00:11:50.95 xUqh6GV8.net
ついでにサンプルがほぼ全部SOAPなのもあかんかった
IIS建てるくらいなら普通にHTTPアクセスするわ

33:デフォルトの名無しさん
15/09/29 16:18:05.62 NDjZX+li.net
>>8
WPFはXAMLの書き方とバインディングをさらっと勉強して
後はMVVMの理解に時間を費やすべきだろう。
つーかMVVM理解してないと正しいWPFの使い方が分からんと思う。

34:デフォルトの名無しさん
15/09/29 19:28:07.46 acQqRnNE.net
>>33
やっぱそういう感じか
MVVMパターンなフレームワークって他にある?

35:デフォルトの名無しさん
15/09/29 22:00:16.22 NcGQK+Xr.net
WCFはシステムにごみを残すから…

36:デフォルトの名無しさん
15/09/29 22:02:36.62 NcGQK+Xr.net
WPFはメモリリーク問題のころにいろいろと嫌な思い出があるのでそこでやめた

37:デフォルトの名無しさん
15/09/29 22:25:47.17 +KF25K9W.net
>>34
最近はMVVMというとWebのデザインパターンだよ
ビューに特化したモデルにUIをバインドするってのは
モダンなWeb開発じゃ普通に行われてる
VueとかKnockoutとかAngularとか

38:デフォルトの名無しさん
15/09/29 22:54:19.79 qVFuDZbI.net
WebのMVVMフレームワークの楽さは段違いだけどね
なんでこんなに野暮ったい作りにしたのかね
WPFは

39:デフォルトの名無しさん
15/09/29 23:14:37.99 5ZVAdYEK.net
Mvvmはダイアログとか逆にめんどくせえよ
素人のお客様はダイアログメッセージ大好きだから使わないってわけにもいかないしくそが
mvpのほうが日本の現場のやり方に適合してる

40:デフォルトの名無しさん
15/09/29 23:18:26.71 SqFlqVze.net
逆じゃねーだろ。
冗長化することで疎結合を図るもんなんだから順だろ。

41:デフォルトの名無しさん
15/09/29 23:25:56.44 NcGQK+Xr.net
単にコード書けばいいだけなのに宗教論争が出てくるところがうざい

42:デフォルトの名無しさん
15/09/30 00:06:14.04 u3/16ewm.net
WPFはDobonみたいなサイトがないのが辛い

43:デフォルトの名無しさん
15/09/30 00:17:50.71 P6f9n+3Y.net
>>37
angularは少し触ってるんよね
双方向バインドとかはいいんだけど
DIあたりがまだいまいち...

44:デフォルトの名無しさん
15/09/30 14:10:35.76 /7e79CqG.net
WPFはビデオアクセラレータ詐欺が致命的
速くねえんじゃ面倒なだけやん

45:デフォルトの名無しさん
15/10/01 17:21:34.69 ASS/6Yz0.net
>>42
流行ってないから作る人もいないと言う事?

46:デフォルトの名無しさん
15/10/01 20:20:50.31 TZq8STMW.net
絶対に移行したくないでござるから
PHP5.2もStruts(無印)もVB6もバリバリ現役でござる

47:デフォルトの名無しさん
15/10/03 00:09:13.50 Keh2Ns9c.net
イベントソーシングの利点が分かりません
C#のサンプルでメリットを説明してくだだい

48:デフォルトの名無しさん
15/10/03 01:47:55.03 lM4fZrRH.net
将棋アプリとかの再生機能。

49:デフォルトの名無しさん
15/10/04 00:20:49.49 Vt6Jil15.net
オーバーライドを強制しないインターフェイスって定義出来ませんか?
オーバーライドしなかった場合空のメソッドを暗黙的に実装して、戻り値がある場合は初期値(nullや0やfalse)を返すようにしたいです。

50:デフォルトの名無しさん
15/10/04 00:24:15.38 E3In34i6.net
Javaに転職して下さい

51:デフォルトの名無しさん
15/10/04 00:26:36.62 K/b1ABC4.net
インターフェースのデフォルト実装はできない
拡張メソッドで頑張れ

52:デフォルトの名無しさん
15/10/04 00:29:17.30 2RSKP97g.net
インターフェースじゃなくて抽象クラスじゃダメなの?

53:デフォルトの名無しさん
15/10/04 00:31:22.57 Vt6Jil15.net
>>50
javaから来たんだがjavaってそんな事出来た?

54:デフォルトの名無しさん
15/10/04 00:47:11.48 sYhIU9Uv.net
俺もjava出身だけどできた記憶はねえな

55:デフォルトの名無しさん
15/10/04 00:47:22.38 GuH6DZcU.net
今のJavaはできる

56:デフォルトの名無しさん
15/10/04 00:50:36.50 sYhIU9Uv.net
へえ、java8からdefault methodsなんてのが入ったのか

57:デフォルトの名無しさん
15/10/04 00:51:05.31 Vt6Jil15.net
java凄いな

58:デフォルトの名無しさん
15/10/04 00:51:44.63 Vt6Jil15.net
>>56
えっ俺3ヶ月前にjavaから移ってきたけどそんなの知らんぞ

59:デフォルトの名無しさん
15/10/04 00:54:15.30 K/b1ABC4.net
お前が勉強してないだけだろ

60:デフォルトの名無しさん
15/10/04 00:55:28.30 z9vnEhIM.net
スッキリJAVA入門にも書いてあったと思うぞ..

61:デフォルトの名無しさん
15/10/04 02:31:21.63 /6Igeukh.net
なんか筋悪そうな機能だな。
そもそもインターフェイスって何だっけって思っちゃう。
C#が出た時、Java界隈のOOP原理主義者みたいのが凄い拒否反応だったような記憶があるけど
そういう連中が何て言ってるのか聞いてみたい気がする。

62:デフォルトの名無しさん
15/10/04 02:45:56.51 rWuKCJFV.net
高木のひろみちゅがdelegateをさんざっぱらディスってた頃が懐かしいのう

63:デフォルトの名無しさん
15/10/04 02:53:35.34 iiWOg/+e.net
インテリはいつだって過激なことしかやらないからね
ちかたないね

64:デフォルトの名無しさん
15/10/04 03:15:03.16 zHOzyLwf.net
>>61
なんで?
インタフェースがあってデフォルト実装を持たすだけじゃん。
頭硬い

65:デフォルトの名無しさん
15/10/04 04:23:37.92 sYhIU9Uv.net
昨日言ったことなんて覚えていないさあ

66:デフォルトの名無しさん
15/10/04 06:21:43.98 mWTPZ0uY.net
今のJAVAは
new Thread( () -> {System.out.println("sub thread");} )
だからな

67:デフォルトの名無しさん
15/10/04 19:20:20.48 BBaweDvN.net
LINQを初めて知った時に
求めていたものはこれだっ!って感動しました
みなさんはどうでした?

68:デフォルトの名無しさん
15/10/04 19:40:29.64 k/Vv5opt.net
ドメインモデルアンチパターンは完全に終わったなって思った

69:デフォルトの名無しさん
15/10/04 19:47:10.70 n9SWOsb2.net
LINQ見たときは、読みづれーなー、と思いました

70:デフォルトの名無しさん
15/10/04 20:04:20.62 FsLwYc7A.net
>>67
最初だけだった。
linq使いまくるとコードが読みづらい。
今では滅多に使わない

71:デフォルトの名無しさん
15/10/04 20:40:06.35 F7DfZVqD.net
Linq使いまくるとコードが読みにくいって
どんなコード書いてんだよw

72:デフォルトの名無しさん
15/10/04 20:47:27.03 BBaweDvN.net
>>70
滅多に使わないってことは
コレクション操作するときも
foreachとif文書く感じ?
普通メソッド形式で書くだろうから
whereで絞って、selectして、orderbydescして、先頭n個取って来る
みたいにメソッドチェーン通りに処理が分かると思うんだけど。

73:デフォルトの名無しさん
15/10/04 20:50:57.86 FsLwYc7A.net
>>72
そのとおり。

74:デフォルトの名無しさん
15/10/04 21:07:29.40 F7DfZVqD.net
>>73
いやーどう考えても foreach と if 文オンリーの方が
コードが読みにくくないか?

75:デフォルトの名無しさん
15/10/04 21:16:05.68 FsLwYc7A.net
>>74
そんな事ないわよ。for if で十分よ。

76:デフォルトの名無しさん
15/10/04 21:18:52.52 F7DfZVqD.net
>>75
そこまで言うなら何も言わないわ
☆(ゝω・)vキャピ

77:デフォルトの名無しさん
15/10/04 21:19:07.05 X+pziR5V.net
こーゆーのがレガシーコードを量産するのね

78:デフォルトの名無しさん
15/10/04 21:19:12.76 2RSKP97g.net
>>72
読み辛いって言っているのは多分ラムダ表記のことなんじゃない?
あのメソッドチェーンが読み辛いなんてことは流石に無いと信じたい

79:デフォルトの名無しさん
15/10/04 21:27:17.53 GuH6DZcU.net
for if の方が意味的な密度が下がるからある意味読みやすい
COBOLの
ADD 1 TO HOGE.
MOVE HOGE TO OUTPUT_HOGE.
が読みやすいというのと一緒

80:デフォルトの名無しさん
15/10/04 21:32:09.27 F7DfZVqD.net
レガシープログラマの鑑だな

81:デフォルトの名無しさん
15/10/04 21:43:56.71 zHOzyLwf.net
linqはインテリセンスが汚染されるから、データ処理がメインじゃなきゃforeachで回すな

82:デフォルトの名無しさん
15/10/05 00:47:56.95 LmMVGWnX.net
気分で決めるかな
気分で物事を決められる立場にいるから

83:デフォルトの名無しさん
15/10/05 01:19:30.73 IBdfcwn9.net
ニートとか?

84:デフォルトの名無しさん
15/10/05 01:43:47.39 7gRuVKiR.net
やまだくん、座布団持ってきて!

85:デフォルトの名無しさん
15/10/05 01:55:09.54 b3HB7/qz.net
linqを知らない人は読めないが、逆は読める
ならforで回してるほうが読みやすいということだ(QED)

86:デフォルトの名無しさん
15/10/05 07:51:51.63 Hq8/NA/P.net
さすがにC#やっててLINQも使えない奴に合わせる必要ないでしょ

87:デフォルトの名無しさん
15/10/05 11:13:15.36 1iyaU5vD.net
メソッド形式ばっかり使ってるわ。
クエリ式はやっぱり読みづらいし感覚的に好きになれない。

88:デフォルトの名無しさん
15/10/05 12:54:06.99 6whxSJRO.net
メソッド式に虫酸が走る俺はどうやら少数派のようだ
クエリ式では出来ないこともあるから嫌々使うこともあるけど

89:デフォルトの名無しさん
15/10/05 13:50:25.54 Hq8/NA/P.net
クエリ形式のがいいとか言ってるのは
SQL大好きな老害とかやろなぁ
jQueryでメソッドチェーンしないんだろうか

90:デフォルトの名無しさん
15/10/05 14:04:40.42 4nGRPUCN.net
そこで低品質の代名詞樽jQueryが出てくるのはギャグのつもりなのか?

91:デフォルトの名無しさん
15/10/05 15:29:13.32 l+YmXvD7.net
LINQ使おうが使うまいがコードの読みやすさはコーダーの品質に依存する
一般的に言って、新しい物を知っているコーダーはそうでないコーダーに比べて品質が高い傾向がある
LINQ使わないとしてもね

92:デフォルトの名無しさん
15/10/05 15:39:00.45 Gxee2tr0.net
自分が書いたコードをここに貼って見せなさいよ。

93:デフォルトの名無しさん
15/10/05 19:38:50.94 b/j1ivXN.net
Linq 使わないって言ってるレガシーオヤジは 
Entity Framework とか使ったこと無いのか?w

94:デフォルトの名無しさん
15/10/05 19:43:12.16 wH6k7s5h.net
EF使ってなくともコレクション操作でお世話になるからなあ

95:デフォルトの名無しさん
15/10/05 21:41:26.63 m/PM7Fjo.net
EntityFrameworkって
ストレスフルなだけのゴミからスクラップ廃材くらいには
レベルアップしたの?

96:デフォルトの名無しさん
15/10/05 21:45:04.36 AH/y3T7l.net
少なくともウンコ盛りのアホな設定ファイル群は要らなくなった
ただ廃材でないかどうかは微妙

97:デフォルトの名無しさん
15/10/05 23:49:44.26 tRTFuR2/.net
Rxのことも忘れないでください
クエリ式は、ラムダの記述を減らせるのがメリットだと思う
後、EFだとSQLがイメージし易い

98:デフォルトの名無しさん
15/10/05 23:59:02.02 1LF/2R+b.net
>>91
> 一般的に言って、新しい物を知っているコーダーはそうでないコーダーに比べて品質が高い傾向がある
そんなの聞いたことないし、単なる思い込みだろ
この手の思い込みが激しい奴のコードの品質は低い傾向があるみたいだけど w

99:デフォルトの名無しさん
15/10/06 00:16:06.89 TrEyw8kb.net
まあ人間いろんなタイプがあるから一概には言えんよ。当たり前だけど。
フットワークが軽くて新しいこととかトリビアルな知識はやたら持ってるけど
応用力とか設計力がない(要するにあんまり地頭が良くない)タイプもいるし、
逆にせっかくそこそこ知能は高いのに勉強嫌いで古い知識で止まってるタイプもいる。
オールマイティータイプもいる(これはごく少数だけど)

100:デフォルトの名無しさん
15/10/06 00:48:20.22 yuX2pqxS.net
新しい技術に脊髄反射で拒否反応を示す
職場のお荷物のIT土方が湧いてるなw

101:デフォルトの名無しさん
15/10/06 00:51:55.15 yuX2pqxS.net
>>98
お前みたいなのはレガシーコードを書いているという自覚すら無い
コピペプログラマだ

102:デフォルトの名無しさん
15/10/06 01:05:12.17 TrEyw8kb.net
>>101みたいのを見てると精神分析学を知らないことは幸せなことだと思う。
自分の言動の(本当はみじめで哀れかもしれない)動機を本人は知らずに済むのだからな。

103:デフォルトの名無しさん
15/10/06 01:06:18.36 mXRqVUnf.net
>>101-102
思い込み君チース w

104:デフォルトの名無しさん
15/10/06 01:31:09.57 yuX2pqxS.net
久しぶりに覗いてみたけど
2chのマ版はすっかり過疎ってるしレベルも極端に低い
匿名掲示板の限界かw

105:デフォルトの名無しさん
15/10/06 01:41:40.66 mXRqVUnf.net
マ板?
レベル以前の問題だな
こいつのコード、レビューしたらこの手のミスがボロボロ出てくるんだろうな w
それ以前にコード書けるかどうかは知らんけど

106:デフォルトの名無しさん
15/10/06 07:04:31.85 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:デフォルトの名無しさん
15/10/06 07:30:25.83 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:デフォルトの名無しさん
15/10/06 12:38:22.34 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
15/10/06 12:39:00.18 14/sy/Q9.net
メソッド名に続くこういうジェネリック型指定、たとえばMethod<T1,T2>のような書き方は普段はつかっていませんでした。
Methodは引数の型だけを意識していました。
普通のクラス内にメソッドを定義するときにも、こういう形式は使えるんだと思いました。(質問 B:以下のコードは正しいでしょうか。)
public string Method<T1>(T1 z)
{
return T1.ToString();
}
ありがとうございます。

110:デフォルトの名無しさん
15/10/06 13:10:56.41 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
15/10/06 14:34:29.84 14/sy/Q9.net
>>110
すみません、ありがとうございます。
>Foo.extendedMethod( hoge, x=>x.y );
this修飾子は、呼び出す側には不要ってことなんですね。

>return z.ToString();
そうか、引数定義で指定したメソッド内変数zが、ジェネリックT1で型打ちされているから、
これでいいわけか。
なるほど。ありがとうございます。
あとは、コンパイラに指摘されながら、覚えていきたいと思います。

ご親切にお相手くださってありがとうございました。

112:デフォルトの名無しさん
15/10/07 12:05:17.27 tDhsttHF.net
sharpdevelopでリリースビルドしようとするとエラーでる
log4netは32bitでターゲットcpuをanycpuにしてるからっぽいんだがどうやったらターゲットをx86にできんの?

113:デフォルトの名無しさん
15/10/07 12:20:03.23 40NgKpJy.net
さすがに今時SharpDevelopはないわ
WinならVSCE, MacやLinuxならVSCodeかMonoDevelop

114:デフォルトの名無しさん
15/10/07 12:52:22.89 1Tzy0x1l.net
LINQすら使えないやつは、C#使うんじゃねーよww

115:デフォルトの名無しさん
15/10/07 13:17:18.10 9sdQQKJG.net
芝は心の安寧を求める意識の現れ

116:デフォルトの名無しさん
15/10/07 19:26:33.40 F4sBdgXs.net
テストをインチキプログラムで突破する類似品に注意vwvwvwvw

117:デフォルトの名無しさん
15/10/07 20:53:19.01 B5U/bW9V.net
Enumeratorってなんて発音するの?
いーなめれいたー?  えにゅみれいたー?
paramsってぱらむすでいいのかな

118:デフォルトの名無しさん
15/10/07 21:10:26.95 LRcqoY9G.net
発音記号を見ろ
無理やり日本語読みすると「いなむれーた」と「ぱらむ」で過半数程度には通じる

119:デフォルトの名無しさん
15/10/07 22:50:51.42 3pa+NQnn.net
えにゅーめらぼー

120:デフォルトの名無しさん
15/10/09 03:17:38.95 AWj2PSbP.net
あるクラスがあって、このクラスに継承可能で複数設定できる属性がつけられてる
このクラスを継承すると、その属性も継承するわけだが、属性は継承したくないんだ
継承したクラスで、元のクラスについてる属性消す方法ってないかな?

121:デフォルトの名無しさん
15/10/09 03:21:23.16 bnFBmvSl.net
属性にはスコープをつけられる。
継承したら無効とか。
継承元の属性をいじれない場合はしらん。

122:デフォルトの名無しさん
15/10/09 03:42:47.55 AWj2PSbP.net
>>121
属性そのものをいじりたいんじゃなくて、継承元クラスについてる属性を消したいんだよ
その継承元クラスについてる属性のAttributeUsageはInherited=true, AllowMultiple=trueだが
それを変えたいわけじゃない

123:デフォルトの名無しさん
15/10/09 16:27:25.69 1E5VI5Cy.net
まあ無理だろ
読み取る側が継承してる属性なんか取ってこなくていいって言うことはできるけど

124:デフォルトの名無しさん
15/10/09 17:31:11.35 AWj2PSbP.net
>>123
やっぱり無理か
読み取り側を変更するぐらいなら、渡すクラスも一から自作するわ
なんでプロパティじゃなくて属性なんかで設定するようにしやがったんだろう
なんとなく使い分けてるけど
プロパティで実装するべきか、属性で設定するべきか、使い分けの指針とかあるのかな?
設定する基準がインスタンス単位かクラス単位か?

125:デフォルトの名無しさん
15/10/09 19:38:57.34 Zss3YWYL.net
>プロパティで実装するべきか、属性で設定するべきか
全然別物だろ
ラップしたら

126:デフォルトの名無しさん
15/10/09 21:07:35.97 CFgeSmkK.net
カスタム属性は、メタ情報というかタグというか…
例えばEnumのフィールドに別名(日本語名)が欲しい場合に使う

127:デフォルトの名無しさん
15/10/09 21:14:25.60 0JeYvXK2.net
メタ情報は必要だけど
メタ情報で日本語書くよりは
Enumのメンバーを日本語にするのが吉

128:デフォルトの名無しさん
15/10/09 21:25:12.13 AWj2PSbP.net
>>126
メタ情報っていう用語も実際のとこ、俺にはちゃんと説明できない用語だが
単なるタグだっていうなら、動作に影響するようなものは属性で制御すべきじゃないのかと
たとえば検証に関してなら、エラーメッセージは属性が適当かもしれんが
最大桁数や、エラーチェックするかどうかは属性で制御するのが適当だろうか?
>>127
それはまさに、通常の情報なのかメタ情報なのかの違いだと思うが
その意見は、メタ情報じゃなく通常の情報としてインプリメントしろって意見だろ

129:デフォルトの名無しさん
15/10/09 21:36:36.32 CFgeSmkK.net
>>128
例えばデータを格納するプロパティに属性付けて最大桁数やらチェック種別Enumを入れるのもいいよ
エラー種別Enumにはエラー検証用の正規表現付けたり
エラーメッセージはエラー検証メソッドで生成させるかな
>>127
インテリセンス的にどうよって思ってやったことない

130:デフォルトの名無しさん
15/10/09 21:38:21.20 XIlHZiEB.net
いやEnumのメンバー名はメタ情報の一つだよ
変数名はプログラムそのものについての自己記述情報に他ならない
>>127は2重にメタデータを持つことはDRYに反するよねというだけの問題

131:デフォルトの名無しさん
15/10/09 21:44:10.25 Zss3YWYL.net
メタってのはようするに当該クラスの外部ってことだろ
それ自身がを超えた制御情報ってだけで
べつに属性だろうが外部クラスの定数だろうが
好きにしたらいいんじゃね

132:デフォルトの名無しさん
15/10/09 21:57:49.30 AWj2PSbP.net
>>130
なるほど、Enumのメンバー名がメタ情報だってのは理解できる
2重にメタデータもつなってのも納得した
では、属性の使いどころはどこだろう
元の言語仕様でサポートされてない開発者独自のメタ情報の表現のため?
じゃあメタじゃない情報を属性で扱うってのはやっぱり下策なのだろうか

133:デフォルトの名無しさん
15/10/09 22:57:53.19 HsR0vRx2.net
外部じゃなくて上位だよ

134:デフォルトの名無しさん
15/10/09 23:01:13.11 HsR0vRx2.net
夫見逃すところだった
enumのメンバー名はメタじゃないぜええええええ
なぜなら文字列からパースできるから

135:デフォルトの名無しさん
15/10/09 23:03:16.07 CFgeSmkK.net
>>132
>>129に使用例書いただろ

136:デフォルトの名無しさん
15/10/09 23:06:04.38 XIlHZiEB.net
>>134
あれリフレクションで実装されてるんだぜ
カスタム属性で日本語名付けられるようにしたとしても、ほとんど同じ実装になる
だって組み込みのメタデータかカスタム属性で与えられたメタデータかだけの違いしかないからね

137:デフォルトの名無しさん
15/10/09 23:10:15.20 HsR0vRx2.net
今の話でリフレクションを持ち出すといろんなものがメタ扱いになってしまうw

138:デフォルトの名無しさん
15/10/09 23:14:51.18 lI8PbTGr.net
なぜswitchでstring使えないんですか?

139:デフォルトの名無しさん
15/10/09 23:18:41.11 HsR0vRx2.net
それってC++かjavaじゃね?

140:デフォルトの名無しさん
15/10/09 23:48:22.88 XIlHZiEB.net
>>137
意味がわからない
俺は>>134のレスで文字列からパースできるからメタじゃないという謎の理屈を見て、
きっと「文字列からパースできる」→「なんか特別な仕組み」→「メタじゃない!」という思考なのだろうと推測した
だからenumのparseがリフレクションで実装されていることを示すことにより、
文字列からパースできるからといって何ら特別ではないことを証明したつもりだったんだが、的外れだったようだ
真剣に疑問だから「文字列からパースできる」→「?」→「メタじゃない!」の?の部分を教えてくれ

141:デフォルトの名無しさん
15/10/10 00:13:08.97 VY+pcMt2.net
パース可能 言語レベルで対応されている メタじゃない

142:デフォルトの名無しさん
15/10/10 00:31:50.62 rHFZYJSj.net
そりゃ誰がどう見ても言語レベルで対応されてるけど
それにパース可能かどうかがどう関係するのかが全く理解できない
DateTimeはParseがあるからメタじゃない? RectangleはParseがないからメタ?
メタって一体何?
ちなみに.NETの公式の用語としては、メタデータはメソッド本体を除くクラスとメンバに関する全ての情報を指す

143:デフォルトの名無しさん
15/10/10 05:24:02.05 /nOfalKF.net
EnumのParseはC#の言語仕様には無い

144:デフォルトの名無しさん
15/10/10 10:00:53.58 chRrQaCq.net
>>138
定数じゃないとあかんで

145:デフォルトの名無しさん
15/10/10 10:25:12.24 EHQzzmJM.net
>>144は文盲
一つ後のレスも読めないらしい

146:デフォルトの名無しさん
15/10/10 10:27:04.87 rHFZYJSj.net
変数は無理って意味でしょ
別に間違ってない

147:デフォルトの名無しさん
15/10/10 10:47:14.46 chRrQaCq.net
>>145
煽るなよクズ

148:デフォルトの名無しさん
15/10/10 21:02:17.87 6MWep/bm.net
属性は言語仕様を変えることなくコンパイラやらプログラ厶用に機能を追加できるというのが肝だと聞いた

149:デフォルトの名無しさん
15/10/10 21:11:41.59 OjkSZXQt.net
属性は、メンバーとか型に追加の情報なり識別子なり持たせる役目だと思う。

150:デフォルトの名無しさん
15/10/11 14:23:33.79 lDigt0qz.net
\(^o^)/ぬるりっちょ

151:デフォルトの名無しさん
15/10/12 22:40:22.83 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:デフォルトの名無しさん
15/10/12 23:04:21.79 e5VIXU4j.net
ほうほう、ではなぜ
Object[] a = new Strin[1];
ができるのですか

153:デフォルトの名無しさん
15/10/12 23:12:03.39 pwM6df0l.net
>>152
知らん

154:デフォルトの名無しさん
15/10/12 23:16:57.36 pwM6df0l.net
object[] o = new string[1];
o[0] = new object();
出来たけど起動したらパソコンぶっこわれた

155:デフォルトの名無しさん
15/10/13 00:46:06.78 AkH9qfzr.net
>>151
いや、できるだろ。
指定型じゃないobjectをaddしたら例外吐くと思うが。
ジェネリックの共変性とかでできなくなったのか?

156:デフォルトの名無しさん
15/10/13 00:56:55.40 rx5Up+1Q.net
List<object> は object 型じゃないから、違う型である List<hoge> を代入出来ないだけじゃねーの。
だから、
object list = new List<hoge>;
とか、
List<object> list = new List<object>; list.Add( new Hoge() );
とかは出来るんじゃね?

157:デフォルトの名無しさん
15/10/13 07:14:34.67 IPzu3dLL.net
ジェネリックの共変や反変を使用するには
型パラメータにそれぞれin、outを指定する必要がある
inやoutはインターフェースまたはデリゲートにしか指定できない
また、inまたはoutを指定した型パラメータはそれぞれ引数(入力)または戻り値(出力)にしか使えなくなる
たとえばIReadOnlyList<out T>やIEnumerable<out T>などの読み取り専用インターフェースはout Tなので
List<hoge>をIReadOnlyList<object>やIEnumerable<object>にキャストしたりすることはできる

158:デフォルトの名無しさん
15/10/13 18:40:15.12 1yUdPEbp.net
配列の共変性は例外

159:デフォルトの名無しさん
15/10/14 14:19:58.33 roB5XZwg.net
>System.InvalidOperationException: シーケンスに、一致する要素は含まれてません
なんで会話体なんだよw
ぐぐったらぐーぐるさんに
もしかして シーケンスに、一致する要素は含まれていません
って怒られたわ

160:デフォルトの名無しさん
15/10/15 19:23:17.82 plKY4Q25.net
ちょっと聞きたいんだがシリアル通信で対向側から100バイト分の


161:データが送られてきたときに100バイト取得出来るときと40バイト60バイトみたいに複数回に分けて送られてくるのはなんでなの?



162:デフォルトの名無しさん
15/10/15 20:48:58.18 3PxZRlNz.net
>>160
知るかよw
どんな質問だよw

163:デフォルトの名無しさん
15/10/15 20:52:27.20 R/ItuJii.net
>>160
メーカーに聞きなよ
つかC#関係ないじゃん

164:デフォルトの名無しさん
15/10/15 21:15:23.90 3PxZRlNz.net
>>160
場違いな質問だけどまあちょっとだけフォロー。
今時シリアルポートが付いてるPCの方が少なくと思うからどうせUSB-シリアルの変換ブリッジ経由のアクセスだと思うけど、
USBはRS-232Cと違ってパケット単位の送受信になるから、アクセスの仕方によっては
見かけ上そのように見える可能性はあると思う。
まあ、たぶんこれは考え過ぎで関係ない。
恐らくデバイス側の仕様の線だろう。

165:デフォルトの名無しさん
15/10/15 22:14:59.79 cazvS2P7.net
>>160
シリアル通信には『40バイト60バイトみたいに複数回に分けて送られ』
などという考えはありません。
まず「シリアル」通信とはどのような考えの通信なのかを勉強し直してください。

166:デフォルトの名無しさん
15/10/15 22:50:13.49 0i22usD/.net
シリアル通信自体にはなくても、
シリアル → OS のバッファ → ファイルハンドル経由で受信 とかしてれば OS のバッファからはき出すタイミングと
ファイルハンドル経由で読み取るタイミングとの関係で途中で切れることもあるんじゃね。
163 の言ってる USB のパケ単位の受信でも同じ要領なんだろうし。(たぶん)

167:デフォルトの名無しさん
15/10/15 23:09:35.66 3PxZRlNz.net
まあ厳密に言えばUSBだって物理層レベルではただのシリアル通信だし、
232Cだって少なくともPCでは、一番下の水準だってハードウェアバッファに対してまとめて読み書きしてる
だけなんだけどさ。

168:デフォルトの名無しさん
15/10/15 23:50:33.81 GlsuvrM1.net
40バイトしか届いていない瞬間に読み出せば
40バイトしか読みとれないだろう
それを「複数回に分けて送られてくる」とは言わないぜ
100バイト届いているのに40バイトしか読みとれないことは考えにくい

169:デフォルトの名無しさん
15/10/16 00:03:40.24 A8PPNIqS.net
FTDIってUSB-232Cの変換ブリッジICのメーカーのドキュメント見たら
バルク転送のパケットのペイロードの64byteのうち、2バイトはシステム(FTDIのICとドライバーの間のやりとり)が使って
残りの62バイトが正味のペイロードみたいだから、>>163に書いたような理由かもしれんね。
URLリンク(www.ftdichip.com)

170:デフォルトの名無しさん
15/10/16 00:30:04.83 KAwMDrmB.net
と言うか、基本はデータ長を識別出来るようにして送った上で、
データ長分のデータをきちんと受け取ってから処理するようにすれば済む話で、
普通はそういう風に実装するよな。
パケ通信とかでもこの手の質問はよく挙がる。

171:デフォルトの名無しさん
15/10/16 08:14:43.34 w2ONMRNp.net
ソリューションエクスプローラで、自分で作成したフォルダを右クリックして
追加-クラスで新規作成すると、namespace プロジェクト名.Class
って拡張子(.Class)がついてしまうんだけど、これならないように設定できないの?

172:デフォルトの名無しさん
15/10/16 09:13:29.49 IIEWzpZc.net
拡張子ちゃうで

173:デフォルトの名無しさん
15/10/16 21:29:35.57 oF9r0LvQ.net
>>170
URLリンク(stackoverflow.com)
これと逆のことをすればいい

174:デフォルトの名無しさん
15/10/16 23:51:28.24 iL1w7ncH.net
特定メソッドのオーバーロードが用意されている型のみを引数で受け取ることは出来ませんか?

175:デフォルトの名無しさん
15/10/16 23:56:16.88 /26VfrL0.net
>>173
何を言ってるのか全然わからない

176:デフォルトの名無しさん
15/10/16 23:59:55.94 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);
}
みたいな事は出来ないかなと思って

177:デフォルトの名無しさん
15/10/17 00:03:58.16 XvNYZLvx.net
ジェネリックを使えばよいんじゃね?

178:デフォルトの名無しさん
15/10/17 00:35:45.30 FN3G7dO/.net
static int f<T>(Func<T, int> hoge, T args)
だな

179:デフォルトの名無しさん
15/10/17 00:41:26.06 XvNYZLvx.net
C#のことは全然知りませんが
static int f<T>( T args )
{
  return hoge( args );
}
これではダメなんですかね?

180:デフォルトの名無しさん
15/10/21 08:22:48.75 bMkc0D2x.net
独学なので教えて欲しいのだけど
メソッド書いたときにほとんどの場合returnに戻り値を付けずにクラスのフィールド値を書き換えて
すませているんだけど、パフォーマンス的にそれでもいいの?
書き方の作法として、できるだけ戻り値で返してフィールドに
値を残さないとかそういうものってあるのかな

181:デフォルトの名無しさん
15/10/21 10:58:03.82 /9+8IY9r.net
パフォーマンスを聞きたいのか作法を聞きたいのか焦点がぼけてる

182:デフォルトの名無しさん
15/10/21 10:58:33.71 TCTaTEQd.net
作法というかメソッドの目的による。
object.ToString が文字列を返さないとか、object.setValue が値を返すがフィールドを変化させないとかが合理的だろうか?

183:デフォルトの名無しさん
15/10/21 11:01:30.64 t8SS3rgX.net
すごい、こんぽんてきなところで、C#とまったくむかんけいなしつもんだ…

184:デフォルトの名無しさん
15/10/21 12:36:32.28 NrGyflQ0.net
>>179
「C# プロパティ」で検索するときっとピッタリのものが見つかる

185:デフォルトの名無しさん
15/10/21 17:25:02.26 vLvdh1RP.net
自動実装プロパティだとJITが最適化してくれるからほぼフィールドアクセスと変わらない。
というか、その程度、気にしたところで誤差の範疇でしかないだろ

186:デフォルトの名無しさん
15/10/21 18:39:25.56 DYiNz1wT.net
ASP.Netが今度色々今っぽいグラントとか載るみたいやけど
皆々様はウェッブ開発はC#とNodeならどちらが樂ですか?
ASPでフロントにReactjs使ってる人、いるのかなあ。日本語のやってます情報ひとつもない

187:デフォルトの名無しさん
15/10/21 18:50:00.22 /9+8IY9r.net
nodeはようやくLTSが出たばっかりだし
C#を使ってるくらいだから「ようやくプロダクション時の候補として選べるな」くらいに思ってんでは

188:デフォルトの名無しさん
15/10/21 19:52:42.76 QYO898Dn.net
web入門にはnodeの方が取っ付きやすいだろう
aspは通信処理が隠蔽され過ぎてて初心者にはかえって入り難いと思う

189:デフォルトの名無しさん
15/10/21 21:05:51.44 6ZAFfyFg.net
>aspは通信処理が隠蔽され過ぎてて
例えば?

190:デフォルトの名無しさん
15/10/21 21:12:22.08 vLvdh1RP.net
ブラックボックスになってて、裏側で何してるかわかりにくいってことだろ

191:デフォルトの名無しさん
15/10/22 15:01:52.95 EVhgfJB8.net
>>160
遅いけども
serialPort1.ReadBufferSize
の、値を大きくしてみ

192:デフォルトの名無しさん
15/10/22 16:18:31.37 IMT9I6Q/.net
>>190
そんなの無関係。
受信バッファをオーバーフローしたデータは単に捨てられるだけ。

193:デフォルトの名無しさん
15/10/22 16:22:15.21 IMT9I6Q/.net
ああ、フロー制御された場合を想定してるのか。
一応ありうるけど可能性は低いな

194:デフォルトの名無しさん
15/10/23 06:05:58.46 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ファイルに閉じられたクラスに存在する場合、
デバッグをかけるために、わざわざ別ソリューションのその対象のクラスのみをこちらのプロジェクトにコピー&ペーストして一度統合するしかないんでしょうか。

195:デフォルトの名無しさん
15/10/23 07:36:25.62 FoOVnDir.net
>>193
問題を履き違えている
(1) プロパティに限った話ではない。
  今回「デバッグに時間がかかった」のは別のメソッド(getter)経由で未初期化フィールドを参照していたことに
  気づかなかったためであり、同じプロパティのgetアクセサに限らず一般のメソッドであっても
  「同プライベート変数」でなくても問題は発生しうる。
  結局自分の書いたコードの動作を理解していないことが原因であって、規則で縛ってどうにかなる問題ではない。
(2) 問題の本質ではない。絶対に、動作を自分で理解していないコードを書かないこと。
  とはいえ常に最小粒度の命令レベルまで全て把握しろというのは無理な話なので、
  理解しやすくするためにカプセル化や不変オブジェクトなどの様々な手法が存在する。
  コンストラクタでまとめて直接初期化する方が理解しやすいのならそうすればいい。
(3) エスパーできるかどうかは経験の問題だが、デバッグするにしてもコードの各地点でそれぞれ
  どういう状態になっていてほしいのかを正しく理解していれば問題箇所の特定は機械的にやれるはず。
  そのとき把握する必要のある情報の範囲が狭いほどデバッグは容易なので、
  一般的にはなるべくそれを局所化するのがデバッグしやすいコードを書くコツ。
(4) pdbファイルがあればデバッグ可能。

196:デフォルトの名無しさん
15/10/23 08:00:05.12 VM5bh9Hg.net
名前空間を複数形にするかどうかはどうやって決めればいいですか?

197:デフォルトの名無しさん
15/10/23 13:10:38.44 7JhC24+l.net
プロパティ内で色々やらせるのはよくないよな
例外処理できないし

198:デフォルトの名無しさん
15/10/23 15:02:38.35 +AiXCDdV.net
なんで例外処理できないと思った?

199:デフォルトの名無しさん
15/10/24 12:04:22.22 /s9N4mON.net
>>179
パフォーマンスも保守性も可読性も最悪
どうしても必要でなければオブジェクトの状態を更新してはならない

200:デフォルトの名無しさん
15/10/24 17:04:51.29 dOGyJCjw.net
>>179
クラス内で使い回すからそうしているんだろうけど、そのメソッドを利用する側はどういう結果を出されたかわからないわけです。まあフィールドを見ればわかるけど。それにクラスを分離しようとするときもフィールドに依存していると面倒なことになる

201:デフォルトの名無しさん
15/10/24 17:17:56.73 qC5jNYSK.net
>>199
問題を混同してるな。
それは本来必要のないはずのフィールドを持っちゃった場合の問題。
否定的な意見が多いけど、フィールドなりプロパティなり保持してるデータを更新するのに、
_hoge = GetHoge();
だろうが
UpdateHoge();
だろうが同じこと。
前者の方が分かりやすいとかそんなことないよ。

202:デフォルトの名無しさん
15/10/24 17:29:30.83 tJFEMZX0.net
そもそも更新する必要があるのかは一考するべきだけどな。
更新することが目的ではなくて、その更新された結果を使って何かをするのが目的なんだろ?
なら更新しなくてもその「何か」をするメソッドを直接呼び出せばいい。
そういう考え方を理解すると、プロパティや状態更新はかなり少なくできるようになるよ。

203:デフォルトの名無しさん
15/10/24 18:03:13.79 wB/X7nCW.net
本人不在なのによく問題や目的を断定したりできるっすね
妄想力旺盛なようで羨ましい

204:デフォルトの名無しさん
15/10/24 18:17:39.17 qC5jNYSK.net
なるほど、お前さんの読解力の欠如の問題とは思わないんだ。
まあ、確かに質問者は>>200に書いたように2つの問題を混同している可能性がある。
というか、まあたぶんそうだろう。
恐らく本当に知りたいのは戻り値を返さないメソッドの是非じゃなくて、
保持する必要のない一時データをフィールドで持つことの是非だろう。
こんなのはもちろん非に決まってる。

205:デフォルトの名無しさん
15/10/24 18:56:14.20 wB/X7nCW.net
その「たぶん」をいいたいが為に何分掛けたんすか?
君の人生って安いんだね

206:デフォルトの名無しさん
15/10/24 19:01:56.68 Qmn5VnV2.net
休みの日に複数スレで煽りを入れているような人間が
一体誰を馬鹿にできるんだろうか?
底辺君

207:デフォルトの名無しさん
15/10/24 20:21:21.69 n9apvFnD.net
メソッドの戻り値で返す場合がしっくりする文脈もあるし、
メソッドがオブジェクトのフィールドの状態を変更して済ませた方が良い場合もあると思う。
対外的な文脈においては、戻り値で返す方がわかりやすいと思う。
自販機(オブジェクト)で言えば、ボタン(メソッド)を押せばジュース(戻り値)が出てくるような感じ。
そして、ジュースが売れたという事実は、自販機内のフィールドに記述される。

208:デフォルトの名無しさん
15/10/24 22:24:05.60 dOGyJCjw.net
>>200
Updateてメソッド名で戻り値がないなんて気持ち悪くて使いたくないな。

209:デフォルトの名無しさん
15/10/24 22:34:23.98 dOGyJCjw.net
自分が初心者の時を振り返ってみると
ひとつのクラスでなんでも済ませようとしたり、役割分担ができてないのが原因。恐らくそのクラスにあるのがおかしいメソッドだと思うよ。

210:デフォルトの名無しさん
15/10/24 22:40:26.57 fd/dB9hc.net
更新するメソッドで戻り値がないのはよくあるだろ
返すとしたら更新したかどうかのフラグとか?

211:デフォルトの名無しさん
15/10/24 23:06:00.58 7oDBCbbL.net
>>207
Updateって単語から、更新すべき値が返ってくるとはあまり考えないな。
更新結果がbool値で返って来るのなら予想するけど。

212:デフォルトの名無しさん
15/10/25 00:09:00.78 e8QLZtXl.net
>>206
今回の場合その例えで言うと、ボタンは自販機の内側にあって外部から押せない状態で、
出てくるはずのジュースも自販機のどこかに落ち込んでるんだと思うよ。
だから自分でも違和感があるんでしょうよ。
それにパフォーマンスとかなんで初心者が考えるんだろうね。そんなこと考えるのはまともに動くアプリができてからやればいいのにって思いまーす。

213:デフォルトの名無しさん
15/10/25 00:20:54.69 e8QLZtXl.net
最初の頃はカプセル化が理解できなかったな。実際全部自分で作っているわけだし内部構造も把握しているわけで、クラス利用する側も利用される側も全部自分なので発想の切り替えがなかなかできなかったよ。

214:デフォルトの名無しさん
15/10/25 16:39:21.40 1HXJB/EU.net
オブジェクト指向なんて学ぼうとしてはいけないと思うわ。
継承とかカプセル化とか、ある程度、複雑なものを作るときに初めて存在価値に気付くわけだし。

215:デフォルトの名無しさん
15/10/25 16:42:50.05 A/yOhDl2.net
ゴッドクラスを一つ作れば何も問題ない
神に任せれば何でもやってくれる

216:デフォルトの名無しさん
15/10/25 17:55:25.32 B7WANnu5.net
>>214
物が落下することを考える場合、
オブジェクト指向で、「物」に落下という動きを実装するのが一般的だと思う。
しかし、実際は、重力によって「物」が加速させられたわけだから、「地球」オブジェクトの重力イベントに、
各「物」のイベントハンドラーを登録する必要がある。
ゴッドは、ラッパーなんですか?

217:デフォルトの名無しさん
15/10/25 18:03:56.15 4FhC3Gim.net
>>215
物理シミュレーションなら
あらゆる「物」の相互作用を「神」が計算して「物」の「力」プロパティを更新
それによって発生する「物」の変位を「物」の更新メソッドで求めて位置を更新
という流れになる

218:デフォルトの名無しさん
15/10/25 18:11:18.28 l/fL5071.net
そこまで神が計算をするなら
>「物」の変位を「物」の更新メソッドで求めて位置を更新
もはや、これも「神」が計算すりゃ良くね?

219:デフォルトの名無しさん
15/10/25 18:13:42.25 UpnA5iMK.net
世界をシミュレートするには世界の外に出ないといけない

220:デフォルトの名無しさん
15/10/25 18:15:10.75 MI/upuKE.net
なんだかアホな話になってるけど、三体問題って聞いたことないのかな

221:デフォルトの名無しさん
15/10/25 18:29:46.19 4FhC3Gim.net
>>217
力まで求められてるなら変位はオブジェクト自身の性質(質量や慣性モーメント)のみで決まるからオブジェクト自身に持たせてもいい

222:デフォルトの名無しさん
15/10/25 18:45:02.54 ip/vnDdd.net
くだらない話をしているうちに
文明はどんどん発達していく…

223:デフォルトの名無しさん
15/10/25 18:49:08.47 4coy8BX6.net
文明(笑)

224:デフォルトの名無しさん
15/10/25 19:52:20.96 B7WANnu5.net
>>219
神でなければ実装できない処理の話のことですよね

225:デフォルトの名無しさん
15/10/25 20:38:05.14 1HXJB/EU.net
神は神でも邪神だろw

226:デフォルトの名無しさん
15/10/25 20:54:13.91 ruGH96NV.net
どっちかというと貧乏神‥

227:デフォルトの名無しさん
15/10/26 00:28:32.09 i/Pr50pl.net
異教徒どもめ

228:デフォルトの名無しさん
15/10/27 17:46:22.69 xjXQWbVB.net
コンボボックスのコレクションに動的に追加するのに、xmlを利用して設定ファイルとして作っておいて
読み込ませた後、いままではプロパティの値を一つ一つAddしてたんだけど、
項目が200ほどあるので格納用クラスのプロパティを配列に入れて一気に回したい
プロパティを配列に一気に入れるには何か方法がありますか?
(プロパティ名は連番をつけている Item001 Item002・・・)

229:デフォルトの名無しさん
15/10/27 18:16:00.37 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();

230:デフォルトの名無しさん
15/10/27 18:37:39.63 AF18ul7Z.net
>>227
問題はそこじゃないだろ
<items>
<item>a</item>
<item>b</item>
<item>c</item>
・・・
</items>
こういうxmlにして、読み込む段階でコレクションとして読めばいいだけのこと

231:デフォルトの名無しさん
15/10/27 18:44:38.34 LyVSHq6d.net
>(プロパティ名は連番をつけている Item001 Item002・・・)
(ノ∀`)アチャー

232:デフォルトの名無しさん
15/10/27 19:07:33.01 iNYJ0klc.net
俺はむしろLINQ使った方が読みやすいと思うがなあ。メソッド式の方ね。

233:デフォルトの名無しさん
15/10/27 19:45:43.85 lOeUxmUq.net
PropertyInfo[] info = obj.GetType().GetProperties();

234:227
15/10/28 00:46:39.63 xiejTC4w.net
みなさんレスどうもです
>>229
Listで一気に読みこませて無事コンボボックスに設定できました

235:デフォルトの名無しさん
15/10/28 02:28:55.47 EDNJzsKV.net
プロパティ200個って…
正気の沙汰ではない

236:デフォルトの名無しさん
15/10/28 18:14:23.99 rjKxrYR0.net
業務システムではよくあること。
プログラミングの目的がプログラミングの人には信じられないかもしれないが。

237:デフォルトの名無しさん
15/10/28 18:30:25.71 3nTbM/Mv.net
あーこれはキリッってつけたくなるレスだわ
我慢できない
プログラミングの目的がプログラミングの人には信じられないかもしれないが。キリッ

238:デフォルトの名無しさん
15/10/28 18:41:16.23 j5VggJ8Q.net
未だに .NET 1.1を使ってそうだなw

239:デフォルトの名無しさん
15/10/28 20:22:26.76 lvqGKJHt.net
>>219
何だよそれ?

240:デフォルトの名無しさん
15/10/28 20:40:08.70 3nTbM/Mv.net
>>238
宇宙に2つの星しかないとする
そうするとニュートン力学で簡単に振る舞いを記述できる
しかし星が3つ4つと増えていくと互いに及ぼす重力の影響の計算が複雑になっていって
事実上計算不可能になるという問題のこと

241:デフォルトの名無しさん
15/10/28 20:51:44.91 8s7NCB3J.net
いやム板的には余裕で計算できるぞ
解析的に解けないだけだ

242:デフォルトの名無しさん
15/10/28 21:06:10.72 Q/PXF6pR.net
>>219
つまりジェットストリームアタックはかわせないって事?

243:デフォルトの名無しさん
15/10/28 22:58:34.15 zTRdryA5.net
滑ってて悲しいね

244:デフォルトの名無しさん
15/10/29 00:29:14.00 pm6XZBWM.net
お前は踏み台にされたんだよ

245:デフォルトの名無しさん
15/10/29 08:50:32.75 D2KeTagd.net
さすがドム
滑りだけは上手だ

246:デフォルトの名無しさん
15/10/29 11:20:17.03 nhE9MuJP.net
ドム板だったのか

247:デフォルトの名無しさん
15/10/29 15:05:47.50 VvBy2VYR.net
>>240
そこまでは、神は与えなかったんですね。
「計算機でも作って、回せなww」

248:デフォルトの名無しさん
15/10/31 21:53:19.69 iqPkH1iD.net
オブジェクト指向は必要ないとかいって
aspx.csファイルのコードが30Kstepのプログラム作ってるやつ

249:デフォルトの名無しさん
15/10/31 21:57:36.78 9dOg6vGq.net
少数精鋭でまともに作ったら数分の1の工数でできちゃうことが客にバレたら業界が崩壊するからな
世の中クソコードのおかげでうまく回ってるんだからそれでいいんだよ

250:デフォルトの名無しさん
15/11/01 10:36:19.05 e1qJyonr.net
linuxはいまだにcなんだろ
オブジェクト指向に移行したらいいのに

251:デフォルトの名無しさん
15/11/01 11:44:17.28 8yFkftFr.net
以下、LinusによるC++罵倒文禁止

252:デフォルトの名無しさん
15/11/02 08:06:06.56 c5cJUF33.net
実行時に動的に読み込むアセンブリにある型をAssemblyクラスのGetTypeではなく
TypeクラスのGetTypeで取得する方法はありますか?

253:デフォルトの名無しさん
15/11/02 10:41:52.13 bqedN87E.net
ロード済みなんであれば、完全限定修飾名指定すればとれるけど
たとえばSystem.Windows.Forms.Formならこういう名前
System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

254:デフォルトの名無しさん
15/11/02 10:51:18.97 6BSNMQg5.net
timer.Tick += ( s, e ) =>
{
  ....;
  timer.Stop();
  timer.Dispose();
  GC.KeepAlive( timer );
};
こういうGC.KeepAliveに意味ある?

255:デフォルトの名無しさん
15/11/02 10:55:28.48 lz5NDAKO.net
>>253
その場合は、無意味。

256:デフォルトの名無しさん
15/11/02 10:56:46.82 dQRiL6jM.net
ない
System.Windows.Forms.Timerが動作中にGCされることはない

257:デフォルトの名無しさん
15/11/02 11:52:26.99 6BSNMQg5.net
なるほど!  
GCHandle.Alloc/Freeしてるみたいだ

258:デフォルトの名無しさん
15/11/07 23:40:41.15 9rSB2KP/.net
formの裏に50,000行のソースがある会社で仕事したことあるよ
オブジェクト指向と言わないまでも、構造化ぐらいはまともに考えて欲しいもんだよ

259:デフォルトの名無しさん
15/11/07 23:42:22.59 qRUcE/WB.net
関数増やすのに稟議が要るんだよ
お前が変わりに出るってか
数あわせの派遣のくせに

260:デフォルトの名無しさん
15/11/07 23:55:03.18 9rSB2KP/.net
>>258
そうかごめん…

261:デフォルトの名無しさん
15/11/08 01:08:51.96 ci/t1530.net
稟議w
要るわけねえ

262:デフォルトの名無しさん
15/11/08 01:39:16.20 95anV8J8.net
ワロタwwwwwwwww

263:デフォルトの名無しさん
15/11/08 01:48:13.18 /v0dgtRX.net
IBMかNTTならあってもおかしくない

264:デフォルトの名無しさん
15/11/08 01:54:37.49 t8ezhEA7.net
関数1個増やすのにいちいち設計仕様書に起こしてレビューする現場もあるな
そんな現場では往々にして関数増やすと手間かかって仕方ないから1個のハンドラに数百~数千行詰め込んだり
とんでもない糞な開発が行われる

265:258
15/11/08 01:58:11.25 qE8APb0L.net
まあ聞いた話ですよ
事実確認はしてないw

266:デフォルトの名無しさん
15/11/08 02:13:03.52 gurkCxJi.net
>>263
手間を減らすために関数化するもんじゃないのかな…?なんだか本末転倒だな

267:デフォルトの名無しさん
15/11/08 10:38:47.39 0Yb3YEtr.net
C#とMySQLの連携についてご相談です
WindowsFormアプリで外部サーバのMySqlと接続して処理させているのですが、
接続文字列に記述したパスワードは当然平文で流れますよね?
SSLで暗号化まではできたのですが、公開鍵認証でできればもっと良いのかと考えています
が、大抵MySqlの公開鍵認証を紹介したサイトだと、コマンドラインから鍵ファイルを指定して接続・・・
というところまではあったとしても、WindowsFormでの事例はなくどうしたものかと・・・
接続文字列に鍵の場所を指定してという感じでいけるのでしょうか(といってもそういう事例の書式が見つからない)
識者の皆様、解決のヒントがあればご教授ください

268:266
15/11/08 11:30:36.12 0Yb3YEtr.net
レス待ち中に調べていてなんとなくなのですが・・・
Mysqlに直で鍵認証ではなくSSHで鍵認証を伴った接続をして、
ローカル接続でMysqlに接続するというほうが賢明でしょうか?
これなら事例があるのでできそうですが、できたとして今度はVisualStudio上でデータソースから
TableAdapterの作成はできないですよね 開発中はテストサーバに直でつなげるようにして
TableAdapterの設計をして、本番は接続文字列を書き換えて対応する感じでよいのかな・・・
独学初心者なので見当違いな文章でしたらすみません

269:デフォルトの名無しさん
15/11/09 12:30:18.38 7FJWPJQr.net
接続文字列内の資格情報を隠すオプションあったよね
それじゃいかんのか

270:デフォルトの名無しさん
15/11/09 15:30:20.71 Z/Tj9+xS.net
.net 4.0のサポートが来年1月に切れるけど、
既存ユーザーはどうなるんでしょうか。
4.6あたりをインストールするようWindowsUpdateで促されるのかな?

271:デフォルトの名無しさん
15/11/09 18:27:27.22 lpQ26d6h.net
>>269
4.5.2を使えと言う事だな
URLリンク(support.microsoft.com)
WindowsUpdateでどうなるかは、OSが何かにもよって変わるんじゃないかな

272:デフォルトの名無しさん
15/11/09 18:45:53.75 RXSUHG1b.net
C#ってセンスいいな。
C++使いの俺は感心したわ。
ライブラリの出来とか。

273:デフォルトの名無しさん
15/11/09 19:21:02.26 dQJbva46.net
ライブラリはだいたいJavaのパクりだけどね
Javaをベースに、Javaの無駄に複雑だったり使いにくかったりする部分をVBやDelphiの知見に基づいて改良したもの

274:デフォルトの名無しさん
15/11/09 19:31:34.33 s3Itz59O.net
Javaのぱくりっていつの時代の話をしているんだ…

275:デフォルトの名無しさん
15/11/09 19:49:55.67 RXSUHG1b.net
Javaはゴミでしょw
C#とは比較にならないw

276:デフォルトの名無しさん
15/11/09 19:54:13.57 AkXykSSl.net
Visual J++がルーツなのは確かではある
アレはSwingより遥かに出来は良かったな

277:デフォルトの名無しさん
15/11/10 16:59:00.58 4ECeuS0N.net
Javaって最近になってようやくλとかlinq実装したんだろ
C#と比べたら周回遅れじゃん

278:デフォルトの名無しさん
15/11/10 17:50:37.35 6z08Kp2Q.net
保守的な言語だからそれで良い

279:デフォルトの名無しさん
15/11/10 20:12:51.67 z1KBGWzI.net
使う変数はすべて先頭で定義ってのは、スコープがわからなくなるから危険だと思うんだ

280:デフォルトの名無しさん
15/11/10 20:34:31.82 mVStRMDa.net
誰に対して言ってんだ

281:デフォルトの名無しさん
15/11/10 21:12:01.94 o04/+i6c.net
見えない敵と戦い続ける
それが統合失調症のさだめ

282:デフォルトの名無しさん
15/11/10 21:23:21.35 mVStRMDa.net
誤爆という可能性も

283:デフォルトの名無しさん
15/11/10 21:26:44.99 6z08Kp2Q.net
実は>>278は存在しなかったのではないか?

284:デフォルトの名無しさん
15/11/10 22:11:24.50 PonwMr1x.net
はるか昔にPL/Iって言語を教わった時に、プロシージャの途中でローカル変数を定義できるってのは衝撃的だったわ

285:デフォルトの名無しさん
15/11/10 22:53:27.73 oB74JuWl.net
>>283
俺は逆に PL/I 使ってからC使ったから、何でできないのよ…
って感じだったわ

286:デフォルトの名無しさん
15/11/10 22:56:59.99 ysgs5SCx.net
20代でCOBOLとPL/IとJCLをバリバリ使ってる俺みたいなのもいる
もちろん悪夢だが、50年使われる理由もわかる
こういうオーパーツ的な凄さって今の言語には無いよね

287:デフォルトの名無しさん
15/11/10 23:18:45.71 PonwMr1x.net
そういやCとUNIXって、PL/IとMULTIXってOSから生まれたんだよな
何がどう幸いするか神のみぞ知るって話だな

288:デフォルトの名無しさん
15/11/10 23:38:48.71 ip0jn96x.net
オーパーツというならやっぱりLISPだな。今でもどこか新しい。

289:デフォルトの名無しさん
15/11/11 00:34:50.01 mIMmAf8M.net
LISPは頭一つ飛び抜けていると思う
プログラミング言語の一種ではなくプログラミング言語そのもの
S式は、XML,JSON,SQLのあるべき姿であるという表現があるがまさにそれだと思う
LISPを通じてオレは初めてプログラマになれたと思う

290:デフォルトの名無しさん
15/11/11 00:35:39.17 RuyjG4nL.net
LISP って何処で使ってるの?

291:uy ◆Qawu9.2l1E
15/11/11 02:12:44.14 uYSp+fPE.net
Lispは冗長だから使われてないよ
設定ファイルで使うにしても
S式
(var 1)
C
var = 1
LLのハッシュ
var : 1

Lispより優れた選択肢はあるから

Lispとは概念
「 S 式 」、つまり
リストと再帰のみでプログラミングが完結するという事を教えてくれる言語
それを本で読んだ。とかその程度の曖昧な知識ではなく
実際にコードで書ききった者のみが、真理を知る事が出来るのです

292:デフォルトの名無しさん
15/11/11 02:28:04.78 F7mlWIYm.net
Lispはカッコオバケ

293:デフォルトの名無しさん
15/11/11 08:30:45.55 8YEsHhL+.net
perl は $
php は %
objective-c は @
lisp は ()

294:デフォルトの名無しさん
15/11/11 23:09:21.93 K7PzVuiY.net
CLANNADは?

295:デフォルトの名無しさん
15/11/11 23:38:01.19 q7R6O0K0.net
じんせ

296:デフォルトの名無しさん
15/11/12 10:18:43.54 sljIQlRZ.net
Null条件演算子マンセー!!

297:デフォルトの名無しさん
15/11/12 23:25:50.05 BjHL8Bou.net
S式は構文木そのままを人間が書くようなものでしょ
マクロで操作しやすいという長所を活かせないと有り難みがない

298:デフォルトの名無しさん
15/11/13 01:17:52.66 5ZkQwuSs.net
C#のお話してよ(´・ω・`)

299:デフォルトの名無しさん
15/11/13 01:22:12.94 nKXJjPck.net
言語仕様も読まないお前らに正しい言葉を教えてやろう
?? ヌル合体演算子
@"" ちくごてき文字列リテラル

300:デフォルトの名無しさん
15/11/13 06:30:58.71 v46Ke5nq.net
var moge = hoge?.Hage()?.Foo?.Bar()?.Baz ?? piyo;

301:デフォルトの名無しさん
15/11/13 10:19:18.73 v46Ke5nq.net
オープンソースのC#/Roslynプロジェクトで見たこと、感じた教訓
URLリンク(www.buildinsider.net)

302:デフォルトの名無しさん
15/11/13 13:51:31.21 +1eGYaPq.net
↑参考になるわ
private protectedってなんだよwww

303:デフォルトの名無しさん
15/11/13 18:13:30.64 mEKMOedd.net
>最近の自己紹介は「C#でググれ」。

304:デフォルトの名無しさん
15/11/13 18:34:09.64 v46Ke5nq.net
++C++の人

305:デフォルトの名無しさん
15/11/14 00:52:53.03 pbuT/4As.net
こういう記事みると改めて国内の技術者って技術力や知識は高いけどモノづくりのセンスないなと思う
日本人てのがそもそも下請けみたいな根性しみついてんのかね

306:デフォルトの名無しさん
15/11/14 00:59:53.53 zC8KxVmn.net
技術力があっても、時代遅れの無能に合わせた結果、時代遅れなものが出来上がるんじゃないの?

307:デフォルトの名無しさん
15/11/14 01:16:51.81 pbuT/4As.net
ごめん、それだった
ユーザーの頭が悪すぎるんだったよな
日本は馬鹿ほど金もってるんだよな

308:デフォルトの名無しさん
15/11/14 01:42:03.05 EGGLhsQ0.net
日本人のプログラマーは
 自分たち=優秀
 日本のプログラマー=優秀
 顧客=バカ
だと本気で思ってるんだな。
バカは自分たちなのに気づかないらしい

309:デフォルトの名無しさん
15/11/14 01:56:16.75 PWAfQw+v.net
>>307
自分を棚上げするつもりもないけど、実態は(30年以上前から言われてるけど)
エンジニアと言うにはあまりにお粗末な無能な奴が圧倒的に多い。
っていうか、『Cプログラマ診断室』(だったっけ?)の時代よりさらにレベル下がってるような気が。

310:デフォルトの名無しさん
15/11/14 02:03:32.60 zC8KxVmn.net
古いやり方のまま変えようとしないからなー。
未だにC#使ってるにも変わらずLINQ禁止とかあるみたいだし。

311:デフォルトの名無しさん
15/11/14 02:16:14.13 T7cDyZTE.net
うちはJava屋のおっさんに仕切られてるのでプロパティさえ禁止だよ
辞めたくなる

312:デフォルトの名無しさん
15/11/14 02:20:13.49 pbuT/4As.net
こっちはC#6やドラフトの7や.NET5の仕様なんかを自分の出来る範囲で追いかけてるのに現実の案件は3.0未満のレガシー環境ばかり・・・
未だにDataSetが使われ続けてるとか日本のこの業界は終わってるんだよ

313:デフォルトの名無しさん
15/11/14 03:28:09.98 dhRNvGMu.net
不満があるのなら自分でシステムやサービスを作って起業すれば良い
今の業界がどれだけ遅れているかを示し、自分のところなら最新の技術をもってご提案いたしますと営業をかけてみろ
こういったことをやらないから誰かの下に付くことになって、意見を封殺される破目になる
技術はあるが自由に使えない似たような連中を集めて、ベンチャーを立ち上げてみろ

314:デフォルトの名無しさん
15/11/14 07:38:02.17 VsNFnlBh.net
で、それがうちの経営にどう利益をもたらすの?と聞かれてあうあうするのがオチ
ビジネスがわかるオタクが少ないのが問題なんだよね

315:デフォルトの名無しさん
15/11/14 09:02:14.30 BTesK7+M.net
楽に書いてたくさん売りゃいい
おわり

316:デフォルトの名無しさん
15/11/14 09:10:32.17 aTpTLiZf.net
奴隷のくせに態度でかいよね

317:デフォルトの名無しさん
15/11/14 09:19:56.16 zC8KxVmn.net
これが日本がITにおいて時代遅れな理由だろうなw

318:デフォルトの名無しさん
15/11/14 09:30:52.13 VsNFnlBh.net
少々システムトラブルで業務が止まって客に影響が出ようが
結果的にそれを上回る利益を生み出せればいいわけだけど、
ジャップのユーザー企業は「お客様は神様(笑)」だからリスクを取れないんだよね

319:デフォルトの名無しさん
15/11/14 09:35:45.29 rhvNvbw/.net
>>317
そういうのはリスクって言わない。
ただの欠陥だから。馬鹿じゃないの。

320:デフォルトの名無しさん
15/11/14 09:42:39.48 VsNFnlBh.net
>>318
新進気鋭のWebベンチャーみたいなのって実際品質低いよ
規模が小さいうちは確かに開発手法や個人の技能に大きく左右されるけど、
大規模なシステムになると結局は品質との兼ね合いになる

321:デフォルトの名無しさん
15/11/14 10:19:31.38 aTpTLiZf.net
繋がっているように見えて話が繋がってないのはワザとか
口八丁が幅を利かせたのも保守派を助長した理由の一つだと思う

322:デフォルトの名無しさん
15/11/14 11:44:40.79 nWZFA7uQ.net
保守派って何よw

323:デフォルトの名無しさん
15/11/14 12:48:29.87 CbtKXtTb.net
>>311
無知でごめんよDataSetはテーブルアクセスする際普通に使うもんだと思ってた
今は違うの?Linqとか?

324:デフォルトの名無しさん
15/11/14 17:01:18.18 jrhg0wMX.net
EFでもDataSetでもなく、DataReaderが正義だと思う俺は少数派なのかな?

325:デフォルトの名無しさん
15/11/14 17:43:36.04 W3zZ8zJZ.net
いえ正常です
EntityFrameworkやDatasetの使い手とバカには強い相関が見られます

326:デフォルトの名無しさん
15/11/14 20:56:53.86 DC4jVrJk.net
private protectedは欲しかったんだ
意味的にはinternal & protected

327:デフォルトの名無しさん
15/11/18 00:21:03.45 5OYOt2YD.net
EFまでいかなくても
dapperでマッピングでええやん。

てか昔はWeb上のサービスもUIとかショボかったから業務システムとの差はそれほど感じなかったんだろうけど
今はひどいよな。ユーザーは、今風のUIがいい、とかSPAなイメージを伝えても
時代遅れのSEは、古臭いUIしか作れないし、JSやcss使いこなせないし、チェックボタンクリックするたびにサーバーにポストする
糞システム作ってるし、この先益々差が広がるだろうなとおもう

328:デフォルトの名無しさん
15/11/18 00:56:23.88 XBTkD2/m.net
違うだろ、俺らの責任じゃない。
元デザイナーでデザインできる俺みたいなPGがUI/UXについて提案してもユーザーが必要性感じてないんだからどうしようもない。
そういう仕事しかしたことない元請けSIerも理解できないから当然できない。
とりあえず大手電機メーカー子会社のSIerは全部潰れてほしいわ

329:デフォルトの名無しさん
15/11/18 01:26:53.56 G1zKx1et.net
>チェックボタンクリックするたびにサーバーにポストする
これはASP.NETが悪い

330:デフォルトの名無しさん
15/11/18 15:00:27.61 eyPmmAxS.net
ほらこれみてみろよ
>「iPadへの入力ミス」が原因でボーイング737型機が機体接触事故を起こしていたことが判明
>URLリンク(gigazine.net)
業務アプリで必要なのが何なのか良く分かるだろ

331:デフォルトの名無しさん
15/11/18 15:05:40.40 4O1y0zjC.net
>>328
>>チェックボタンクリックするたびにサーバーにポストする

>これはASP.NETが悪い
ポストバックしなきゃいいだろ

332:デフォルトの名無しさん
15/11/18 15:17:41.77 gmCJUuig.net
WinRT使えばええんか?

333:デフォルトの名無しさん
15/11/18 19:45:21.77 ZNU9suRo.net
C#erはVisualBasic名前空間を使うと負けだと思っている

334:デフォルトの名無しさん
15/11/18 19:52:48.32 8OGiKQJm.net
>>332
同意。
というか、あんなもの使うぐらいなら自分で実装したほうが速い。

335:デフォルトの名無しさん
15/11/18 20:20:48.56 6wIN3wsR.net
でも俺ちょこっとしたツールとかだと、TextFieldParserとかStrConvはベンリーだと思う

336:デフォルトの名無しさん
15/11/18 21:10:53.15 0vgBTr94.net
StrConvだけ使ってる

337:デフォルトの名無しさん
15/11/18 21:54:31.83 iQfA831r.net
StrConvは自前で同様の機能実装してしまった

338:デフォルトの名無しさん
15/11/18 22:46:48.24 X6m0znIl.net
利尻Conv

339:デフォルトの名無しさん
15/11/18 23:00:10.99 HHDQD9WE.net
理解するのに一拍かかったわ

340:デフォルトの名無しさん
15/11/18 23:12:41.12 x3x3aG8E.net
Conv能力が低いな

341:デフォルトの名無しさん
15/11/18 23:25:04.46 YUBLStYB.net
CSVなんか
var data = File.ReadAllLines(filename).Select (x => x.Split(',')).ToArray();
でええやん

342:デフォルトの名無しさん
15/11/18 23:26:32.65 x3x3aG8E.net
アホがばれるからだまとき

343:デフォルトの名無しさん
15/11/18 23:49:44.24 wwHYyo98.net
>>329
日本語能力と論理的思考だな
原文は知らんが少なくともこの日本語は説明が成り立っていない

344:デフォルトの名無しさん
15/11/19 00:11:24.26 Qo/umcST.net
StrConvというか、そのなかのToWide、ToNallowだけかな…
stringクラスの拡張メソッドにしとくと、なにげによく使うんです

345:デフォルトの名無しさん
15/11/19 00:16:12.39 FuaAO5L3.net
StrConvなんてVBerでも使わないよw
あんなのVB6からの移植用の機能だぞw

346:デフォルトの名無しさん
15/11/19 00:24:16.57 KDEPfKnj.net
使えるもんはつこたらええ

347:デフォルトの名無しさん
15/11/19 01:59:10.01 9nDdReYG.net
StrConvとかいう舐めたネーミングが許せんわ
いかにもVB6のセンス

348:デフォルトの名無しさん
15/11/19 02:47:51.51 Q69wQH7X.net
そこは歴史に敬意を払うとこじゃねえのw
利用を強制されてるもんじゃないんだからw

349:デフォルトの名無しさん
15/11/19 02:55:25.63 pMZsVAsr.net
VBっていうより昔のCとかUNIXのノリかな

350:デフォルトの名無しさん
15/11/19 06:04:51.36 yq8an3Lp.net
まぁVBだろうがある物は使わせてもらう

351:デフォルトの名無しさん
15/11/19 10:13:52.72 j6gYHvV7.net
毎回IsNumericを貼り付けてる

352:デフォルトの名無しさん
15/11/19 20:07:28.86 auiYy3TC.net
まあせめてStringConverterかな(笑)
ちなみにどう読んでる?俺はストラコンブ

353:デフォルトの名無しさん
15/11/19 20:19:18.13 Pe05dlRc.net
flgとか微妙な省略している割に
長大な識別子は省略されていないソースを読んだ時に感じる
砂を噛んだような不愉快さ

354:デフォルトの名無しさん
15/11/19 20:48:49.94 VA8QX+EW.net
i18nが略称の王者だな

355:デフォルトの名無しさん
15/11/19 21:01:53.78 EomE3goY.net
TextFieldParserもデータに改行が入ってると読めない地雷だからな…

356:デフォルトの名無しさん
15/11/19 21:56:13.55 w8FY9rn8.net
>>354
むしろ固定長の読み込みが文字数で、バイト数に対応してない�


357:ニこをどうにかしてほしい



358:デフォルトの名無しさん
15/11/19 22:28:50.03 tuRe1SPF.net
>>355
うわ、固定長ファイルの読み込みってバイト単位の切り出しがキモじゃん
それできない時点でどう考えても使い物にならないわ

359:デフォルトの名無しさん
15/11/19 23:04:38.15 /GuEQnmn.net
>>353
その略称を考案した奴凄いよな

360:デフォルトの名無しさん
15/11/20 00:08:07.00 6faEBo3j.net
>>357
DECの人やで
URLリンク(ja.wikipedia.org)

361:デフォルトの名無しさん
15/11/20 15:02:34.58 4Z48XOb6.net
intDeta

362:デフォルトの名無しさん
15/11/20 15:47:50.10 50zp9/ge.net
>>353
i18nに該当する別の単語はないのかな?
もしあれば混乱しそうだ

363:デフォルトの名無しさん
15/11/20 20:37:10.79 I81aKI5b.net
俺のアカウント名はp11a

364:デフォルトの名無しさん
15/11/20 21:08:06.47 +55qipus.net
ウィーフィーの規格みたいだな!

365:デフォルトの名無しさん
15/11/20 21:48:08.47 3Hd/TC01.net
>>352
後輩がフラッグと呼んでいるのを訊いて目からうろこだったな。この業界の人はフラグというけど
旗は英語でフラッグと読むのが普通だった

366:デフォルトの名無しさん
15/11/21 00:03:43.84 vY02tg2U.net
>>363
カエルじゃないんだからフラッグなんて言わないと思うw
普通にチェッカーフラグだしフラグシップだ。

367:デフォルトの名無しさん
15/11/21 00:27:04.73 LNOlZUw+.net
s1x

368:デフォルトの名無しさん
15/11/21 00:42:43.76 QnKZX1iR.net
かえるはカタカナ表記だとフロッグが一般的じゃないかなあ
チェッカーフラグはぐーぐるさんに「もしかして:チェッカーフラッグ」言われてもうた

369:デフォルトの名無しさん
15/11/21 00:46:21.16 9hhZMgm3.net
フラグは割とフツーに言う気がするけどな
死亡フラグとか恋愛フラグとか言うやん
最近はローカル変数でもisとかhasとかつけるからflag自体あんまりつかわへんけど

370:デフォルトの名無しさん
15/11/21 00:56:45.59 QnKZX1iR.net
ああ、いや俺もそれは使うよ
フラグとフラッグの使い分けって面白いなと思っただけで他意のない横槍でした
どうもboolなフラグはフラッグと呼ばれてない様子
まあゲーマー用語として広まって定着したのかな

371:デフォルトの名無しさん
15/11/22 20:15:29.76 ZvtPZZWZ.net
まず相手に伝えるための言葉なんだから伝わればいいんだよ
ルー大柴みたいに四六時中カタカナ用語を織り混ぜて会話するやついるが気持ち悪いんだよな
心理学ではそれは自信のなさの裏返しで自分を大きく見せたいコンプレックスらしいが、兎に角うざい
素人であるユーザー相手にコンサルする分にはいいかもしれんが、専門職の俺らに通用すると思ってる時点で馬鹿なんだよな

372:デフォルトの名無しさん
15/11/22 22:55:15.68 DXq6XAe4.net
よくわからん被害妄想だw
それこそコンプレックスの産物にしか思えないが自覚がないんだから凄いわw

373:デフォルトの名無しさん
15/11/24 23:46:40.10 VFqon6vc.net
ファイルを暗号化する手法が結構多く見られていてよくあるのがファイルの先頭にsaltとかIVを
埋め込んでいるのがあるんだけど、メモリストリーム使って文字列を暗号化するときにも
バイト配列にsaltとIVをつないで一緒に保存してもいいものなの?
他のサンプルソースのうち、メソッドの頭にIVとか直書きしてるものあるけど、それって危なくないの?

374:デフォルトの名無しさん
15/11/25 00:12:27.44 /p4JxLKY.net
まあなんらかの形でIV埋め込まなきゃ解凍できないし

375:デフォルトの名無しさん
15/11/25 01:41:28.14 wwtRzQvg.net
ニッポンの平均最低月給と人口の都道府県別、市町村別ランキング
求人情報113,957件の平均最低月給196,400円 ♬
あなたの住む街は第何位?平均最低月給はいくら???
URLリンク(jobinjapan.jp)

376:デフォルトの名無しさん
15/11/25 10:00:10.90 XX3uU+t0.net
>>372
ありがとう
追加で質問なんだけど、デコードしたあと文字列見るとエンコードするときに埋め込まれたダミーが残って
\0が16の倍数の残り分後ろにつくんだけど、特にネットで落ちてるサンプル見るとそれに対する処理が
見受けられないんだけど、単純に暗号化複合化の記述がおかしいのか、
そうなるのが当然で、あとは自分で処理するレベルのものなのでしょうか

377:デフォルトの名無しさん
15/11/25 10:16:17.92 5wB+dJF6.net
ダミー?パディングのことだろうか
自分で処理するのが普通

378:デフォルトの名無しさん
15/11/25 12:11:57.78 Ma3qeykF.net
PaddingがZerosになってない限り、読み込まれることはないはずだけど
CryptoStream::Readの返値見てないとかなら知らん

379:374
15/11/25 14:34:31.59 mt/VYpXM.net
レスありがとうございます
PaddingはPKCS7にしてます
ちなみに
CryptoStream Mydecrypt = new CryptoStream(input, decryptor, CryptoStreamMode.Read);
Mydecrypt.Read(output, 0, output.Length);
としてたあとに
output.ToArray()でbyte配列に格納してます
Mydecrypt.Readの処理後にoutputにはパディングされた部分に0で入っているので、
それをToArrayすれば当然それも配列に入っているのだと理解してます
暗号化するときにはFlushFinalBlockなりCloseすれば元のデータの終わりがわかるんだと思うのですが、
復号するときにはどこまでが元のデータでどこまでがパディングされたものか、
FlushFinalBlockのような処理は用意されてないんでしょうか 
それとも>>376さんのいうようにZerosになってない限り自動で終わりを判別して返してくれるんでしょうか
(そうだとしたら、どこかでおかしな記述をしてるんだとは思いますが・・・)

380:デフォルトの名無しさん
15/11/25 15:36:31.44 eV7P+bdC.net
System.Math.Round(0.5)とかSystem.Math.Round(-0.5)の戻り値が0なんだけど。
何なのこの糞言語。

381:デフォルトの名無しさん
15/11/25 15:54:31.31 rHMnfdo0.net
戻り値
型: System.Double
a に最も近い整数。 a の小数部が 2 つの整数 (一方が偶数で、もう一方が奇数) の中間にある場合は、偶数が返されます。 このメソッドは、整数型ではなく Double を返します。
だから仕方ないな
Console.WriteLine(Math.Ceiling(0.5) + " " + Math.Floor(-0.5));
切り上げにはみたいな書き方をする

382:デフォルトの名無しさん
15/11/25 16:16:16.65 Ma3qeykF.net
>>377
だからReadの返値だってばさ

383:デフォルトの名無しさん
15/11/25 16:23:53.16 tXkV+f/F.net
>>378のコードはdouble値と小数を==で比較するような糞ロジックで溢れているのだろう

384:デフォルトの名無しさん
15/11/25 16:24:13.41 TdJGHa8X.net
>>378
MSDNのMath.Round メソッドのページに書かれてるよ
このメソッドの動作は IEEE 規格 754、セクション 4 に従います。 このような丸めは、近似値への丸めまたは銀行型丸めと呼ばれることがあります。 これにより、常に中間値を単一方向に丸めるために発生する丸め誤差が最小限に抑えられます。
Round メソッドが使用する丸めの種類を制御するには、Math.Round(Double, MidpointRounding) オーバーロードを呼び出します。
下みたいに書けばいいんじゃないかな
System.Math.Round(0.5, MidpointRounding.AwayFromZero)

385:デフォルトの名無しさん
15/11/25 16:28:27.15 2e0lZK3J.net
>>378
URLリンク(dobon.net)
System.Math.Round(0.5,MidpointRounding.AwayFromZero);
って書くんや

386:374
15/11/25 16:37:18.69 mt/VYpXM.net
>>380
返値は7でした
0じゃないということは正しく終わりを見てもらえてないってことですよね・・・

387:デフォルトの名無しさん
15/11/25 16:57:39.93 FMs/A05F.net
>場合によっては、この丸めのエラーを重要なことができます。
なるほど、この丸めのエラーを重用なことができるのか

388:デフォルトの名無しさん
15/11/25 17:21:58.69 vs30+rKr.net
そもそもDoubleの値がぴったり0.5になることなんてリテラル以外まずあり得ないだろ
Decimal使えよ

389:374
15/11/25 17:32:39.48 mt/VYpXM.net
ちょっとどつぼにはまって訳がわからなくなってきたのですが、
たとえば文字列が 5byte分あったとして、byte配列にしたときに残りの11については
パディングされて埋められますよね
デバックしていてパディングの後の値を見ると、後の11byteには0ではない値が入っているようでした
0で埋められると思っていたのですが、これはコードがおかしいのか私の理解が間違ってたかどちらでしょうか
パディングで埋められたものが、デコード時に元の5byte分が復元されて、
それより後の値は0で埋まって(暗号部分までがしっかり認識区別されて)返ってくるのでしょうか?
(すなわち、16の倍数byte分返ってくる)
それとも本来は5byte分のみ返ってくるのでしょうか

390:デフォルトの名無しさん
15/11/25 17:57:51.59 5wB+dJF6.net
pkcs7なら11バイトパディングがあれば11で埋まってるんじゃないか
何でパディングするかは決まってるが、常に0というわけじゃないぞ

391:デフォルトの名無しさん
15/11/25 18:16:09.91 mt/VYpXM.net
>>388
そうですよね・・・0で埋まると思ってました
>>376さんの言ってる事がようやく理解できました・・・orz
デコードされたbyte配列から、返値の値だけ出力ストリームに書き出したらうまくいきました
MemoryStream output = new MemoryStream();
var len = MydecryStrm.Read(buffer, 0, buffer.Length);
output.Write(buffer, 0, len);
あってんのかな・・・

392:デフォルトの名無しさん
15/11/25 18:48:30.22 8yT/lcxa.net
>>386
0.5ってもろに2の基数で表現できる数だと思うんだけどw

393:386
15/11/25 18:54:51.58 tXkV+f/F.net
>>390
だから「リテラル以外」って言ってるでしょ

394:デフォルトの名無しさん
15/11/25 18:56:24.86 8yT/lcxa.net
>>391
なるほどすまんかったw

395:デフォルトの名無しさん
15/11/25 19:53:05.95 h3PXmhK/.net
ジェネリクスで数値型のみって出来ない?
図形の構造体が不便

396:デフォルトの名無しさん
15/11/25 20:08:56.06 8nRfByHy.net
できまふぇん

397:デフォルトの名無しさん
15/11/25 20:12:54.04 1zLf2/VR.net
>>393
C#のジェネリックだと、それは無理。

398:デフォルトの名無しさん
15/11/25 20:24:59.67 reKtKMrl.net
IConvertibleだっけ? で制約して少しは

399:デフォルトの名無しさん
15/11/25 20:32:25.22 1zLf2/VR.net
where T : struct , IComparable, IFormattable, IConvertible, IComparable<T>, IEquatable<T>
ぐらいやっておけば、ある程度、保証できるだろうが、Tの演算子を解決できないので、数値型としては、致命的だろう。
dynamicにキャストすればできるがパフォーマンス悪くなるだろうしなー。

400:デフォルトの名無しさん
15/11/25 20:39:16.08 h3PXmhK/.net
>>397
ゲーム用だからパフォーマンス悪いのはNG
一つづつコピペは嫌だな・・・

401:デフォルトの名無しさん
15/11/25 21:24:32.82 vs30+rKr.net
図形ならdoubleオンリーで十分でしょ
無駄な汎用性

402:デフォルトの名無しさん
15/11/25 21:36:42.28 /dJ6YH5t.net
intを使いたいときもあるのでは?
でもdoubleとintの二つで十分だな。

403:デフォルトの名無しさん
15/11/25 21:42:36.50 puppJQzH.net
そうします

404:デフォルトの名無しさん
15/11/25 22:07:31.65 vs30+rKr.net
doubleはintの値域を完全に誤差なしで表現できるからdoubleさえあれば十分だよ
まずありえないが、万一doubleじゃ遅すぎるとかメモリを食いすぎるとか実際に問題になればint版を作ればいい

405:デフォルトの名無しさん
15/11/25 23:00:55.11 puppJQzH.net
>>402
メモリって出来るだけ小さいほうがいいと思うんですけど・・・
あとはint専用メソッドでのキャストが面倒だし

406:デフォルトの名無しさん
15/11/25 23:06:11.07 1zLf2/VR.net
何で動かすかは知らんが、intとdoubleのメモリ使用量の差なんて、気にしなくても良いだろう。

407:デフォルトの名無しさん
15/11/25 23:07:44.54 5wB+dJF6.net
レジスタとかSSE(AVX)観点からのツッコミは禁止します
こんな素人のガキにそんなことを説いても仕方有りません
わかるでしょ?あなた大人でしょ?

408:デフォルトの名無しさん
15/11/25 23:26:36.71 BOe/at8N.net
これふらっとに居たUnityでゲーム作りたいんですけど?君だよ
向こうで相手にされなくなったからこっちに来たのか

409:デフォルトの名無しさん
15/11/26 00:07:28.22 Hq8pnJS9.net
decimalでいいだろ

410:デフォルトの名無しさん
15/11/26 00:10:18.88 lRbPvEyn.net
decimalは、ちょっと効率悪いんじゃないかな?

411:デフォルトの名無しさん
15/11/26 07:11:25.70 bJkKvp09.net
>>408
なぜ?容量くいすぎ?

412:デフォルトの名無しさん
15/11/26 07:44:33.83 tBrlRgSz.net
パフォーマンスを気にする初心者はコーディング前に必ず
「動かないソフトウェアのパフォーマンスはゼロである」と10回唱えなさい

413:デフォルトの名無しさん
15/11/26 08:32:48.63 uG3Gqvd0.net
そりゃニーモニックレベルでサポートされているdoubleやintに比べりゃdecimalは非効率だろうね

414:デフォルトの名無しさん
15/11/26 12:17:53.24 EjvQUqKT.net
Windows10にしたらデザイン画面上のレイアウトがぶっ壊れてしまいました
でもコンパイルするとWin8で開発してた状態が維持されてます
ということは、Win10のデザイン画面上で整えるとコンパイル後に崩壊しそうです
デザイン画面をWin8互換にする方法はあるでしょうか?(VS2013)

415:412
15/11/26 12:49:20.51 EjvQUqKT.net
Win8互換という言い方は変でしたね
現状Win10同士でもデザイン画面とコンパイル後が一致しないので、これを正しい状態に修正する方法が知りたいです

416:デフォルトの名無しさん
15/11/26 13:01:57.24 zuyebkBK.net
>>412-413
何を言ってるのかさっぱり分からない。
推敲って物を知らないのか。

417:412
15/11/26 13:05:13.05 EjvQUqKT.net
>>414
OSをWindows8.1からWindows10にア�


418:bプグレードしたら、 VS2103のデザイン画面上のレイアウトとコンパイル後のレイアウトが著しく異なる状態になったので、 修正方法が知りたいです



419:デフォルトの名無しさん
15/11/26 13:06:34.04 EjvQUqKT.net
>>414
間違えましたw
OSをWindows8.1からWindows10にアップグレードしたら、
VS2013のデザイン画面上のレイアウトとコンパイル後のレイアウトが著しく異なる状態になったので、
修正方法が知りたいです

420:デフォルトの名無しさん
15/11/26 13:29:28.65 wLo/SUaP.net
少し冷静になってはどうですか
はやる気持ちを抑えて

421:デフォルトの名無しさん
15/11/26 13:31:41.06 zuyebkBK.net
>>416
まだ何を言ってるのかよく分からんけど、Windows Form?
だとしたら自動スケーリングの仕様に起因する問題かね。
Windows10入れてないからよく知らないけど、たぶん直接的にはシステムフォントの違い
(Formのフォントを既定値のままにした時に設定されるフォントの違い)から来てると推測。
最初にプロジェクトを作った環境でFormのフォントを(既定値のままじゃなくて)明示的に指定するか、
AutoScaleModeをDpiに変更すれば治ると思うけど。
もちろん今の環境で修正してもいいけど、恐らくデザインの修正が必用になる分面倒くさい。

422:412
15/11/26 14:26:44.77 EjvQUqKT.net
>>418
Windows Formです
フォントを変えてもレイアウトは変わりませんでした
Dpiにすると、ボタン型チェックボックスとボタンの高さがコンパイル後の画面では狂ってしまいます
他も全般的に狙ったレイアウトにならず微妙に汚くなります

423:デフォルトの名無しさん
15/11/26 14:30:47.94 lRbPvEyn.net
>>419
Win10は、使ったこと無いけど、AutoScaleMode.Noneにしてスケール調整しないようにしてみては?

424:デフォルトの名無しさん
15/11/26 14:59:05.28 zuyebkBK.net
>>419
だから、最初にそのプロジェクトを作ったのと別の環境でAutoScaleModeを修正する場合は
恐らくデザイン(Formやコントロールのサイズ)を手動で修正しないとダメ。

425:412
15/11/26 15:32:43.03 EjvQUqKT.net
>>420
Noneはデザイン時からもっと大幅に変化します(ボタンが巨大になったり)
>>421
手動で修正したものに対し、コンパイル後の画面が狂うんです
高さ28のボタン型チェックボックスに対し、ボタンの高さは33にしないと揃いません
こうするとデザイン画面上ではボタンの方が大きいですが、実行すると揃います
ガイドで均等に揃えた縦方向の隙間も不揃いになるので、実行しては再調整を繰り返します
左右の隙間もデザイン時より狭くなるので、実行してから再調整が必要です
ログイン画面のような、フォームにコントロールを直接置いた単純なレイアウトでは特に問題ないですが、
タブコントロールの中にテーブルレイアウト、その中にパネル、その中に小さなコントロールをたくさん置くと狂いが目立ちます

426:デフォルトの名無しさん
15/11/26 16:37:00.62 uhVdTG0g.net
画面のDPIはどうなってんの?

427:デフォルトの名無しさん
15/11/26 16:46:03.36 lRbPvEyn.net
こういうところがフォームだとつらいところなんだろうなー。

428:デフォルトの名無しさん
15/11/26 16:51:58.32 zKve/pIE.net
同じかわかんないけど・・・
ソースレベルでDPIに変更したら派手に崩れた経験があって
最初は手作業で直してたんだけど、再度デザイン画面で表示している状態で
DPIに変更したら自動的に修正されてレイアウトが維持されたよ
前の状態を正常に表示できる環境かつデザイン画面の状態でDPIに変更してから
新しい環境に持って行ってみたら?
可能性のひとつでしかないけど・・・

429:デフォルトの名無しさん
15/11/26 18:21:50.50 zuyebkBK.net
どこぞで読んだけど、確かFormデザイナ自体がDPIが違う環境で
プロジェクトが開かれることを想定した設計になってないんだよな。
それにしても、新しい環境でAutoScaleModeをDpiに変えてデザインをやり直したら
>>422が言ってるような現象は起こらないはずだと思うんだけど。

430:デフォルトの名無しさん
15/11/26 18:26:41.47 0NR9O6jg.net
俺も >>425 だと思うなぁ
前開発環境が無いならOSのスケール変更すれば行けるよ

431:デフォルトの名無しさん
15/11/26 21:37:03.87 uhVdTG0g.net
PerMonitorDPIとかってすごい機能だけど
WinFormsとはほぼ相容れない機能だよな
いままでそんなこと想定して作ってきたものなんてほぼ存在しないだろ

432:デフォルトの名無しさん
15/11/26 21:42:19.08 lRbPvEyn.net
いい加減、WPFに移行しろってことなのかねぇ…

433:デフォルトの名無しさん
15/11/26 22:35:57.85 uhVdTG0g.net
WPFですら想定してるのはSystemDPIだけだから
PerMonitorDPIに対応するには一手間必要だったりする

434:デフォルトの名無しさん
15/11/26 23:02:29.24 YemXfTah.net
PerMonitorDPI自体中途半端だよね。
高DPIのタブレットをタブレットとして使ってる時と96dpiのモニターに繋いだ時でDPIの設定が
自動的に切り替わるように出来てもいいと思うんだが、こんな当たり前のことができない。
そもそもWindowsのDPIの設定って細かく指定できないから、高DPIモニタだと
ちょうど見やすい設定がそもそもできない。
今に始まったことじゃないけど、MS製品って全然eat your own dog foodじゃない。
ちょっと使ってみればわかるような不都合が多過ぎ。

435:デフォルトの名無しさん
15/11/27 00:14:41.65 A193Z9lO.net
URLリンク(pc.watch.impress.co.jp)
Win10でもグダグダらしいな

436:デフォルトの名無しさん
15/11/27 01:53:39.06 xmWo3l8b.net
すくなくともゲームはOSのせいじゃないだろこれ

437:デフォルトの名無しさん
15/11/27 02:57:35.54 /Io7/sFA.net
まあでもOSのせいかアプリの問題かはユーザーにとってはどうでもいいことだよね。
MSが開発者が間違いを起こさないような情報やプラットフォームを十分整備してるかというと...
URLリンク(msdn.microsoft.com)
こんな記事もあるぐらいだし、たしかVB5ぐらいからGUIの単位系がTWIPSとかいうのになってて
相当昔からMSはモニターが高DPI化することを予測してたはずなんだけど、なんでいまだにこんなにグダグダなのかね。

438:デフォルトの名無しさん
15/11/27 03:19:17.61 YhNUO5F2.net
Direct3Dシーンが混じるとDIP単位と物理ピクセル単位が混在し
ストアアプリでもグダることは稀に良くある

439:デフォルトの名無しさん
15/11/27 04:01:43.59 YhNUO5F2.net
写真のゲームの現象はなんだろな
リソース修飾子が適応される方法で自動的にscale-200の画像を読み込んだ上で
手動でスケーリングすべきD3D上のレイアウトを100%のまんま設定しちゃった感じかね


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