トップページ > プログラム > 2016年12月29日 > ICm4kcbN

書き込み順位&時間帯一覧

2 位/172 ID中時間01234567891011121314151617181920212223Total
書き込み数3100000001000000101000018



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
573
C#, C♯, C#相談室 Part91 [無断転載禁止]©2ch.net
★★Java質問・相談スレッド179★★ [無断転載禁止]©2ch.net
VB.NET質問スレ(Part43) [無断転載禁止]©2ch.net

書き込みレス一覧

C#, C♯, C#相談室 Part91 [無断転載禁止]©2ch.net
575 :デフォルトの名無しさん[sage]:2016/12/29(木) 00:38:59.83 ID:ICm4kcbN
>>573
ターゲットフレームワークが4以降なら直接IEnumerable<object>にキャストできる
Dictionary<,> は IEnumerable<KeyValuePair<,>> を実装している
.NET4以降ではIEnumerable<>は共変だからIEnumerable<派生>をIEnumerable<既定>として扱える
あと関係ないけど.NETの場合ジェネリックの型引数は
1つの場合はT、複数の場合はTKey, TValueのようにT〇〇と名付ける決まりだから
Java臭いキモい書き方はやめろ
C#, C♯, C#相談室 Part91 [無断転載禁止]©2ch.net
576 :573[sage]:2016/12/29(木) 00:49:52.62 ID:ICm4kcbN
すまん訂正
KeyValuePair<,>は値型だから不変だな
直接キャストはできないので>>572で全要素を個別にボックス化してやる必要がある
C#, C♯, C#相談室 Part91 [無断転載禁止]©2ch.net
577 :デフォルトの名無しさん[sage]:2016/12/29(木) 00:58:24.25 ID:ICm4kcbN
あと >object型の値がIEnumerable<V>を継承してるか、継承していたら変換する だけど、
IEnumerable<object>のかわりに単に非ジェネリックのIEnumerableにキャストすりゃいいよ
IEnumerable<>はIEnumerableを継承しているので、
IEnumerable<>なら要素が値型だろうが何だろうがIEnumerableには確実にキャストできる
どうしても<object>にしたいなら ((IEnumerable)obj).Cast<object>() で変換できる
★★Java質問・相談スレッド179★★ [無断転載禁止]©2ch.net
359 :デフォルトの名無しさん[sage]:2016/12/29(木) 01:22:03.23 ID:ICm4kcbN
無駄に複雑になるからだよ
フィールドが多態性を持つとなると仮想メソッドならぬ仮想フィールドアクセスみたいなものが必要になる
static final なフィールドはインスタンスメンバじゃなくて単なる定数だから、
実質的にはどこか他のクラスに定数を定義するのと変わらんので特に害はないというわけ
害はないけど特に必要性もないので、C#だとインターフェース内では一切フィールド使えなかったりする
★★Java質問・相談スレッド179★★ [無断転載禁止]©2ch.net
361 :デフォルトの名無しさん[sage]:2016/12/29(木) 09:41:30.42 ID:ICm4kcbN
細かいけどインスタンスメソッドはインスタンスにメモリを割り当てないぞ
インスタンスメソッドは実際にはインスタンスではなくクラスに属していて、インスタンスの型情報を基に各クラスのメソッドを検索する
フィールドも同様にまずクラスを見てアドレスを求めればいいのでやろうと思えば技術的に難しくはないはずだよ
Java設計者が実装コストに見合ったリターンがないという判断をしただけ
★★Java質問・相談スレッド179★★ [無断転載禁止]©2ch.net
364 :デフォルトの名無しさん[sage]:2016/12/29(木) 16:35:12.28 ID:ICm4kcbN
>>363
フィールドも宣言と実装を分ければいい話
VB.NET質問スレ(Part43) [無断転載禁止]©2ch.net
457 :デフォルトの名無しさん[sage]:2016/12/29(木) 18:11:55.59 ID:ICm4kcbN
今時ADO.NETなんて括りに意味はないぞ
Entity FrameworkとかもADO.NETに含まれているらしく、
もはや「.NETのデータベース関連の機能」というだけのふわっとした総称でしかない
単純に低レベルAPI使って普通にSQL投げたいだけならDbConnectionのあたりを適当にググれば十分
★★Java質問・相談スレッド179★★ [無断転載禁止]©2ch.net
369 :デフォルトの名無しさん[sage]:2016/12/29(木) 23:12:51.66 ID:ICm4kcbN
>>368
理解が甘い。
それだけの理屈だとメソッドもインターフェースに宣言できなくなっちゃうぞw
インターフェースで多重継承の問題が回避できる理由は、
インターフェースのメソッドは宣言のみで実装を持たないので、
継承階層上で同一のインターフェースがいくつ重複して継承されてようが
最終的にメソッドの実装は一つだけになるから。
そして、君はフィールドの宣言と実装は不可分であるという前提を暗に設けているけど、
C/C++のようにフィールドの宣言と実装を分離できる言語も存在する。
Javaがそうしなかったのは「そう判断したから」に過ぎない。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。