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 が建てる事。 建てられない場合は他を指定する事。
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バイト分の
161 名前:データが送られてきたときに100バイト取得出来るときと40バイト60バイトみたいに複数回に分けて送られてくるのはなんでなの? [] [ここ壊れてます]
162 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 20:48:58.18 ID:3PxZRlNz.net] >>160 知るかよw どんな質問だよw
163 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 20:52:27.20 ID:R/ItuJii.net] >>160 メーカーに聞きなよ つかC#関係ないじゃん
164 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 21:15:23.90 ID:3PxZRlNz.net] >>160 場違いな質問だけどまあちょっとだけフォロー。 今時シリアルポートが付いてるPCの方が少なくと思うからどうせUSB-シリアルの変換ブリッジ経由のアクセスだと思うけど、 USBはRS-232Cと違ってパケット単位の送受信になるから、アクセスの仕方によっては 見かけ上そのように見える可能性はあると思う。 まあ、たぶんこれは考え過ぎで関係ない。 恐らくデバイス側の仕様の線だろう。
165 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 22:14:59.79 ID:cazvS2P7.net] >>160 シリアル通信には『40バイト60バイトみたいに複数回に分けて送られ』 などという考えはありません。 まず「シリアル」通信とはどのような考えの通信なのかを勉強し直してください。
166 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 22:50:13.49 ID:0i22usD/.net] シリアル通信自体にはなくても、 シリアル → OS のバッファ → ファイルハンドル経由で受信 とかしてれば OS のバッファからはき出すタイミングと ファイルハンドル経由で読み取るタイミングとの関係で途中で切れることもあるんじゃね。 163 の言ってる USB のパケ単位の受信でも同じ要領なんだろうし。(たぶん)
167 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 23:09:35.66 ID:3PxZRlNz.net] まあ厳密に言えばUSBだって物理層レベルではただのシリアル通信だし、 232Cだって少なくともPCでは、一番下の水準だってハードウェアバッファに対してまとめて読み書きしてる だけなんだけどさ。
168 名前:デフォルトの名無しさん mailto:sage [2015/10/15(木) 23:50:33.81 ID:GlsuvrM1.net] 40バイトしか届いていない瞬間に読み出せば 40バイトしか読みとれないだろう それを「複数回に分けて送られてくる」とは言わないぜ 100バイト届いているのに40バイトしか読みとれないことは考えにくい
169 名前:デフォルトの名無しさん 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
170 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 00:30:04.83 ID:KAwMDrmB.net] と言うか、基本はデータ長を識別出来るようにして送った上で、 データ長分のデータをきちんと受け取ってから処理するようにすれば済む話で、 普通はそういう風に実装するよな。 パケ通信とかでもこの手の質問はよく挙がる。
171 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 08:14:43.34 ID:w2ONMRNp.net] ソリューションエクスプローラで、自分で作成したフォルダを右クリックして 追加-クラスで新規作成すると、namespace プロジェクト名.Class って拡張子(.Class)がついてしまうんだけど、これならないように設定できないの?
172 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 09:13:29.49 ID:IIEWzpZc.net] 拡張子ちゃうで
173 名前:デフォルトの名無しさん 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 これと逆のことをすればいい
174 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 23:51:28.24 ID:iL1w7ncH.net] 特定メソッドのオーバーロードが用意されている型のみを引数で受け取ることは出来ませんか?
175 名前:デフォルトの名無しさん mailto:sage [2015/10/16(金) 23:56:16.88 ID:/26VfrL0.net] >>173 何を言ってるのか全然わからない