ふらっと C#,C♯,C#(初心者用) Part148

■ このスレッドは過去ログ倉庫に格納されています
2020/05/27(水) 20:28:41.27ID:Pggemlyq0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっと C#,C♯,C#(初心者用) Part147
http://mevius.5ch.net/test/read.cgi/tech/1582100741/
■関連スレ
C#, C♯, C#相談室 Part94
http://mevius.5ch.net/test/read.cgi/tech/1553075856/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://referencesource.microsoft.com/
・Insider.NET > .NET TIPS - @IT
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html
・DOBON.NET .NET Tips
https://dobon.net/vb/dotnet/index.html
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2020/05/27(水) 21:03:44.86ID:Pggemlyq0
978 名前:デフォルトの名無しさん (ワッチョイ 1aad-cFKA)[sage] 投稿日:2020/05/26(火) 23:34:30.32 ID:xP2EobkM0 [2/2]
https://www.sejuku.net/blog/47220#Sum

979 名前:デフォルトの名無しさん (ワッチョイ da89-crVl)[sage] 投稿日:2020/05/26(火) 23:55:57.69 ID:pUNOqgdh0 [2/2]
リンク先の例でいうと、ClassName(やその他の項目もあればそれ)も表示させたい場合はどのようにすればいいですか?

980 名前:デフォルトの名無しさん (ワッチョイ 1389-moxv)[sage] 投稿日:2020/05/27(水) 00:07:17.22 ID:Pggemlyq0
>>979 自己レスですが、以下の記述でいけました
var query = result
.GroupBy(x => new { x.Name, x.ClassName })
.Select(x => new Test() { Name = x.Key.Name, Points = x.Sum(y => y.Points), ClassName = x.Key.ClassName });

foreach (var group in query)
{Console.WriteLine($"{group.Name}の合計点数:{group.Points}点;ClassName{group.ClassName}");}

981 名前:デフォルトの名無しさん (スップ Sdf3-Tvg7)[sage] 投稿日:2020/05/27(水) 00:15:29.78 ID:DUgyxf22d
>>980
キーが1つならGroupbyでわざわざ匿名クラス使う必要ないんじゃね?

989 名前:デフォルトの名無しさん (ワッチョイ 9961-moxv)[sage] 投稿日:2020/05/27(水) 09:37:11.33 ID:sy4nr1lC0 [2/2]
>>981
ClassName引き出すのはどうするんだろ?

990 名前:デフォルトの名無しさん (アウアウウー Sac5-5vhd)[sage] 投稿日:2020/05/27(水) 09:58:43.31 ID:liCJZGAla
必要ない
x => x.Name でいい
--------------
.GroupBy(x => x.Name)
.Select(x => new Test() { Name = x.Key.Name, Points = x.Sum(y => y.Points), ClassName = x.Key.ClassName });
にすると、次のようなエラーがでますが、どうしたらよろしいでしょうか。
CS1061 'string' に 'ClassName' の定義が含まれておらず、型 'string' の最初の引数を受け付けるアクセス可能な拡張メソッド 'ClassName' が見つかりませんでした。
2020/05/27(水) 21:12:48.85ID:wHIUQvvs0
>>1
スレ立てありがとう
2020/05/27(水) 21:21:00.79ID:k3bnO/0Z0
>>2
正規化されてないからめんどくさいな。
二重ループみたいですげーダサいけど

var query = result
.GroupBy(x => x.Name)
.Select(x => new Test() {
Name = x.Key,
Points = x.Sum(y => y.Points),
ClassName = result.Find(z => z.Name == x.Key).ClassName });
5デフォルトの名無しさん (ワッチョイ 936a-moxv)
垢版 |
2020/05/27(水) 21:28:41.96ID:r6ZOyYGH0
くこか
2020/05/28(木) 00:34:34.48ID:MEC8WK3T0
Ruby では、すべてのクラスの祖先の、Object クラスに、
そのインスタンスのクラス名を返す、class というインスタンスメソッドがあるので、
すべてのクラスで使える

C# には、そういうメソッドが無いの?

p "ruby".class #=> String
p 100.class #=> Integer
7デフォルトの名無しさん (アウアウウー Sac5-LWf4)
垢版 |
2020/05/28(木) 00:53:29.66ID:ImnqiwTFa
宝石箱や〜まで読んだ
2020/05/28(木) 01:26:59.37ID:EQqK90dj0
>>6
c# クラス名 取得
でググれ?
2020/05/28(木) 04:48:21.47ID:zXvALu7d0
>>4
ClassName = x.First().ClassName
でおk
10デフォルトの名無しさん (ワッチョイ 012d-GttG)
垢版 |
2020/05/28(木) 14:15:46.01ID:fRXC37pG0
タプルやジェネリッククラスに対して、型を代入済みの型を作ることってできないんですか?
(string, string)型とか、List<string>型とか、わざわざクラスを作るまでもなさそうなデータ型って簡単に定義できないのでしょうか
2020/05/28(木) 14:22:31.86ID:aCVt7Y570
>>10
usingエイリアスで解決できる内容?
12デフォルトの名無しさん (ワッチョイ 012d-GttG)
垢版 |
2020/05/28(木) 14:30:21.34ID:fRXC37pG0
>>11
ありがとう!こんなの全然知らなかったわ
2020/05/28(木) 15:52:57.83ID:aCVt7Y570
>>12
紹介しといてなんだけど個人的にはあんま使わない
そのファイル内だけでしか有効にできないし型なんてIDEの補間でさっと書けるんで
2020/05/28(木) 15:59:16.03ID:iH+95mUV0
1年後に自分が書いたコード見たら「このコードを書いたヤツを出せ!」と海原雄山になるのがオチよなw
15デフォルトの名無しさん (ワッチョイ 012d-GttG)
垢版 |
2020/05/28(木) 17:08:54.35ID:fRXC37pG0
>>13
ファイル内限定だったのか・・・・ちょっと1ファイルで試してみて使えるものだから、プロジェクト内どこでも使えるんだと錯覚してたぜ・・・・
2020/05/28(木) 17:14:07.76ID:jo8mM5WX0
>>15
最初からusingディレクティブはみんなそうなってるので
17デフォルトの名無しさん (ワッチョイ dbc7-05E3)
垢版 |
2020/05/29(金) 19:22:05.56ID:Cxyf4DSR0
メソッドは変数に入れらないのはなぜですか
2020/05/29(金) 19:52:18.88ID:GsPIItnZ0
ActionやFunc使えば入れられるけどそういう話ではない?
19デフォルトの名無しさん (アウアウエー Sa23-1zQY)
垢版 |
2020/05/29(金) 20:14:15.28ID:2er99IBxa
ActionとかFuncのscopeの外側で定義されてる変数を
中で同じ名前で定義するとローカルのつもりなのに
衝突してるエラーでるけどこのエラーを出さないオプションって何?
2020/05/29(金) 20:25:12.67ID:EvTz8ouf0
言語バージョンを8.0にする
2020/05/29(金) 21:54:10.89ID:lyhnjVvq0
>>17
C#ではメソッドそのものは型として扱われてないから
直接変数に代入したり引数として渡したりすることはできない

変数に入れたり受け渡しするためにはDelegateという型に入れてやる必要がある
var foo = obj.method;は不可だけど
Action foo = obj.method;なら可 (ActionはDelegateの一つ)
22デフォルトの名無しさん (ワッチョイ dbc7-05E3)
垢版 |
2020/05/30(土) 05:10:09.93ID:fH25FKrr0
ありがとうございます
それ用の型があるんですね
2020/05/30(土) 08:07:41.63ID:AwUsX2qO0
>>21
これでvarが使えない(型推論できない?)のはなんでなんだろ?
2020/05/30(土) 08:44:06.31ID:k44/A+q+0
C#で関数ポインタが扱えない理由って関数のアドレスすらもGCによって変更される可能性があるからって事?
2020/05/30(土) 09:43:25.18ID:TGTrW1W5p
>>24
ネイティブとのやりとりならGetFunctionPointerForDelegateとかでできるけど

GCが絡む注意点はデリゲートのインスタンスは保持する必要はあるが
インスタンスのピン留めは必要ない
2020/05/30(土) 11:28:00.51ID:tvhETOJ10
>>23
varの初期化に使えるのは型を持つものだけ
https://docs.microsoft.com/en-us/dotnet/csharp/misc/cs0815
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況