■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/
■コードを貼る場合はこちら
http://ideone.com/
■前スレ
C#, C♯, C#相談室 Part92
http://echo.2ch.net/test/read.cgi/tech/1485589613/
■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
探検
C#, C♯, C#相談室 Part93©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 1e06-m8Mb)
2017/04/22(土) 08:52:00.93ID:iVvswOrb0612デフォルトの名無しさん (ワッチョイ 639f-wFhy)
2018/08/07(火) 21:24:07.13ID:ly4lPw5D0 lLINQでやらんとあかんのかなんなのか
613デフォルトの名無しさん (ワッチョイ 4381-XZMm)
2018/08/07(火) 21:29:04.18ID:BzL1Bfeb0 こういうのってforで一つずつ比較するのが一番読みやすくて楽じゃね?
614611 (ワッチョイ b3e3-10BI)
2018/08/07(火) 21:35:47.39ID:UKw4EMmv0 無理矢理LINQつかってみたけど>>613に一票
615デフォルトの名無しさん (ワッチョイ 639a-7rws)
2018/08/07(火) 21:36:11.45ID:q6HoXiPg0616デフォルトの名無しさん (ワッチョイ ff58-0Uuo)
2018/08/07(火) 21:41:47.05ID:7nA6P5yg0 dataAとdataBが1000件以上あるので、まず単純に変更してるのがあるか?で
SequenceEqualを使ってみた流れでLINQを調べていた流れで知りたかったです。
forで書くのがわかりやすいとは思うけど、LINQでもっとうまく書けるかなと思って
>>611参考になりました。ありがとうございます!
SequenceEqualを使ってみた流れでLINQを調べていた流れで知りたかったです。
forで書くのがわかりやすいとは思うけど、LINQでもっとうまく書けるかなと思って
>>611参考になりました。ありがとうございます!
617デフォルトの名無しさん (ワッチョイ 539e-e/QH)
2018/08/07(火) 21:43:44.13ID:5i41CNK00 for では、比較されるレコードが送られてくるけど、
LINQ では、答えしか送られてこないから、効率的
LINQ では、答えしか送られてこないから、効率的
618デフォルトの名無しさん (アウアウカー Sa07-kkiZ)
2018/08/07(火) 23:11:20.30ID:EHUuk9/6a zip使えばいいんでね?
619デフォルトの名無しさん (ワッチョイ 8f9f-I2NA)
2018/08/07(火) 23:26:49.96ID:WUtnzCvr0 Linqのほうがわかりやすいし、ソースがランダムアクセスできるとも限らんだろ
シーケンスを束ねてインデックス振って比較して違うやつだけ取り出してインデックスを取り出す
Linqなら思ったことをそのまま書けばいい
IEnumerable<int> Hoge<T>(IEnumerable<T> a, IEnumerable<T> b) {
var comp = Comparer<T>.Default;
return a.Zip(b, (x, y) => (x, y)) // シーケンスを束ねて
.Select((e, i) => (i, e.x, e.y)) // インデックス振って
.Where(e => comp.Compare(e.x, e.y) != 0) // 比較して違うやつだけ取り出して
.Select(e => e.i); // インデックスを取り出す
}
ループじゃぱっとみ何やってるかわかんねえよ
シーケンスを束ねてインデックス振って比較して違うやつだけ取り出してインデックスを取り出す
Linqなら思ったことをそのまま書けばいい
IEnumerable<int> Hoge<T>(IEnumerable<T> a, IEnumerable<T> b) {
var comp = Comparer<T>.Default;
return a.Zip(b, (x, y) => (x, y)) // シーケンスを束ねて
.Select((e, i) => (i, e.x, e.y)) // インデックス振って
.Where(e => comp.Compare(e.x, e.y) != 0) // 比較して違うやつだけ取り出して
.Select(e => e.i); // インデックスを取り出す
}
ループじゃぱっとみ何やってるかわかんねえよ
620デフォルトの名無しさん (ワッチョイ 63d2-LrSd)
2018/08/07(火) 23:31:30.75ID:kuothdai0621デフォルトの名無しさん (ワッチョイ cfe8-Xflc)
2018/08/07(火) 23:35:51.16ID:vAj7NHSO0 LINQってEntityFrameworkでしか用途なくねえ?
622デフォルトの名無しさん (ワッチョイ ffd2-VIZ/)
2018/08/07(火) 23:37:10.34ID:9e6mZaIW0 >>621
は?
は?
623デフォルトの名無しさん (ワッチョイ 639f-wFhy)
2018/08/07(火) 23:40:05.44ID:ly4lPw5D0624デフォルトの名無しさん (アウアウエー Sadf-Eypl)
2018/08/08(水) 00:39:26.55ID:cXv1v5r0a >>619
うーん、普通にこっちのほうが分かりやすいと思うけど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;
}
うーん、普通にこっちのほうが分かりやすいと思うけど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;
}
625デフォルトの名無しさん (ワッチョイ 338a-Xflc)
2018/08/08(水) 03:30:51.92ID:x4iNladl0 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);
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);
626611 (ワッチョイ b3e3-MBU+)
2018/08/08(水) 05:09:02.93ID:9ryRYesD0 Zip知らんかったわー。超参考にする。
627デフォルトの名無しさん (スップ Sd1f-Bh6x)
2018/08/08(水) 13:38:09.59ID:CtU8HUVGd インデックスが必要な時、わざわざselect挟んでインデックス貼るの馬鹿らしい感じがして好きになれないんだけど仕方ないよね?
そんなにインデックスを参照することが多いなら生成時に一緒に貼っとけって話かもしれんが…
そもそもlinqマスターはインデックスを必要としない設計にいつもなるの?
自分もインデックスが無くて済むように考えるけど結果的に必要になる箇所が細部で出てくるんだよね
そんなにインデックスを参照することが多いなら生成時に一緒に貼っとけって話かもしれんが…
そもそもlinqマスターはインデックスを必要としない設計にいつもなるの?
自分もインデックスが無くて済むように考えるけど結果的に必要になる箇所が細部で出てくるんだよね
628デフォルトの名無しさん (スプッッ Sd1f-hmJy)
2018/08/08(水) 14:08:00.53ID:csO2M6exd どうしても必要な時はselect((value, index) => new {V = value, I = index})でインデックス引っ張ってるわ
それでもインデックス欲しい条件1行で書けるのが楽だからLinq便利派だけども
それでもインデックス欲しい条件1行で書けるのが楽だからLinq便利派だけども
629デフォルトの名無しさん (スップ Sd1f-Bh6x)
2018/08/08(水) 14:25:20.52ID:CtU8HUVGd >>628
俺もそれ、ちょくちょくするんだけどforで回したほうがよくね?って思っちゃうことがあるんだよね
もちろん処理によりけりと言ってしまえばそれまでなんだけど
比較するようなもんじゃないかもしれんがjavascriptなんかだと大抵インデックス取れるから、そっち触ったあとにC#に戻ると処理考えるときにインデックスありきで考えがちになっちゃう気がしてる
俺もそれ、ちょくちょくするんだけどforで回したほうがよくね?って思っちゃうことがあるんだよね
もちろん処理によりけりと言ってしまえばそれまでなんだけど
比較するようなもんじゃないかもしれんがjavascriptなんかだと大抵インデックス取れるから、そっち触ったあとにC#に戻ると処理考えるときにインデックスありきで考えがちになっちゃう気がしてる
630デフォルトの名無しさん (スップ Sd1f-Bh6x)
2018/08/08(水) 14:32:55.42ID:CtU8HUVGd 先に出てた課題でもzipしたあと、そのままlinqで処理を完結させるか、zip後にforで回すか
個人的にはzipがどちらにせよ入るなら最後までlinqの方が1つの処理を1つの手法で解決してる感じがして好き
だけどインデックスが処理に必要だからfor使いたいって気持ちもわかる
個人的にはzipがどちらにせよ入るなら最後までlinqの方が1つの処理を1つの手法で解決してる感じがして好き
だけどインデックスが処理に必要だからfor使いたいって気持ちもわかる
631デフォルトの名無しさん (スプッッ Sd1f-hmJy)
2018/08/08(水) 14:53:36.93ID:bbTjp3FCd632デフォルトの名無しさん (ワッチョイ 338a-Xflc)
2018/08/08(水) 15:07:53.10ID:x4iNladl0 こういう拡張メソッド作っておくのはたまにやる
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でインデックスつけてる冗長さもないし、添字アクセスもないし、使う時はすっきり意味がわかりやすい
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でインデックスつけてる冗長さもないし、添字アクセスもないし、使う時はすっきり意味がわかりやすい
633デフォルトの名無しさん (ブーイモ MMa7-A/YO)
2018/08/08(水) 16:44:49.34ID:Gn4Y43YUM >>632
正直クソ分かりにくい
俺がレビューしたらリジェクトするわ
WhereIndexというメソッド名を見たら大抵の人はインデックスをフィルタ条件にして要素の値を返すメソッドと誤解する
そもそもメソッド名以前に、LINQって普通はキーやインデックスではなく要素の値を操作していくものっていう暗黙的了解があるから、
キーやインデックスの方を返すような操作については特に念入りにそれがわかるような明示的な表記になるように工夫したほうがいい
正直クソ分かりにくい
俺がレビューしたらリジェクトするわ
WhereIndexというメソッド名を見たら大抵の人はインデックスをフィルタ条件にして要素の値を返すメソッドと誤解する
そもそもメソッド名以前に、LINQって普通はキーやインデックスではなく要素の値を操作していくものっていう暗黙的了解があるから、
キーやインデックスの方を返すような操作については特に念入りにそれがわかるような明示的な表記になるように工夫したほうがいい
634デフォルトの名無しさん (ブーイモ MMff-3LBS)
2018/08/08(水) 17:02:43.62ID:0wIwbQiXM SelectIndexWhere()ならどうか。英国紳士にも通じると思う
635デフォルトの名無しさん (ドコグロ MM07-wFhy)
2018/08/08(水) 17:20:32.65ID:o48M+fLoM SelectWithIndexやな
636デフォルトの名無しさん (アウアウウー Saa7-A/YO)
2018/08/08(水) 17:26:15.62ID:icN1uiHAa SelectIndexFilteredByValue
これでもパッと見 ? となる人は多そう
これでもパッと見 ? となる人は多そう
637デフォルトの名無しさん (アウアウエー Sadf-Eypl)
2018/08/08(水) 17:40:49.62ID:Uqgxm++Va638デフォルトの名無しさん (スプッッ Sd47-VIZ/)
2018/08/08(水) 18:11:22.97ID:ucfZkVugd >>637
誰が動詞じゃないとおかしいって?
誰が動詞じゃないとおかしいって?
639デフォルトの名無しさん (ワッチョイ 338a-Xflc)
2018/08/08(水) 18:27:19.45ID:x4iNladl0 >>633
>WhereIndexというメソッド名を見たら大抵の人はインデックスをフィルタ条件にして要素の値を返すメソッドと誤解する
そんなのはWhereでできるし
>LINQって普通はキーやインデックスではなく要素の値を操作していくものっていう暗黙的了解があるから、
>キーやインデックスの方を返すような操作については
それもSelectでできるし
だいたい要素の値を操作していくものっていう暗黙的了解があるならWhereIndexも要素の値が対象と思うんじゃない?
なんか矛盾してね?
>WhereIndexというメソッド名を見たら大抵の人はインデックスをフィルタ条件にして要素の値を返すメソッドと誤解する
そんなのはWhereでできるし
>LINQって普通はキーやインデックスではなく要素の値を操作していくものっていう暗黙的了解があるから、
>キーやインデックスの方を返すような操作については
それもSelectでできるし
だいたい要素の値を操作していくものっていう暗黙的了解があるならWhereIndexも要素の値が対象と思うんじゃない?
なんか矛盾してね?
640デフォルトの名無しさん (ワッチョイ 338a-Xflc)
2018/08/08(水) 19:23:56.51ID:x4iNladl0 ほぼ同じ拡張メソッドでIndexWhereのが引っかかったわ
多分こっちの方が自然なんだろうな
一応候補だったんだが自分的にしっくりこなかったけど
多分こっちの方が自然なんだろうな
一応候補だったんだが自分的にしっくりこなかったけど
641デフォルトの名無しさん (ワッチョイ 4e9f-+CD1)
2018/08/09(木) 21:27:13.79ID:s67NkejU0 >>629
ランダムアクセスできるとは限らんしっていうかLinqだとほとんど出来ない
ランダムアクセスできるとは限らんしっていうかLinqだとほとんど出来ない
642デフォルトの名無しさん (ワッチョイ 5ae9-8ulZ)
2018/08/09(木) 22:09:58.32ID:VdJ1XdFa0 >>641
ランダムアクセスできないコレクション扱うときにインデックスが欲しくなるケースってなかなか無いと思うけど
ランダムアクセスできないコレクション扱うときにインデックスが欲しくなるケースってなかなか無いと思うけど
643デフォルトの名無しさん (ワッチョイ 4e9f-+CD1)
2018/08/10(金) 23:12:00.00ID:AJVeRJgN0 >>642
ランキングとかページングとかか?
ランキングとかページングとかか?
644デフォルトの名無しさん (ワッチョイ de81-8ulZ)
2018/08/11(土) 00:11:00.13ID:p6HuaRWz0 >>643
それってインデックスつけることが一つの目的じゃない?
インデックスってかソートかな?
いろんなところでいろんな処理されるコレクションがあって、その処理の殆どにインデックスが不要だけどごく一部にインデックスがほしいとき、わざわざ1行追加するのスッキリしないなぁって感じ
たった1行なんだから書きゃいいんすよ?
それはわかってるけどなんか気持ち悪いなぁって気がするだけ
それってインデックスつけることが一つの目的じゃない?
インデックスってかソートかな?
いろんなところでいろんな処理されるコレクションがあって、その処理の殆どにインデックスが不要だけどごく一部にインデックスがほしいとき、わざわざ1行追加するのスッキリしないなぁって感じ
たった1行なんだから書きゃいいんすよ?
それはわかってるけどなんか気持ち悪いなぁって気がするだけ
645デフォルトの名無しさん (ワッチョイ 4e9f-+CD1)
2018/08/11(土) 12:41:19.45ID:YyI+aygL0 ほとんど必要が無いインデックスだけど
ごく稀に必要になるから必要になるところでだけインデックスを追加するんだろ
ほとんど使わないインデックスのためにずっとランダムアクセス性を維持するとか無駄じゃん
ごく稀に必要になるから必要になるところでだけインデックスを追加するんだろ
ほとんど使わないインデックスのためにずっとランダムアクセス性を維持するとか無駄じゃん
646デフォルトの名無しさん (アウアウエー Sac2-XPKg)
2018/08/11(土) 14:21:00.05ID:WHbJdrO8a 何を言ってるのか意味が分からんけど、indexって言葉の意味を知ってて言ってるのかなそれw
647デフォルトの名無しさん (ワッチョイ de81-8ulZ)
2018/08/11(土) 14:23:04.22ID:p6HuaRWz0648デフォルトの名無しさん (ワッチョイ 4e9f-+CD1)
2018/08/11(土) 14:36:01.31ID:YyI+aygL0 >>647
なにいってんだ?
IEnumerable<T>にインデックスなんてない
ないからSelectで付与するんでしょ
そんなルールはないけどほとんどほとんどLinqで済むでしょ?
Linqでサクサク処理してるのに中に突然ループが紛れ込んできたらキモいって話をしてる
var tmp = list.Where(...).OrderBy(...).ToArray();
for (int i = 0; ...) {
...
}
var result = tmp.Where(...).Select(...);
なにいってんだ?
IEnumerable<T>にインデックスなんてない
ないからSelectで付与するんでしょ
そんなルールはないけどほとんどほとんどLinqで済むでしょ?
Linqでサクサク処理してるのに中に突然ループが紛れ込んできたらキモいって話をしてる
var tmp = list.Where(...).OrderBy(...).ToArray();
for (int i = 0; ...) {
...
}
var result = tmp.Where(...).Select(...);
649デフォルトの名無しさん (ワッチョイ de81-8ulZ)
2018/08/11(土) 14:48:08.19ID:p6HuaRWz0 >>648
え?ずっとそういう話をしてたのになんで突然
>ほとんど使わないインデックスのためにずっとランダムアクセス性を維持するとか無駄じゃん
って書いたの?
インデックスのないlinq処理でそれが必要になったときわざわざselectで付与するのなんか気持ち悪いねーって話よ?
え?ずっとそういう話をしてたのになんで突然
>ほとんど使わないインデックスのためにずっとランダムアクセス性を維持するとか無駄じゃん
って書いたの?
インデックスのないlinq処理でそれが必要になったときわざわざselectで付与するのなんか気持ち悪いねーって話よ?
650デフォルトの名無しさん (ワッチョイ 4e9f-+CD1)
2018/08/11(土) 14:59:36.83ID:YyI+aygL0 >>649
気持ち悪いのはお前の感覚ではという話だろ
俺からすればToArrayやToListをかましてメモリとCPUを無駄にしたり余計なメソッドを追加するほうが嫌
メソッド化に関しては再利用性が高いかうまく抽象化されていて可読性が高まるというなら別だが
真にランダムアクセス性が必要なアルゴリズムならば変換せざるを得ないがそもそも今回の問題には必要がない
気持ち悪いのはお前の感覚ではという話だろ
俺からすればToArrayやToListをかましてメモリとCPUを無駄にしたり余計なメソッドを追加するほうが嫌
メソッド化に関しては再利用性が高いかうまく抽象化されていて可読性が高まるというなら別だが
真にランダムアクセス性が必要なアルゴリズムならば変換せざるを得ないがそもそも今回の問題には必要がない
651デフォルトの名無しさん (ワッチョイ de81-8ulZ)
2018/08/11(土) 15:12:53.25ID:p6HuaRWz0 >>650
うん、そうだよ
個人的に気持ち悪いなーってだけ
はじめからそういうふうにしか話ししてないつもりだけど
ランダムアクセスが不要だからあえてランダムアクセスできないコレクションを選択するの?
ランダムアクセスは不要だけどあったって使わないだけだからどっちでもいい、ってなるのが普通じゃないの?
パフォーマンス要求がシビアでランダムアクセスできるコレクションを選択することで、その要求から外れてしまう、とかいうならわかるけど
うん、そうだよ
個人的に気持ち悪いなーってだけ
はじめからそういうふうにしか話ししてないつもりだけど
ランダムアクセスが不要だからあえてランダムアクセスできないコレクションを選択するの?
ランダムアクセスは不要だけどあったって使わないだけだからどっちでもいい、ってなるのが普通じゃないの?
パフォーマンス要求がシビアでランダムアクセスできるコレクションを選択することで、その要求から外れてしまう、とかいうならわかるけど
652デフォルトの名無しさん (ワッチョイ 4e9f-+CD1)
2018/08/11(土) 15:28:37.80ID:YyI+aygL0 >>651
ランダムアクセスが不要なアルゴリズムなら「当然」IEnumerable<T>(ランダムアクセスできないコレクション)を選択するだろう
まったくもって「あえて」と言う理由が分からん
もしもSelectやWhereの引数が配列だったら普通のプログラマなら「あえて配列にしたのはなぜか」と疑問を持つだろう
なんか逆なんだよね思考パターンが
ランダムアクセスが不要なアルゴリズムなら「当然」IEnumerable<T>(ランダムアクセスできないコレクション)を選択するだろう
まったくもって「あえて」と言う理由が分からん
もしもSelectやWhereの引数が配列だったら普通のプログラマなら「あえて配列にしたのはなぜか」と疑問を持つだろう
なんか逆なんだよね思考パターンが
653デフォルトの名無しさん (ワッチョイ de81-8ulZ)
2018/08/11(土) 15:33:32.78ID:p6HuaRWz0654デフォルトの名無しさん (ササクッテロラ Sp03-bBK3)
2018/08/12(日) 00:56:37.14ID:UOoEXFjMp コレクションって言葉がダメだと思うぞ?
そもそもIEnumerableはシーケンシャルな列挙の機能しか提供しない
根本的に理解が間違ってる
そもそもIEnumerableはシーケンシャルな列挙の機能しか提供しない
根本的に理解が間違ってる
655デフォルトの名無しさん (アウアウウー Sa2f-Qb5F)
2018/08/12(日) 11:56:03.51ID:GZni4QRja コレクションという表現はおかしいね
無限に乱数を返すものをソースにできるし
無限に乱数を返すものをソースにできるし
656デフォルトの名無しさん (ワッチョイ 5e93-BjmP)
2018/08/23(木) 15:21:46.30ID:7meTQdNO0 マジレスするとメッセージ捕まえて
自力で描画すれば可能なんだけど
労力に見会わないのでお勧めしない
webやWPF, UWPならグラ弄るの簡単
自力で描画すれば可能なんだけど
労力に見会わないのでお勧めしない
webやWPF, UWPならグラ弄るの簡単
657デフォルトの名無しさん (ワッチョイ 5e93-BjmP)
2018/08/23(木) 15:23:43.41ID:7meTQdNO0 誤爆しました すみません
658デフォルトの名無しさん (ワントンキン MMaa-otBq)
2018/09/09(日) 16:03:02.33ID:RaawotRPM のへこののけとこけノハケケノノネネサマを通り越しておりましたとが気になると7人
659デフォルトの名無しさん (ワントンキン MMaa-otBq)
2018/09/09(日) 16:03:23.33ID:RaawotRPM こねのこのねのけのねここけこそけ
660デフォルトの名無しさん (ワッチョイ b759-EyNT)
2018/09/13(木) 22:10:23.24ID:IOzhaO6j0 doxygenみたいなドキュメント生成ツールを使うとxaml部分がまともに解析出来ません。
bindingしているviewとviewmodelの関係なんかが分かるドキュメントにしたいんですが何か良い方法ないでしょうか?
bindingしているviewとviewmodelの関係なんかが分かるドキュメントにしたいんですが何か良い方法ないでしょうか?
661デフォルトの名無しさん (ワッチョイ 57d2-NCQU)
2018/09/14(金) 22:17:10.47ID:BClpbb6X0 Func<string> func = () => { return "text"; };
var res = func();
これを一文で書くことはできますか。
ふと気になっただけではあるけれど、自分で解決できなくて気になって仕方がない。
基本的なことが分かってないような気がする。
var res = func();
これを一文で書くことはできますか。
ふと気になっただけではあるけれど、自分で解決できなくて気になって仕方がない。
基本的なことが分かってないような気がする。
662デフォルトの名無しさん (アウアウエー Sadf-v8l+)
2018/09/14(金) 22:28:35.55ID:9WO+tdsEa var res = "text";
663デフォルトの名無しさん (アウアウウー Sa1b-Za27)
2018/09/15(土) 00:16:02.34ID:rZVfBBf1a >>662
まあそうなるよな
まあそうなるよな
664デフォルトの名無しさん (ワッチョイ ffe8-okpm)
2018/09/15(土) 00:21:48.95ID:elLmwu/20 本当はなにをしたかったんだろう
例題が悪い気がする
例題が悪い気がする
665661 (ワッチョイ 57d2-NCQU)
2018/09/15(土) 00:41:48.54ID:LMkhUY/p0 ああ、そうか。w
パラメータに対してちょっと複雑な変換を掛けるのだけど、汎用性がないから専用関数作るのもなんだし、
だったらラムダ式で書けばいいんじゃね?→ ラムダ式は Func 型?だから戻り値とれねーじゃん ってところから進めなった。
他にやり方はあるので出来なくてもいいのだけど、気にはなって。
パラメータに対してちょっと複雑な変換を掛けるのだけど、汎用性がないから専用関数作るのもなんだし、
だったらラムダ式で書けばいいんじゃね?→ ラムダ式は Func 型?だから戻り値とれねーじゃん ってところから進めなった。
他にやり方はあるので出来なくてもいいのだけど、気にはなって。
666デフォルトの名無しさん (アウアウウー Sa1b-Za27)
2018/09/15(土) 01:22:08.16ID:rZVfBBf1a 専用関数でいいんじゃない?
複雑な処理ならそれこそ括りだしておいてわかりやすくしたほうがバグ出にくいし簡単でしょ
複雑な処理ならそれこそ括りだしておいてわかりやすくしたほうがバグ出にくいし簡単でしょ
667デフォルトの名無しさん (ワッチョイ ff81-meyQ)
2018/09/15(土) 05:59:42.97ID:crViL/AR0 >>665
参照渡すとか?
参照渡すとか?
668デフォルトの名無しさん (アウアウエー Sadf-v8l+)
2018/09/15(土) 15:15:22.99ID:aC3C7hdpa こんなのは嬉しくないね
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;
}
)
)();
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;
}
)
)();
669デフォルトの名無しさん (アウアウエー Sadf-v8l+)
2018/09/15(土) 15:22:04.34ID:aC3C7hdpa これも却下だな
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;
}
);
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;
}
);
670デフォルトの名無しさん (アウアウエー Sadf-v8l+)
2018/09/15(土) 17:23:21.76ID:aC3C7hdpa 全然関係ないけど、Randomって[0, 1]とか(0, 1)の乱数は作れないのか
半開区間だと使いづらいような気がするけどそんなことないのかな
半開区間だと使いづらいような気がするけどそんなことないのかな
671デフォルトの名無しさん (アウアウウー Sa1b-Symf)
2018/09/15(土) 18:10:42.64ID:ghSS5jwya 言葉の意味はよくわからんが
Randomは第二引数未満の乱数発生するんじゃ?
Randomは第二引数未満の乱数発生するんじゃ?
672デフォルトの名無しさん (ワッチョイ d79a-KGwk)
2018/09/15(土) 18:34:42.22ID:nwnNkRfe0 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();
>>670こういう意味とは違うの?
整数範囲で出して割った方が範囲や有効桁も決められるからそっちの方がよさそうな気もする
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();
>>670こういう意味とは違うの?
整数範囲で出して割った方が範囲や有効桁も決められるからそっちの方がよさそうな気もする
673デフォルトの名無しさん (アウアウエー Sadf-v8l+)
2018/09/15(土) 18:56:24.76ID:aC3C7hdpa [0, 1]とか(0, 1)は数学の記号ね(多分高校1年ぐらいで習ってるはずw)
Random.DoubleNextの戻り値は[0, 1)(つまり0≦x<1)らしい
普段乱数使うようなコード書いてないからよく分からんけど、
0≦x≦1とか0<x<1でないと困る場面も多いんじゃないかなと思っただけ
Random.DoubleNextの戻り値は[0, 1)(つまり0≦x<1)らしい
普段乱数使うようなコード書いてないからよく分からんけど、
0≦x≦1とか0<x<1でないと困る場面も多いんじゃないかなと思っただけ
674デフォルトの名無しさん (アウアウウー Sa1b-Za27)
2018/09/15(土) 19:01:32.64ID:Bg+wr9i5a えなんかめんどくさいからもういいよ
675デフォルトの名無しさん (ワッチョイ d79a-KGwk)
2018/09/15(土) 19:05:58.75ID:nwnNkRfe0 有効桁区切るのと一緒で丸め、切り上げ、切り捨てしたらいいだけでは
Random自体C#で使う場面に出くわしたことないからあまり考えないな
Random自体C#で使う場面に出くわしたことないからあまり考えないな
676デフォルトの名無しさん (ワッチョイ ff81-D+RE)
2018/09/15(土) 20:19:51.91ID:Fr67tYwB0 game engineだとか[]の乱数あったりするよ
()は見たことない
コーディングしてたらわかるけど利用場面は圧倒的に少ない
()は見たことない
コーディングしてたらわかるけど利用場面は圧倒的に少ない
677デフォルトの名無しさん (ワッチョイ 9fb3-0AE+)
2018/09/15(土) 20:30:38.93ID:OUVvcRON0678デフォルトの名無しさん (ワッチョイ 9fb3-0AE+)
2018/09/15(土) 20:39:04.65ID:OUVvcRON0 >>673
例えば0〜9の整数乱数がほしい時に[0,1)なら10倍して整数部分を取るだけだけど(0,1)とか[0,1]だとすごく面倒
例えば0〜9の整数乱数がほしい時に[0,1)なら10倍して整数部分を取るだけだけど(0,1)とか[0,1]だとすごく面倒
679デフォルトの名無しさん (ワッチョイ 9780-9b2l)
2018/09/15(土) 20:42:09.91ID:KIanXBkQ0 面倒だったら擬似乱数生成器を自分で作ればいい
キミラ程度が使う程度の擬似乱数だったら数行コピペでできる程度のもんで十分だからな
キミラ程度が使う程度の擬似乱数だったら数行コピペでできる程度のもんで十分だからな
680デフォルトの名無しさん (ワッチョイ 9f81-cdNh)
2018/09/15(土) 20:49:32.65ID:Xc5RKOnR0 >>665
ローカル関数じゃだめなん?
ローカル関数じゃだめなん?
681デフォルトの名無しさん (ワッチョイ 9780-9b2l)
2018/09/15(土) 20:53:08.93ID:KIanXBkQ0682デフォルトの名無しさん (ワッチョイ 9fb3-0AE+)
2018/09/15(土) 21:33:37.63ID:OUVvcRON0683デフォルトの名無しさん (ワッチョイ 9fb3-0AE+)
2018/09/15(土) 21:35:49.16ID:OUVvcRON0684デフォルトの名無しさん (ワッチョイ 9780-9b2l)
2018/09/15(土) 21:37:43.29ID:KIanXBkQ0 やっぱり低学歴知恵遅れは
内側の擬似乱数生成器をかえるだけの話なのがわかってないわ
きっと擬似乱数がなんなのかすらわかってないわ
擬似乱数がなんなのかわからずに乱数()とかいって数字使ってる程度だからな
内側の擬似乱数生成器をかえるだけの話なのがわかってないわ
きっと擬似乱数がなんなのかすらわかってないわ
擬似乱数がなんなのかわからずに乱数()とかいって数字使ってる程度だからな
685デフォルトの名無しさん (ワッチョイ 9780-9b2l)
2018/09/15(土) 21:39:33.01ID:KIanXBkQ0 つまり
コレがC#なんか使ってるヤツラのオツムの程度
コレがC#なんか使ってるヤツラのオツムの程度
686デフォルトの名無しさん (ワッチョイ b7e3-TNGn)
2018/09/15(土) 21:40:44.62ID:qw6mr0Vb0 >>673
(0,1)は[0,1)が0ならやりなおし、でいいんじゃないのと単純に思ったがそんなものじゃない?
(0,1)は[0,1)が0ならやりなおし、でいいんじゃないのと単純に思ったがそんなものじゃない?
687デフォルトの名無しさん (ワッチョイ 9780-9b2l)
2018/09/15(土) 22:05:16.77ID:KIanXBkQ0 そもそも機械イプシロンのこと分かってて
ああいうレスしてるようにはまったく見えないからな
ああいうレスしてるようにはまったく見えないからな
688デフォルトの名無しさん (ワッチョイ 9fb3-0AE+)
2018/09/15(土) 22:52:03.88ID:OUVvcRON0689661 (ワッチョイ 57d2-NCQU)
2018/09/15(土) 23:10:36.43ID:LMkhUY/p0690デフォルトの名無しさん (ワッチョイ d7c4-8zjY)
2018/09/16(日) 10:09:07.69ID:QiF2mi6W0 今ならref/outがないならAction/Funcに型推論して
シグネチャが同じdelegate間の暗黙の型変換が行われる
初期化時に左辺とかキャストとかでdelegate型が明示されてたらそのdelegate型でnewされる
でいいと思うよな〜
シグネチャが同じdelegate間の暗黙の型変換が行われる
初期化時に左辺とかキャストとかでdelegate型が明示されてたらそのdelegate型でnewされる
でいいと思うよな〜
691デフォルトの名無しさん (ワッチョイ 5716-+ow7)
2018/09/19(水) 06:50:46.79ID:luZsj3k/0 Visual C#ってDelphiみたいに同じコードでWindows用とMac用にビルドできる?
マシンは両方用意できるとして
マシンは両方用意できるとして
692デフォルトの名無しさん (スッップ Sdbf-p2Er)
2018/09/19(水) 07:42:00.17ID:JcyGHTPld Visual C#って具体的にはどのフレームワークを指してるのかい?
693デフォルトの名無しさん (オイコラミネオ MM4f-Jpql)
2018/09/19(水) 10:08:17.18ID:WBt1GswEM 可能
694デフォルトの名無しさん (ワッチョイ 9f81-cdNh)
2018/09/19(水) 12:41:26.38ID:9aNAf/d20695デフォルトの名無しさん (ワッチョイ 5716-+ow7)
2018/09/19(水) 13:59:56.78ID:luZsj3k/0 多分ASP.NETを使ってGUIのWebSocketクライアントを作る予定です
ありがとうございます
ありがとうございます
696デフォルトの名無しさん (ワッチョイ ff7a-Symf)
2018/09/19(水) 14:05:07.91ID:8sfFLOeb0 MacでWebSocket??????
ちょっと何言ってるかわかんないですね
ちょっと何言ってるかわかんないですね
697デフォルトの名無しさん (ワッチョイ c1d2-C4Ur)
2018/09/26(水) 21:52:32.99ID:rAzbq+Jy0 下みたいなことって出来ます?
やりたいのは object 型の変数に代入したジェネリック系のインスタンスを、さらに元のジェネリックの型にキャストし直すってことなんですが。
void func( object dic )
{
var tmp = (Dictionary)dic; // ← これみたいなことをやる方法がないかなと
tmp.Add( "test", new object() );
}
var dic = new Dictionary< string, object >();
func( dic );
やりたいのは object 型の変数に代入したジェネリック系のインスタンスを、さらに元のジェネリックの型にキャストし直すってことなんですが。
void func( object dic )
{
var tmp = (Dictionary)dic; // ← これみたいなことをやる方法がないかなと
tmp.Add( "test", new object() );
}
var dic = new Dictionary< string, object >();
func( dic );
698デフォルトの名無しさん (ワッチョイ c19f-l+eb)
2018/09/26(水) 23:15:04.62ID:dHSM7pQD0 as
699デフォルトの名無しさん (ワッチョイ bd03-1Yyt)
2018/09/26(水) 23:17:13.70ID:+un+mAjX0 anal
700デフォルトの名無しさん (ワッチョイ 17d2-svSY)
2018/09/27(木) 00:24:29.22ID:WuETTr790 >>698
言葉が足りてなかった。申し訳ない。
例示のケースの場合は、
var tmp = (Dictionary<string,object>)dic;
と指定すれば出来るのだけど、Dictionary だけでキャストし直すみたいなコトできないかなって。
as でも Dictionary だけではキャストできないことは確認しました。
言葉が足りてなかった。申し訳ない。
例示のケースの場合は、
var tmp = (Dictionary<string,object>)dic;
と指定すれば出来るのだけど、Dictionary だけでキャストし直すみたいなコトできないかなって。
as でも Dictionary だけではキャストできないことは確認しました。
701デフォルトの名無しさん (アウアウエー Sadf-upLT)
2018/09/27(木) 00:30:38.46ID:5qvGm4LBa 出来たとして何の意味があるのそれw
そもそもHoge<int>より大きなHoge<T>とかHogeって型が存在するわけじゃないでしょうw
根本的に勘違いしてないか
そもそもHoge<int>より大きなHoge<T>とかHogeって型が存在するわけじゃないでしょうw
根本的に勘違いしてないか
702デフォルトの名無しさん (ブーイモ MM7b-/SOc)
2018/09/27(木) 08:41:34.87ID:649yR4/AM genericsでないDictionaryは存在しないからでしょ。
genericsパッケージでないほうのHashtableならできると思うけど安全性を損ねるしやらんほうがいいんじゃね
genericsパッケージでないほうのHashtableならできると思うけど安全性を損ねるしやらんほうがいいんじゃね
703デフォルトの名無しさん (ワッチョイ 7f23-P8pm)
2018/09/27(木) 12:20:51.28ID:/G4FYlhv0 IDictionaryならあるよ
キャスト時にいちいち型引数を書くのが面倒ぐらいの意味しかないけど
キャスト時にいちいち型引数を書くのが面倒ぐらいの意味しかないけど
704デフォルトの名無しさん (アウアウエー Sadf-upLT)
2018/09/27(木) 12:48:53.74ID:sTtGwCQ3a >>700
を読み直してみると、ひょっとして要するにジェネリックの型パラメータを書くのが面倒臭いから
省略できないか?、って言いたいのかな
それなら答えは「できないけど仮に出来たとしても絶対やるな」じゃないの?
もちろん、
using Dictionary = System.Collections.Generic.Dictionary<string, object>;
こういうエイリアスは書けるはずだと思うけど
何にしろ、質問は他人が読んで分かるように書いて欲しいよね
を読み直してみると、ひょっとして要するにジェネリックの型パラメータを書くのが面倒臭いから
省略できないか?、って言いたいのかな
それなら答えは「できないけど仮に出来たとしても絶対やるな」じゃないの?
もちろん、
using Dictionary = System.Collections.Generic.Dictionary<string, object>;
こういうエイリアスは書けるはずだと思うけど
何にしろ、質問は他人が読んで分かるように書いて欲しいよね
705デフォルトの名無しさん (ワッチョイ 9f9d-G60S)
2018/09/27(木) 17:14:16.27ID:kGqzP/YO0 型安全性を無視していいならdynamic使え
そうじゃないなら出来てもやるな
つかジェネリックを勘違いしてるんじゃね
そうじゃないなら出来てもやるな
つかジェネリックを勘違いしてるんじゃね
706デフォルトの名無しさん (ブーイモ MM5b-iozB)
2018/09/27(木) 17:21:14.85ID:Q+zVeK5uM それによって何がしたいのかを書いてくれないと何言ってるかわからんよな
707697 (ワッチョイ 17d2-svSY)
2018/09/29(土) 00:47:34.72ID:EY+8Y7mF0 ありがと。
やっぱり dynamic 使うしかないかな。避けたかったのだけど。
なにが入ってるか分からない配列の中身を文字列化してログ出力したかったの。(最初は)
object[] の要素の中身が generic だったりしたときに ToString() だとクラス名?にしかならないから。
やっぱり dynamic 使うしかないかな。避けたかったのだけど。
なにが入ってるか分からない配列の中身を文字列化してログ出力したかったの。(最初は)
object[] の要素の中身が generic だったりしたときに ToString() だとクラス名?にしかならないから。
708デフォルトの名無しさん (ワッチョイ 9f81-kFsT)
2018/09/29(土) 03:23:52.22ID:BJdQm5Iw0 なんで何が入ってるかわからない配列なんてもんを触るんだ
静的型付け言語のメリット台無しやんけ
静的型付け言語のメリット台無しやんけ
709デフォルトの名無しさん (ワッチョイ 17f2-aemA)
2018/09/29(土) 09:01:26.24ID:FmliS3qN0 何が入っているかわからないものを扱いたいと言っていながら一方でdynamicは避けたいというのが
よくわからんなぁ。避けてどうしたかったんだろうか。
よくわからんなぁ。避けてどうしたかったんだろうか。
710デフォルトの名無しさん (ワッチョイ 17d2-svSY)
2018/09/29(土) 11:56:45.30ID:EY+8Y7mF0 単に dynamic が嫌いだったのから。w
711デフォルトの名無しさん (ラクッペ MM0b-ub8u)
2018/09/29(土) 12:32:33.34ID:3Hj8wsg1M ふーん。頭が悪いからじゃなかったのか
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 日経平均の下落率3%超す、財政懸念で長期金利上昇 ★2 [お断り★]
- 【実況】博衣こよりのえちえち歌枠🧪
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 高市早苗「支持者の理解を得られないので台湾発言を撤回できない」 [931948549]
- 外務省局長、よくわからないまま帰国へ [834922174]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
- 【雑談】暇人集会所part18
