1 名前:デフォルトの名無しさん (ワッチョイ 1e06-m8Mb) mailto:sageteoff [2017/04/22(土) 08:52:00.93 ID:iVvswOrb0.net] ■Visual Studio 2017 Community(無償の統合開発環境)等はこちら www.visualstudio.com/downloads/ ■コードを貼る場合はこちら ideone.com/ ■前スレ C#, C♯, C#相談室 Part92 echo.2ch.net/test/read.cgi/tech/1485589613/ ■次スレは>>970 が建てる事。 建てられない場合は他を指定する事。 VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
652 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 00:39:26.55 ID:cXv1v5r0a.net] >>621 うーん、普通にこっちのほうが分かりやすいと思うけどw 別にLINQ否定派じゃないよ IEnumerable<int> GetIndices() { List<int> dataA = new List<int>() { 1, 2, 3, 4, 5, 6 }; List<int> dataB = new List<int>() { 1, 2, 4, 3, 5, 6 }; for (int i = 0; i < dataA.Count; i++) if (dataA[i] != dataB[i]) yield return i; }
653 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 03:30:51.92 ID:x4iNladl0.net] Zipしたものをforeachで回すのが一番自然 IEnumerable<int> Hoge(IEnumerable<int> A, IEnumerable<int> B) { var i = 0; foreach (var eq in A.Zip(B, (a, b) => a == b)) { if (!eq) yield return i; i++; } } 自分はやらんけどLinqならこう dataA.Zip(dataB, (a, b) => a == b).Select((eq, i) => eq ? -1 : i).Where(i => i >= 0);
654 名前:611 mailto:sage [2018/08/08(水) 05:09:02.93 ID:9ryRYesD0.net] Zip知らんかったわー。超参考にする。
655 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 13:38:09.59 ID:CtU8HUVGd.net] インデックスが必要な時、わざわざselect挟んでインデックス貼るの馬鹿らしい感じがして好きになれないんだけど仕方ないよね? そんなにインデックスを参照することが多いなら生成時に一緒に貼っとけって話かもしれんが… そもそもlinqマスターはインデックスを必要としない設計にいつもなるの? 自分もインデックスが無くて済むように考えるけど結果的に必要になる箇所が細部で出てくるんだよね
656 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 14:08:00.53 ID:csO2M6exd.net] どうしても必要な時はselect((value, index) => new {V = value, I = index})でインデックス引っ張ってるわ それでもインデックス欲しい条件1行で書けるのが楽だからLinq便利派だけども
657 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 14:25:20.52 ID:CtU8HUVGd.net] >>630 俺もそれ、ちょくちょくするんだけどforで回したほうがよくね?って思っちゃうことがあるんだよね もちろん処理によりけりと言ってしまえばそれまでなんだけど 比較するようなもんじゃないかもしれんがjavascriptなんかだと大抵インデックス取れるから、そっち触ったあとにC#に戻ると処理考えるときにインデックスありきで考えがちになっちゃう気がしてる
658 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 14:32:55.42 ID:CtU8HUVGd.net] 先に出てた課題でもzipしたあと、そのままlinqで処理を完結させるか、zip後にforで回すか 個人的にはzipがどちらにせよ入るなら最後までlinqの方が1つの処理を1つの手法で解決してる感じがして好き だけどインデックスが処理に必要だからfor使いたいって気持ちもわかる
659 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 14:53:36.93 ID:bbTjp3FCd.net] >>631 まぁforのがいいと感じるならそれでもいいんじゃないかな 複雑な処理しない限りは大体Linqのがスッキリするからそうしてるだけだし
660 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 15:07:53.10 ID:x4iNladl0.net] こういう拡張メソッド作っておくのはたまにやる public static IEnumerable<int> WhereIndex<T>(this IEnumerable<T> self, Func<T, bool> predicate) { var i = 0; foreach(var s in self) { if(predicate(s)) yield return i; i++; } } dataA.Zip(dataB, (a, b) => a == b).WhereIndex(eq => !eq); 拡張メソッド嫌いな人もいるだろうけど一番読みやすい わざわざSelectでインデックスつけてる冗長さもないし、添字アクセスもないし、使う時はすっきり意味がわかりやすい
661 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 16:44:49.34 ID:Gn4Y43YUM.net] >>634 正直クソ分かりにくい 俺がレビューしたらリジェクトするわ WhereIndexというメソッド名を見たら大抵の人はインデックスをフィルタ条件にして要素の値を返すメソッドと誤解する そもそも
662 名前:メソッド名以前に、LINQって普通はキーやインデックスではなく要素の値を操作していくものっていう暗黙的了解があるから、 キーやインデックスの方を返すような操作については特に念入りにそれがわかるような明示的な表記になるように工夫したほうがいい [] [ここ壊れてます]
663 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 17:02:43.62 ID:0wIwbQiXM.net] SelectIndexWhere()ならどうか。英国紳士にも通じると思う
664 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 17:20:32.65 ID:o48M+fLoM.net] SelectWithIndexやな
665 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 17:26:15.62 ID:icN1uiHAa.net] SelectIndexFilteredByValue これでもパッと見 ? となる人は多そう
666 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 17:40:49.62 ID:Uqgxm++Va.net] >>636 IndicesWhereで十分でしょ Selectはいらんと思うw メソッドなのに動詞じゃないのはおかしいって言ったって、組み込みのWhereだってそうだ まあスレ違いだね。
667 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 18:11:22.97 ID:ucfZkVugd.net] >>639 誰が動詞じゃないとおかしいって?
668 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 18:27:19.45 ID:x4iNladl0.net] >>635 >WhereIndexというメソッド名を見たら大抵の人はインデックスをフィルタ条件にして要素の値を返すメソッドと誤解する そんなのはWhereでできるし >LINQって普通はキーやインデックスではなく要素の値を操作していくものっていう暗黙的了解があるから、 >キーやインデックスの方を返すような操作については それもSelectでできるし だいたい要素の値を操作していくものっていう暗黙的了解があるならWhereIndexも要素の値が対象と思うんじゃない? なんか矛盾してね?
669 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 19:23:56.51 ID:x4iNladl0.net] ほぼ同じ拡張メソッドでIndexWhereのが引っかかったわ 多分こっちの方が自然なんだろうな 一応候補だったんだが自分的にしっくりこなかったけど
670 名前:デフォルトの名無しさん mailto:sage [2018/08/09(木) 21:27:13.79 ID:s67NkejU0.net] >>631 ランダムアクセスできるとは限らんしっていうかLinqだとほとんど出来ない
671 名前:デフォルトの名無しさん mailto:sage [2018/08/09(木) 22:09:58.32 ID:VdJ1XdFa0.net] >>643 ランダムアクセスできないコレクション扱うときにインデックスが欲しくなるケースってなかなか無いと思うけど
672 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 23:12:00.00 ID:AJVeRJgN0.net] >>644 ランキングとかページングとかか?
673 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 00:11:00.13 ID:p6HuaRWz0.net] >>645 それってインデックスつけることが一つの目的じゃない? インデックスってかソートかな? いろんなところでいろんな処理されるコレクションがあって、その処理の殆どにインデックスが不要だけどごく一部にインデックスがほしいとき、わざわざ1行追加するのスッキリしないなぁって感じ たった1行なんだから書きゃいいんすよ? それはわかってるけどなんか気持ち悪いなぁって気がするだけ
674 名前:デフォルトの名無しさん [2018/08/11(土) 12:41:19.45 ID:YyI+aygL0.net] ほとんど必要が無いインデックスだけど ごく稀に必要になるから必要になるところでだけインデックスを追加するんだろ ほとんど使わないインデックスのためにずっとランダムアクセス性を維持するとか無駄じゃん
675 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 14:21:00.05 ID:WHbJdrO8a.net] 何を言ってるのか意味が分からんけど、indexって言葉の意味を知ってて言ってるのかなそれw
676 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 14:23:04.22 ID:p6HuaRWz0.net] >>647 いや、linqでインデックスを付与しないけどランダムアクセスすることはあるよ? 前提変えたらそら意味通らんよ コレクションをlinq以外で処理しちゃ駄目ルールでもあるの?
677 名前:デフォルトの名無しさん [2018/08/11(土) 14:36:01.31 ID:YyI+aygL0.net] >>649 なにいってんだ? IEnumerable<T>にインデックスなんてない ないからSelectで付与するんでしょ そんなルールはないけどほとんどほとんどLinqで済むでしょ? Linqでサクサク処理してるのに中に突然ループが紛れ込んできたらキモいって話をしてる var tmp = list.Where(...).OrderBy(...).ToArray(); for (int i = 0; ...) { ... } var result = tmp.Where(...).Select(...);
678 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 14:48:08.19 ID:p6HuaRWz0.net] >>650 え?ずっとそういう話をしてたのになんで突然 >ほとんど使わないインデックスのためにずっとランダムアクセス性を維持するとか無駄じゃん って書いたの? インデックスのないlinq処理でそれが必要になったときわざわざselectで付与するのなんか気持ち悪いねーって話よ?
679 名前:デフォルトの名無しさん [2018/08/11(土) 14:59:36.83 ID:YyI+aygL0.net] >>651 気持ち悪いのはお前の感覚ではという話だろ 俺からすればToArrayやToListをかましてメモリとCPUを無駄にしたり余計なメソッドを追加するほうが嫌 メソッド化に関しては再利用性が高いかうまく抽象化されていて可読性が高まるというなら別だが 真にランダムアクセス性が必要なアルゴリズムならば変換せざるを得ないがそもそも今回の問題には必要がない
680 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 15:12:53.25 ID:p6HuaRWz0.net] >>652 うん、そうだよ 個人的に気持ち悪いなーってだけ はじめからそういうふうにしか話ししてないつもりだけど ランダムアクセスが不要だからあえてランダムアクセスできないコレクションを選択するの? ランダムアクセスは不要だけどあったって使わないだけだからどっちでもいい、ってなるのが普通じゃないの? パフォーマンス要求がシビアでランダムアクセスできるコレクションを選択することで、その要求から外れてしまう、とかいうならわかるけど
681 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 15:28:37.80 ID:YyI+aygL0.net] >>653 ランダムアクセスが不要なアルゴリズムなら「当然」IEnumerable<T>(ランダムアクセスできないコレクション)を選択するだろう まったくもって「あえて」と言う理由が分からん もしもSelectやWhereの引数が配列だったら普通のプログラマなら「あえて配列にしたのはなぜか」と疑問を持つだろう なんか逆なんだよね思考パターンが
682 名前:デフォルトの名無しさん mailto:sage [2018/08/11(土) 15:33:32.78 ID:p6HuaRWz0.net] >>654 そういうもんかー んじゃあ使うコレクションがランダムアクセスを提供しているか否かを把握しとかないと選択できないな…
683 名前:デフォルトの名無しさん [2018/08/12(日) 00:56:37.14 ID:UOoEXFjMp.net] コレクションって言葉がダメだと思うぞ? そもそもIEnumerableはシーケンシャルな列挙の機能しか提供しない 根本的に理解が間違ってる
684 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 11:56:03.51 ID:GZni4QRja.net] コレクションという表現はおかしいね 無限に乱数を返すものをソースにできるし
685 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 15:21:46.30 ID:7meTQdNO0.net] マジレスするとメッセージ捕まえて 自力で描画すれば可能なんだけど 労力に見会わないのでお勧めしない webやWPF, UWPならグラ弄るの簡単
686 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 15:23:43.41 ID:7meTQdNO0.net] 誤爆しました すみません
687 名前:デフォルトの名無しさん mailto:sage [2018/09/09(日) 16:03:02.33 ID:RaawotRPM.net] のへこののけとこけノハケケノノネネサマを通り越しておりましたとが気になると7人
688 名前:デフォルトの名無しさん mailto:sage [2018/09/09(日) 16:03:23.33 ID:RaawotRPM.net] こねのこのねのけのねここけこそけ
689 名前:デフォルトの名無しさん mailto:sage [2018/09/13(木) 22:10:23.24 ID:IOzhaO6j0.net] doxygenみたいなドキュメント生成ツールを使うとxaml部分がまともに解析出来ません。 bindingしているviewとviewmodelの関係なんかが分かるドキュメントにしたいんですが何か良い方法ないでしょうか?
690 名前:デフォルトの名無しさん mailto:sage [2018/09/14(金) 22:17:10.47 ID:BClpbb6X0.net] Func<string> func = () => { return "text"; }; var res = func(); これを一文で書くことはできますか。 ふと気になっただけではあるけれど、自分で解決できなくて気になって仕方がない。 基本的なことが分かってないような気がする。
691 名前:デフォルトの名無しさん mailto:sage [2018/09/14(金) 22:28:35.55 ID:9WO+tdsEa.net] var res = "text";
692 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 00:16:02.34 ID:rZVfBBf1a.net] >>664 まあそうなるよな
693 名前:デフォルトの名無しさん [2018/09/15(土) 00:21:48.95 ID:elLmwu/20.net] 本当はなにをしたかったんだろう 例題が悪い気がする
694 名前:661 mailto:sage [2018/09/15(土) 00:41:48.54 ID:LMkhUY/p0.net] ああ、そうか。w パラメータに対してちょっと複雑な変換を掛けるのだけど、汎用性がないから専用関数作るのもなんだし、 だったらラムダ式で書けばいいんじゃね?→ ラムダ式は Func 型?だから戻り値とれねーじゃん ってところから進めなった
695 名前:。 他にやり方はあるので出来なくてもいいのだけど、気にはなって。 [] [ここ壊れてます]
696 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 01:22:08.16 ID:rZVfBBf1a.net] 専用関数でいいんじゃない? 複雑な処理ならそれこそ括りだしておいてわかりやすくしたほうがバグ出にくいし簡単でしょ
697 名前:デフォルトの名無しさん [2018/09/15(土) 05:59:42.97 ID:crViL/AR0.net] >>667 参照渡すとか?
698 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 15:15:22.99 ID:aC3C7hdpa.net] こんなのは嬉しくないね var pi = ( (Func<double>) ( () => { const int total = 1000000; var inside = 0; var rnd = new Random(); for (int i = 0; i < total; i++) { var x = rnd.NextDouble() * 2 - 1; var y = rnd.NextDouble() * 2 - 1; if (x * x + y * y < 1) inside++; } return 4.0 * inside / total; } ) )();
699 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 15:22:04.34 ID:aC3C7hdpa.net] これも却下だな Func<Func<double>, double> invoke = (f) => f(); var pi = invoke ( () => { const int total = 1000000; var inside = 0; var rnd = new Random(); for (int i = 0; i < total; i++) { var x = rnd.NextDouble() * 2 - 1; var y = rnd.NextDouble() * 2 - 1; if (x * x + y * y < 1) inside++; } return 4.0 * inside / total; } );
700 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 17:23:21.76 ID:aC3C7hdpa.net] 全然関係ないけど、Randomって[0, 1]とか(0, 1)の乱数は作れないのか 半開区間だと使いづらいような気がするけどそんなことないのかな
701 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 18:10:42.64 ID:ghSS5jwya.net] 言葉の意味はよくわからんが Randomは第二引数未満の乱数発生するんじゃ?
702 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 18:34:42.22 ID:nwnNkRfe0.net] docsにもあるけど https://docs.microsoft.com/ja-jp/dotnet/api/system.random?redirectedfrom=MSDN&view=netframework-4.7.2 dobonの方が分かりやすいし読みやすいから https://dobon.net/vb/dotnet/programing/random.html の //0.0以上1.0未満の乱数を倍精度浮動小数点数で返す Double d = r.NextDouble(); >>672 こういう意味とは違うの? 整数範囲で出して割った方が範囲や有効桁も決められるからそっちの方がよさそうな気もする
703 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 18:56:24.76 ID:aC3C7hdpa.net] [0, 1]とか(0, 1)は数学の記号ね(多分高校1年ぐらいで習ってるはずw) Random.DoubleNextの戻り値は[0, 1)(つまり0≦x<1)らしい 普段乱数使うようなコード書いてないからよく分からんけど、 0≦x≦1とか0<x<1でないと困る場面も多いんじゃないかなと思っただけ
704 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 19:01:32.64 ID:Bg+wr9i5a.net] えなんかめんどくさいからもういいよ
705 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 19:05:58.75 ID:nwnNkRfe0.net] 有効桁区切るのと一緒で丸め、切り上げ、切り捨てしたらいいだけでは Random自体C#で使う場面に出くわしたことないからあまり考えないな
706 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 20:19:51.91 ID:Fr67tYwB0.net] game engineだとか[]の乱数あったりするよ ()は見たことない コーディングしてたらわかるけど利用場面は圧倒的に少ない
707 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 20:30:38.93 ID:OUVvcRON0.net] >>667 > パラメータに対してちょっと複雑な変換を掛けるのだけど と言うなら例もパラメーター使ってる例を書かなきゃ >>670 俺もこれしか思いつかなかった そもそも var f = (string x) => { return "abc" + x; }; 位は型推論してくれてもいいと思うんだけど難しいのかな?
708 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 20:39:04.65 ID:OUVvcRON0.net] >>675 例えば0〜9の整数乱数がほしい時に[0,1)なら10倍して整数部分を取るだけだけど(0,1)とか[0,1]だとすごく面倒
709 名前:デフォルトの名無しさん [2018/09/15(土) 20:42:09.91 ID:KIanXBkQ0.net] 面倒だったら擬似乱数生成器を自分で作ればいい キミラ程度が使う程度の擬似乱数だったら数行コピペでできる程度のもんで十分だからな
710 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 20:49:32.65 ID:Xc5RKOnR0.net] >>667 ローカル関数じゃだめなん?
711 名前:デフォルトの名無しさん [2018/09/15(土) 20:53:08.93 ID:KIanXBkQ0.net] https://ideone.com/PJDFVv この程度で十分
712 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 21:33:37.63 ID:OUVvcRON0.net] >>681 , >>683 バカは絡んでくるな
713 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 21:35:49.16 ID:OUVvcRON0.net] >>682 本来必要のない名前を考えるのが面倒 そもそもローカル関数にするぐらいなら>>663 とたいして変わらんし
714 名前:デフォルトの名無しさん [2018/09/15(土) 21:37:43.29 ID:KIanXBkQ0.net] やっぱり低学歴知恵遅れは 内側の擬似乱数生成器をかえるだけの話なのがわかってないわ きっと擬似乱数がなんなのかすらわかってないわ 擬似乱数がなんなのかわからずに乱数()とかいって数字使ってる程度だからな
715 名前:デフォルトの名無しさん [2018/09/15(土) 21:39:33.01 ID:KIanXBkQ0.net] つまり コレがC#なんか使ってるヤツラのオツムの程度
716 名前:デフォルトの名無しさん [2018/09/15(土) 21:40:44.62 ID:qw6mr0Vb0.net] >>675 (0,1)は[0,1)が0ならやりなおし、でいいんじゃないのと単純に思ったがそんなものじゃない?
717 名前:デフォルトの名無しさん [2018/09/15(土) 22:05:16.77 ID:KIanXBkQ0.net] そもそも機械イプシロンのこと分かってて ああいうレスしてるようにはまったく見えないからな
718 名前:デフォルトの名無しさん mailto:sage [2018/09/15(土) 22:52:03.88 ID:OUVvcRON0.net] >>688 発生側はそれでいいとしてそれを必要とする機会がどんだけあるの? って話かと
719 名前:661 mailto:sage [2018/09/15(土) 23:10:36.43 ID:LMkhUY/p0.net] 気に掛けてくれた方々に。ありがとう。 >>670 ああ。なるほど。型を明示してあげたらよかったのか。 キャストを加えたら期待通りに書くことが出来ました。ありがとうございます。 これってラムダ式を var で宣言した変数に代入できなかったことがヒントになり得たんだな。頭が回ってなかった。 これくらいは型推論してくれても良さそうなのにとは原因が分かった後での負け惜しみ。 >>668 ,682 今回のはそういうことが出来そうなのに出来なくて悶々としてしまって。 実用性度外視で原因を知りたかったの。
720 名前:デフォルトの名無しさん mailto:sage [2018/09/16(日) 10:09:07.69 ID:QiF2mi6W0.net] 今ならref/outがないならAction/Funcに型推論して シグネチャが同じdelegate間の暗黙の型変換が行われる 初期化時に左辺とかキャストとかでdelegate型が明示されてたらそのdelegate型でnewされる でいいと思うよな〜
721 名前:デフォルトの名無しさん mailto:sage [2018/09/19(水) 06:50:46.79 ID:luZsj3k/0.net] Visual C#ってDelphiみたいに同じコードでWindows用とMac用にビルドできる? マシンは両方用意できるとして
722 名前:デフォルトの名無しさん mailto:sage [2018/09/19(水) 07:42:00.17 ID:JcyGHTPld.net] Visual C#って具体的にはどのフレームワークを指してるのかい?
723 名前:デフォルトの名無しさん mailto:sage [2018/09/19(水) 10:08:17.18 ID:WBt1GswEM.net] 可能
724 名前:デフォルトの名無しさん mailto:sage [2018/09/19(水) 12:41:26.38 ID:9aNAf/d20.net] >>693 コンソールアプリなら同じコードでどっちでも動くはずだけどGUIはよくわかんない Xamarin Forms使えばいけるのかな?
725 名前:デフォルトの名無しさん mailto:sage [2018/09/19(水) 13:59:56.78 ID:luZsj3k/0.net] 多分ASP.NETを使ってGUIのWebSocketクライアントを作る予定です ありがとうございます
726 名前:デフォルトの名無しさん mailto:sage [2018/09/19(水) 14:05:07.91 ID:8sfFLOeb0.net] MacでWebSocket?????? ちょっと何言ってるかわかんないですね
727 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 21:52:32.99 ID:rAzbq+Jy0.net] 下みたいなことって出来ます? やりたいのは object 型の変数に代入したジェネリック系のインスタンスを、さらに元のジェネリックの型にキャストし直すってことなんですが。 void func( object dic ) { var tmp = (Dictionary)dic; // ← これみたいなことをやる方法がないかなと tmp.Add( "test", new object() ); } var dic = new Dictionary< string, object >(); func( dic );
728 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 23:15:04.62 ID:dHSM7pQD0.net] as
729 名前:デフォルトの名無しさん mailto:sage [2018/09/26(水) 23:17:13.70 ID:+un+mAjX0.net] anal
730 名前:デフォルトの名無しさん mailto:sage [2018/09/27(木) 00:24:29.22 ID:WuETTr790.net] >>700 言葉が足りてなかった。申し訳ない。 例示のケースの場合は、 var tmp = (Dictionary<string,object>)dic; と指定すれば出来るのだけど、Dictionary だけでキャストし直すみたいなコトできないかなって。 as でも Dictionary だけではキャストできないことは確認しました。
731 名前:デフォルトの名無しさん mailto:sage [2018/09/27(木) 00:30:38.46 ID:5qvGm4LBa.net] 出来たとして何の意味があるのそれw そもそもHoge<int>より大きなHoge<T>とかHogeって型が存在するわけじゃないでしょうw 根本的に勘違いしてないか
732 名前:デフォルトの名無しさん mailto:sage [2018/09/27(木) 08:41:34.87 ID:649yR4/AM.net] genericsでないDictionaryは存在しないからでしょ。 genericsパッケージでないほうのHashtableならできると思うけど安全性を損ねるしやらんほうがいいんじゃね
733 名前:デフォルトの名無しさん mailto:sage [2018/09/27(木) 12:20:51.28 ID:/G4FYlhv0.net] IDictionaryならあるよ キャスト時にいちいち型引数を書くのが面倒ぐらいの意味しかないけど
734 名前:デフォルトの名無しさん mailto:sage [2018/09/27(木) 12:48:53.74 ID:sTtGwCQ3a.net] >>702 を読み直してみると、ひょっとして要するにジェネリックの型パラメータを書くのが面倒臭いから 省略できないか?、って言いたいのかな それなら答えは「できないけど仮に出来たとしても絶対やるな」じゃないの? もちろん、 using Dictionary = System.Collections.Generic.Dictionary<string, object>; こういうエイリアスは書けるはずだと思うけど 何にしろ、質問は他人が読んで分かるように書いて欲しいよね
735 名前:デフォルトの名無しさん mailto:sage [2018/09/27(木) 17:14:16.27 ID:kGqzP/YO0.net] 型安全性を無視していいならdynamic使え そうじゃないなら出来てもやるな つかジェネリックを勘違いしてるんじゃね
736 名前:デフォルトの名無しさん mailto:sage [2018/09/27(木) 17:21:14.85 ID:Q+zVeK5uM.net] それによって何がしたいのかを書いてくれないと何言ってるかわからんよな
737 名前:697 mailto:sage [2018/09/29(土) 00:47:34.72 ID:EY+8Y7mF0.net] ありがと。 やっぱり dynamic 使うしかないかな。避けたかったのだけど。 なにが入ってるか分からない配列の中身を文字列化してログ出力したかったの。(最初は) object[] の要素の中身が generic だったりしたときに ToString() だとクラス名?にしかならないから。
738 名前:デフォルトの名無しさん mailto:sage [2018/09/29(土) 03:23:52.22 ID:BJdQm5Iw0.net] なんで何が入ってるかわからない配列なんてもんを触るんだ 静的型付け言語のメリット台無しやんけ
739 名前:デフォルトの名無しさん mailto:sage [2018/09/29(土) 09:01:26.24 ID:FmliS3qN0.net] 何が入っているかわからないものを扱いたいと言っていながら一方でdynamicは避けたいというのが よくわからんなぁ。避けてどうしたかったんだろうか。
740 名前:デフォルトの名無しさん mailto:sage [2018/09/29(土) 11:56:45.30 ID:EY+8Y7mF0.net] 単に dynamic が嫌いだったのから。w
741 名前:デフォルトの名無しさん mailto:sage [2018/09/29(土) 12:32:33.34 ID:3Hj8wsg1M.net] ふーん。頭が悪いからじゃなかったのか
742 名前:デフォルトの名無しさん mailto:sage [2018/09/29(土) 14:34:45.14 ID:9IdCJ4nKM.net] たぶんjsとかの感覚で言ってるんじゃないかと
743 名前:デフォルトの名無しさん mailto:sage [2018/09/29(土) 14:42:39.43 ID:FmliS3qN0.net] でもJSも実行時に型を判断できるし、逆の意味で大して変わらんと思う。
744 名前:デフォルトの名無しさん mailto:sage [2018/09/29(土) 15:07:47.86 ID:EY+8Y7mF0.net] あれ? dynamic って推奨だったの? おまえらがどういう場面で使ってるのか教えてくれ。
745 名前:デフォルトの名無しさん mailto:sage [2018/09/29(土) 16:47:06.91 ID:rkT/I8Hma.net] デシリアライズでもするつもりだったんじゃねの クッソ面倒なんだよな実際
746 名前:デフォルトの名無しさん mailto:sage [2018/09/29(土) 16:56:30.70 ID:X4waiIaR0.net] ん? > なにが入ってるか分からない配列の中身を文字列化してログ出力したかったの。(最初は) じゃねーの?
747 名前:デフォルトの名無しさん mailto:sage [2018/09/29(土) 18:05:26.03 ID:w5r/wslsa.net] もういいでしょw たぶん何か勘違いしてるだけだ
748 名前:ニ思うよ 俺もプログラミング初めて2,3年は静的/動的とかコンパイル時/実行時の違いとか 分かってるようでよく分かってなかった [] [ここ壊れてます]
749 名前:デフォルトの名無しさん mailto:sage [2018/09/29(土) 19:25:50.32 ID:rSQsiXYHa.net] 結局なにがしたいのか伝わってこない上に 微妙にムカつく上から目線
750 名前:デフォルトの名無しさん mailto:sage [2018/10/06(土) 12:04:22.29 ID:upBech+00.net] それは此処の仕様。
751 名前:デフォルトの名無しさん mailto:sage [2018/10/07(日) 19:19:55.60 ID:QvnX76F+0.net] そろそろ.NET標準でDDSのデコードできるようになってくれないかな エクスプローラーでは普通に表示されるんだから できればBC6と7までw
752 名前:デフォルトの名無しさん mailto:sage [2018/10/07(日) 19:43:24.02 ID:mZPrgRqf0.net] >>722 DDS?