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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 1e7b-qjLW)
垢版 |
2019/10/07(月) 20:16:17.93ID:9eyAES450
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part144
https://mevius.5ch.net/test/read.cgi/tech/1563258983/
■関連スレ
C#, C♯, C#相談室 Part95
https://mevius.5ch.net/test/read.cgi/tech/1508168482/
■コードを貼る場合は↓を使いましょう。
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
2019/10/17(木) 23:15:21.70ID:U3fOiqzQ0
Closed便利よね
バグ踏んだら面倒だけど
167デフォルトの名無しさん (ワッチョイ 1ee9-1jLk)
垢版 |
2019/10/17(木) 23:18:37.31ID:fKr8aC1m0
プロパティで、StringをDateTimeのようにnull許容できるようにしたいのですが、可能でしょうか?

public DateTime? test1 { get; set; } ← 可
public String? test2 { get; set; } ← 不可

DapperでDB操作してるのですが、DBゆえにnullがあるのでどうしたものかと
2019/10/17(木) 23:30:47.28ID:+xa644SFa
C#8.0の新しい文法を使う意図だったら「#nullable enable」のディレクティブをつけないとnull許容参照型にならないよ
そうでなければ、stringは参照型だから?をつけずとも普通にnull許容
2019/10/18(金) 00:25:33.50ID:C4vTbpVj0
>>162
>>163
ありがとうございます
2019/10/18(金) 00:26:47.30ID:C4vTbpVj0
>>164
>>165
ありがとうございます
2019/10/18(金) 04:48:07.86ID:7fyCEFV70
>>162
帳票作成でC#使うなんてよくある話だろ
2019/10/18(金) 17:37:44.07ID:P+E8yzNh0
>>168
Stringはそもそもnull許容なのですね
Dapperでデータ取れないのは別の事情がありそうなので調査してみます
ありがとうございます
2019/10/18(金) 20:34:45.07ID:L2N4rS5+M
>>171
帳票作成でC#を使うこととC#でExcelを操作することはかなり違うけどな
2019/10/18(金) 20:43:02.28ID:7fyCEFV70
>>173
>>162が正にそれだろ
2019/10/18(金) 21:35:27.82ID:1VxWd/yq0
>>174
日本語が理解できないのか?
> こういう意図でC#を使う人は少ないと思うからそういうサイトもあまりないのでは
>>162はその少ないサイトって話だろ…
2019/10/18(金) 21:44:11.74ID:nML+rjlo0
データを取得したんですが
第三正規系までできません。

こちらのデータを第三正規系にお願いします。
第一正規系はやりました。

https://i.imgur.com/RruyoYQ.png


おすし名,おすしID,店舗ID,価格,データ取得日時,店舗名,おすし説明,色,分類,大きさ
まぐろ赤身,MGR-0000,KRA,120,2019/10/18,くら寿司,さっぱりうまい。上出来,鮮やか,赤身,小さい
まぐろ赤身,MGR-0001,SSR,110,2019/10/18,スシロー,こってりうまい。おすすめ,濃い,赤身,大きい
まぐろ赤身,MGR-0002,HMZ,90,2019/10/18,はま寿司,まずい。食えたもんじゃない,汚い,赤身,小さい
まぐろ赤身(漬け),MGRZ-0000,KRA,140,2019/10/18,くら寿司,漬け。さっぱりうまい。上出来,鮮やか,漬け,大きい
まぐろ赤身(漬け),MGRZ-0001,SSR,130,2019/10/18,スシロー,漬け。こってりうまい。おすすめ,濃い,漬け,大きい
まぐろ赤身(漬け),MGRZ-0001,HMZ,100,2019/10/18,はま寿司,漬け。まずい。食えたもんじゃない,汚い,漬け,小さい
2019/10/18(金) 21:51:06.59ID:7fyCEFV70
>>175
日本語理解できてないのはそっちやろ…

>>174は「帳票作成でC#を使うこととC#でExcelを操作することはかなり違う」に対する反論
2019/10/18(金) 22:22:58.75ID:bjYJELO9a
>>176
このスレのタイトルを3回声に出して読んでみようか
2019/10/18(金) 22:51:19.49ID:1VxWd/yq0
>>177
頭大丈夫?
それとも
> 帳票作成でC#使うなんてよくある話だろ
をごまかしたくて必死なの?w
2019/10/18(金) 22:55:16.71ID:esIPpiBW0
心底くだらない喧嘩だな
2019/10/18(金) 23:23:01.26ID:j4uMIQLH0
禿同
2019/10/19(土) 01:23:21.24ID:yK8AYG0c0
>>179
頭大丈夫?
2019/10/19(土) 06:44:10.57ID:a0xT/TLW0
>>182
鸚鵡返ししかできないならROMってりゃいいのに…w
2019/10/19(土) 06:45:15.42ID:fpN8ACwhd
>>183
しつこい
2019/10/19(土) 08:06:58.91ID:a0xT/TLW0
>>184
夜中までレスしてる>>182に言ってやれよw
2019/10/19(土) 09:10:08.70ID:yK8AYG0c0
>>183
まだいたのかw
2019/10/19(土) 09:47:58.33ID:mgwE5Z4r0
どこもかしこもマウントレスバトルばかり
なぜひとはあらそってしまうのか…sigh…
2019/10/19(土) 09:51:09.39ID:g+81+wWe0
しかも、内容が思いっきりくだらない
マウントを取るためだけにレスをしたとしか思えないくだらなさ
2019/10/19(土) 10:37:10.93ID:a0xT/TLW0
>>186
>>184w
2019/10/19(土) 17:32:49.19ID:WQwZNfDO0
C#は見かけ上は一見C++に似たような顔で欺いたVBだな。
191デフォルトの名無しさん (ワッチョイ 7f2d-BO72)
垢版 |
2019/10/19(土) 18:32:57.19ID:BH051H7O0
すまんが、インターフェイスとオートプロパティーとがよくわから人だけどさあ
interface IPerson{string Name();}
class Person : IPerson {public string Name{get=>"Taro";}}
これじゃなんでIPerson.Name();を実装したことにならないの?正しくはどうすればよかんべえ?
192デフォルトの名無しさん (ワッチョイ 7f2d-BO72)
垢版 |
2019/10/19(土) 18:36:03.37ID:BH051H7O0
自分で気づいて今インターフェイスをstring Name{get;}にしてみたらできた
すまん、191のは無視してくれ・・・・
2019/10/19(土) 18:39:04.57ID:qmet2mEe0
インターフェイスがメソッドで実装がクラスだからダメ
2019/10/19(土) 18:39:28.35ID:qmet2mEe0
×実装がクラス
○実装がプロパティ
195デフォルトの名無しさん (ワッチョイ e334-V+wO)
垢版 |
2019/10/21(月) 20:48:34.93ID:Q380rRZI0
ListViewをLargeImageListとして使って、かつ画像は非同期的に読み込んで反映させていきたいんだけど、
ImageListを変更しても画像が差し変わらない。アイテムを選択したりすると変わる。
差し替え後に強制的に反映させるにはListViewをRefleshするしかない?
2019/10/21(月) 22:28:12.71ID:WYoX45rO0
ListViewItemのVMにINotifyPropertyChanged実装しとらんのか?
2019/10/21(月) 22:36:01.36ID:gFaZXUyV0
RichTextBox.Textプロパティに数MBの文字列をセットすると
5秒くらいフォームがフリーズするので
Task/async/await的なコードを試したのですが
別スレッドからコントロールにはアクセスできないと怒られ
それではとInvokeメソッドを使ってみるも
今度はアクセスで怒られない代わりにまたフリーズ。

上手いこと非同期でTextプロパティにセットする
方法はありますかね。
2019/10/21(月) 22:46:01.22ID:/X8txQrc0
>>197
数MBの文字列程度でフリーズした経験はないけど、その環境でフリーズするのなら非同期にしても解決はしないよ
Invoke使おうがその文字列の処理にそれだけかかるのだからどうしようもない
非同期にするのは処理中にキャンセルするとか他のGUIからの入力処理をする目的じゃないと
2019/10/21(月) 23:04:39.69ID:gFaZXUyV0
ありがとうございます
そういう回答がいただけただけでも助かります
違った角度からの解決策を考えます
200デフォルトの名無しさん (アウアウウー Sa43-WFp/)
垢版 |
2019/10/21(月) 23:10:37.27ID:VNGEIVP2a
>>197
やったことないけどこれかね
https://stackoverflow.com/questions/47438631/c-sharp-open-form-in-a-new-thread-or-task
2019/10/22(火) 00:05:51.56ID:QfoZv31s0
>>197
WPF?
2019/10/22(火) 10:07:09.79ID:YHA3BCJ70
事情が許されるなら、俺ならRTFをHTML変換してブラウザコントロールで表示させるけどね
2019/10/22(火) 13:25:27.23ID:K+KsF9ms0
試してなくて妄想だけけど、SuspendLayout/ResumeLayoutとか?
204デフォルトの名無しさん (アウアウウー Sa43-WFp/)
垢版 |
2019/10/22(火) 14:13:07.80ID:d9ySxcs9a
UIスレッド自体が輻輳してるんだからそんなことしても無意味w

別のプロセスか別のUIスレッドで動作させるか、
あるいは小分けにしてちょっとずつ更新するしかないと思うよ。
2019/10/22(火) 19:15:02.64ID:ZcCp4/Eg0
クラス継承の意義がイマイチ分かりません
継承したいクラスをフィールドに持たせ、共通して呼び出したいものはインターフェースとして定義するではダメなのでしょうか?
単にその両者をいっぺんにやるためにあるという理解で良いんでしょうか?
2019/10/22(火) 19:40:35.35ID:i9vhc7D5M
>>205
それで正しいよ
現代のオブジェクト指向においては継承は基本的に悪であって、極力使うべきではない
2019/10/22(火) 20:13:37.49ID:N0Z1aA+u0
継承が悪ってww
208デフォルトの名無しさん (アウアウウー Sa43-WFp/)
垢版 |
2019/10/22(火) 20:19:18.17ID:d9ySxcs9a
アポロ13って映画に「何のために作られたかではなく、何に使えるかが重要」って台詞が出てくるけど、
意義とか考えるのは(重要だとは思うけど)後回しにして、どういう使い方ができるかに
注視した方がいいよw

あと、オブジェクト指向関係で教条主義的なことを言う奴の話は眉に唾して聞いた方がいいw
これほんと
2019/10/22(火) 20:23:35.17ID:r8U+7Z6M0
.NET Framework は悪の塊だったのか
2019/10/22(火) 21:06:42.53ID:CFL/N7o/d
>>206
継承が悪ワロタ
2019/10/22(火) 21:09:14.91ID:V41RXtJo0
>>209
悪の帝国Microsoft製だししょうがないなw
2019/10/22(火) 21:18:38.74ID:mNMm3WnU0
あ〜熊の力〜身に付けた〜
正義のヒーロー
2019/10/22(火) 21:22:00.43ID:5xlDZDfD0
毛深いヒーローだな
2019/10/22(火) 21:25:50.97ID:EpnXDCZ50
Windows上でVisual Studioを立ち上げて.Netアプリ開発をする以上
お前も悪の帝国の軍門に下って生きるしかないのだ
2019/10/22(火) 22:38:30.26ID:QfoZv31s0
>>205
例えばフレームワークが用意してるControllerクラスを継承して20個くらい個別のコントローラーを作る場合と
個別のコントローラーにControllerクラスを持たせて呼び出しを委譲できるようにする場合
前者はカスタマイズしたい部分だけ書けばいいけど
後者はControllerの機能を呼び出すためにはすべてのクラスに委譲メソッドを用意する必要がある

Controllerのメソッドを20個呼び出したいなら20x20で400個委譲メソッド定義をしないといけないしテストもしないといけない
自動生成することも可能だけどそれを考慮しても必要になる労力とコンポジションで得られる柔軟性が見合わない

それぞれメリット・デメリットあるからそれを判断して使い分けるのが良いと思う
2019/10/22(火) 23:18:54.36ID:HqQPrhiP0
正しいと思うけど、継承のメリットを論じている段階でその例はたぶん通じない。ちんぷんかんぷんだと思うよ
2019/10/22(火) 23:34:28.25ID:bvw0XH6G0
そういえばc#になってから継承なんて使った覚えがないな
2019/10/22(火) 23:58:38.64ID:R7p1RKV4a
継承を使うとしても、KeyedCollectionみたいな用意されたabstractクラスの具象を書くくらいかな
クラシックなWinForms/WebFormsと格闘するなら継承ありきなんだろうけど
2019/10/23(水) 00:02:52.61ID:rbcKcx270
>>217
Formクラスの継承しないの?
220デフォルトの名無しさん (ワッチョイ d62d-BO72)
垢版 |
2019/10/23(水) 01:24:57.24ID:m9ZvUGV10
List型からカンマ区切りの文字列にしたいのですが、先頭や最後にカンマがくっついて欲しくありません
こう言う場合ってどう書くのですか?

string s = "";
int i = 0;
foreach(var l in data){
   if(i == 0) i = 1;
   else s += ",";
   s += l.ToString();
}

自分なりにも書いてみたのですがなんか素人感が半端ないです
どうか正しいかっこいい書き方を教えてください、お願いします
2019/10/23(水) 01:45:41.03ID:r6mLYpNF0
var s = string.Join(",", data);
2019/10/23(水) 08:41:29.15ID:cIthmx8S0
Goは>>205のような考えで継承廃止したんじゃなかったっけ?
コーディングコスト削減メリットよりも階層複雑化によるデメリットの方が大きいから、やるならインターフェースでやれって考え方だったと思う
天下のグーグルがそう言ってるからには継承が悪という考えもあながち全否定は出来ない
2019/10/23(水) 08:46:57.96ID:tuL+TD2TM
var s = (data.FirstOrDefault() ?? "").ToString()
foreach(var l in data.Skip(1))
s += "," + l

var s = ""
foreach(var l in data)
s += "," + l
s = s.SubString(1)
2019/10/23(水) 09:10:24.37ID:9MFdyPJfa
>>222
Rustもそうだね
MSやAWSが最近推してる
2019/10/23(水) 09:26:46.08ID:s4ZmhUIr0
null許容型に属性のrangeが有効か否かを調べたいんだけど、msdnを見ても書かれてない
こういうときってどうやって調べるの??
2019/10/23(水) 09:57:02.37ID:N3BHKY3G0
Rangeということは「最小値と最大値」の範囲内かどうかなわけで
nullが範囲外なのは自明だからそもそも意味がなくね?
nullは特別に範囲内ってのなら「最小値と最大値」であるRangeじゃなくて他の方法で表現せざるを得ないよね
2019/10/23(水) 10:43:58.06ID:s4ZmhUIr0
>>226
単純にnull許容型にrangeの属性を付与できるか否かってだけが知りたい
それを調べようとしてもmsdnに記載が見つからないって話

これはtestが0-100になるように有効だろうけど
[range(0,100)]
int test

このrangeは有効なのか?って話
int?にはrangeは無効で101とか入れれますよーとかはないよねって調べたい
[range(0,100)]
int? test
2019/10/23(水) 11:17:48.75ID:V6w3FSpA0
>>227
range属性自体はstringに対してだろうが付与出来るし、変数への代入を阻止するものじゃない
それが有効かどうかはrange属性を使って検証する側の問題
2019/10/23(水) 11:52:11.96ID:mg9LIwfN0
ASPについて質問です
MVCにできてWebFormsじゃできないことってどんなのがありますか?
230デフォルトの名無しさん (オッペケ Sr47-g1So)
垢版 |
2019/10/23(水) 12:06:02.89ID:uTmD95wkr
>>229
できる出来ないの基準は?
既存コントロール使わないで全部時前で処理するなら、出来ないことが重い浮かばない
2019/10/23(水) 12:08:21.81ID:ixA2IUmYp
おまえには出来ないって基準だと思うよ。
2019/10/23(水) 12:24:26.05ID:rCWJ/rTC0
原理的に出来ないことは無いが大変さが違う

それこそMVCで組みづらいとか
EFとの相性とか
WebAPI作りたいとか
他言語や環境と混ぜづらいとか
つぶしが効かないとか

まあ新規でWebFormsはやめとけと
2019/10/23(水) 12:39:33.45ID:9MFdyPJfa
>>229
WebFormsは.NET Coreおよび.NET 5以降ではサポートされない
今から新規に使ってはいけない
2019/10/23(水) 12:51:59.22ID:s8yqv2t40
>>227
Required属性とnon-nullable型の関係を確認すればいいと思う
https://docs.microsoft.com/ja-jp/aspnet/core/mvc/models/validation#required-attribute
235デフォルトの名無しさん (ワッチョイ d62d-BO72)
垢版 |
2019/10/23(水) 13:28:03.53ID:m9ZvUGV10
>>221
>>223
ありがとう
こんなの全然知らなかったよ
2019/10/23(水) 13:33:09.12ID:mg9LIwfN0
>>233
あざます
2019/10/23(水) 21:40:38.12ID:F0j44unH0
System.Collections.ConcurrentにConcurrentListはないようですが、スレッドセーフなListはSyncronizedCollectionを使っておけということなんでしょうか?
2019/10/23(水) 22:41:24.14ID:MpJkuZYiM
>>237
ConcurrentListが無いのは、Listは外部ロックを使わない並行処理との相性が悪いからだろう
追加と参照のみならいいが、削除や途中への挿入があるとインデックスがほとんど意味を持たなくなってしまう
インデックスが指してる要素が他のスレッドによる変更の影響で突然コロコロ変わったら使い物にならないのは容易に想像できるだろ?
SynchronizedCollectionを使うとかそういう話じゃなくて、Listインターフェイスの設計が本質的に並行処理と相容れないんだよ
2019/10/24(木) 08:41:52.53ID:vvI6h2Gc0
あるソフト使ってて、これ使いたいなって機能があるんだけど、なんて検索かけたらいいのか分からないので知っている人いたら教えてください。
WindowsフォームアプリでVisualStudio2015で開発しています。


[欲しい機能]
例えばWindow内が横3段に分かれいるとすると

------------△---------------

みたいに境界が表示されててそこをクリックすると部分的に隠したり、表示させたりできる機能



今作ってるアプリが監視系で画面上に常駐するので、出来るだけWindow内の邪魔なボタンとかは隠しておきたいのでこの機能が欲しいです。
知ってる方いたらよろしくお願いします。
2019/10/24(木) 09:07:13.70ID:1uX6E7L9M
>>238
> 追加と参照のみならいいが、削除や途中への挿入があるとインデックスがほとんど意味を持たなくなってしまう
それマルチスレッドじゃなくても起きるだろ
2019/10/24(木) 09:13:17.80ID:EafWDMiv0
>>239
折りたたみできるpanel とかそんな感じ?
2019/10/24(木) 09:20:52.19ID:/Cd29/CTM
>>240
程度問題だよ
マルチスレッドなら尚更問題になるのは明らかだろ
結局、インデックスに依存する一連の操作の単位で外部ロックを取る必要があるから、concurrentである意味がない
2019/10/24(木) 09:51:08.72ID:1uX6E7L9M
>>242
バカなの?
インデックス使って途中挿入削除されたら問題なるのはマルチスレッドには関係ない
そもそも挿入削除してるのにインデックスで処理するのがおかしいと気づけ
2019/10/24(木) 10:07:31.16ID:/Cd29/CTM
>>243
シングルスレッドでの同期処理ならプログラマが意図しないタイミングで変更が加えられる可能性は少ないだろう
そもそも途中挿入しないならConcurrentBagでいいよね
自分で答え出てるじゃん
2019/10/24(木) 10:16:49.04ID:1uX6E7L9M
本質を理解できない馬鹿に説明しても無駄なことがよくわかるなw
2019/10/24(木) 10:31:37.86ID:/Cd29/CTM
同意するわw
2019/10/24(木) 10:50:43.90ID:8vd5prrh0
>>239
SplitContainer
248デフォルトの名無しさん (アウアウウー Sa27-AEvr)
垢版 |
2019/10/24(木) 10:58:17.20ID:xs21harXa
>>239
XPの時代のエクスプローラーのタスクパネルみたいなUIだと思うけど
たぶん標準では存在しない

折り畳みできるコンテナを自分で作れば、それを別のPanelの中に入れ子にして
AnchorとDockをうまく設定すれば似たようなことは一応できると思う。

PanelじゃなくてFlowLayoutPanelを使ってもいいかもしれないが、
たぶんかえって使いづらくなりそう
2019/10/24(木) 10:58:42.47ID:ey5VOEQr0
>>241
そうそう折りたたみって言葉がしっくりきます。


試しに「折りたたみ panel」あたりで検索したらやりたい事が出来そうなサイトが見つけられました。
SplitContainerとクリックイベントを使ってどうにか出来そうです。

また、境界部分にも三角形△などの目印を付けるやり方が載ってるサイトも見つかりました。


いいヒントになりました、ありがとうございます^^
2019/10/24(木) 10:59:35.93ID:mB9UhJoj0
>>247
>>248
ありがとうございます!
251デフォルトの名無しさん (ワイーワ2 FFdf-Tlcr)
垢版 |
2019/10/24(木) 11:57:49.13ID:ABhN6CSmF
>>239
Collapse
Accordion
2019/10/24(木) 21:14:55.46ID:00cf/jHw0
頭に0個の参照って表示されてる関数が無数にあるんですが、これ要するに全く使われてないってことですよね
全部消してしまいたい……と思ったのですが実行する中でその関数が呼び出されるような可能性ってあったりするんでしょうか
2019/10/24(木) 21:35:06.52ID:VqWeglU2r
リフレクションとかで呼べば参照カウントされないんじゃない
2019/10/24(木) 21:45:06.56ID:B+sGouls0
なんかのライブラリとかで、publicで公開してるやつとかか?
2019/10/24(木) 22:06:02.66ID:Eph2jaDU0
複数のパネルをドラッグドロップできるようにしたんだけど
マウスが別のパネルに重なったときにパネルがいれかわってしまうんだけど
これを防ぐにはどうしたらいい?
2019/10/24(木) 22:14:48.43ID:yaJ1dO+n0
>>255
「パネル」をドラッグドロップしている?
一番上または必要なパネル以外のドラッグドロップを受け付けないようにしたら
2019/10/24(木) 22:17:00.79ID:WLXJ5XGy0
>>255
マウスダウンで「掴む」じゃん
マウスドラッグで「移動」するじゃん
マウスアップで「置く」じゃん

ドラッグ中の処理は移動なのにどうしてマウスダウンで掴んだやつ
以外が動いちゃうん?
2019/10/24(木) 23:01:06.74ID:yaJ1dO+n0
マウスがパネルに触れた時点でフォーカス変わったりしているとかだろ
最低限の動きするミニマムコード使って検証する方がここで聞くより解決しやすいと思うがね
そこでわからなかったらそのミニマムコード出してまた質問したらここの人も答えやすい
2019/10/24(木) 23:02:09.24ID:00cf/jHw0
>>253
あーなるほどでもそんな上等な書き方出来る人が作ったわけじゃないからなさそうですね

>>254
他の似たようなソフト作る時に使ったソースコードそのまま組み込んだっぽいですね見た感じ
2019/10/25(金) 14:57:42.75ID:V0o5IG+qM
>>252
まあ普通はコメントにするよね
261デフォルトの名無しさん (ワッチョイ cf2d-KmKR)
垢版 |
2019/10/25(金) 22:28:16.88ID:7rgagi6Z0
List<(string, int)> list;があった場合、listの中からlist.item2が最大の要素(string, int)を得るにはどうすればいいのですか?
var l = list.Max(x=>x.Item2);みたいにしたいのですが、int型が帰ってきてしまいます
2019/10/25(金) 23:07:56.88ID:GWerdevt0
OrderByDescending.FirstOrDefault
2019/10/25(金) 23:14:44.18ID:5pdqBhsBa
>>262だと計算量のオーダーが増える
先に Max で最大のItem2 (maxItem2)を求めておいて list.First(x => x.Item2 == maxItem2) のほうがマシ
2019/10/25(金) 23:23:22.26ID:6061P7ry0
何度も呼ぶときウゼーから関数にしろよ
2019/10/25(金) 23:42:07.16ID:5pdqBhsBa
経験上、こういう汎用的すぎるユーティリティ関数を自作して多用するのはお勧めしない
個人開発ならいいけど、多人数での開発になると新しいメンバーとの間で記述方法に差異を有む原因になり、結果的に負債化していくんだよ
ダサくてもこういうのは毎回ベタに書いたほうがいい
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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