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

■ このスレッドは過去ログ倉庫に格納されています
2021/03/23(火) 12:58:24.10ID:ACoFzk2L0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part149
http://mevius.5ch.net/test/read.cgi/tech/1608085775/
■関連スレ
C#, C♯, C#相談室 Part94
https://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/
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
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2021/04/24(土) 18:17:52.33ID:shUiIChg0
httpclientでpostした時にレスポンスヘッダーのlocationが取れないんだけど取る方法なかんかな
2021/04/24(土) 18:37:25.15ID:jBCuAF2S0
HttpClientをnewするときに渡すHttpClientHandler(.NET Core/5ならSocketsHttpHandler)の
AllowAutoRedirectをfalseにすればいけるような
2021/04/25(日) 09:16:00.93ID:pCSAoCZZ0
>>382
できたわ
サンクス
2021/04/25(日) 15:07:37.80ID:hcyifmDsx
パネルに貼り付けているlabelの数を数えることってできませんか?

テキストファイルの1行目ならlabel1へ表示するってな感じにしたいのですが、
行数が少なければ↓でいいんですが、

label1.Text = File.ReadLines(FileName).Skip(0).Take(1).First();

数が多くなるとコードが長くなって修正等に時間がかかると思うんですよ。
そこでラベルの数が数えられるなら繰り返し文を使えばコードがスッキリするんじゃないかと思ったんです。
良い案のある方いらっしゃいましたらレスをお願いします。
2021/04/25(日) 15:38:30.38ID:nePod60N0
>>384
controlsっているじゃん?
2021/04/25(日) 15:45:05.88ID:jBx2XbWF0
>>384
var count = this.panel1.Controls.Cast<Control>().Count( x => x is Label );
2021/04/25(日) 16:09:10.43ID:FaKFDW610
>>386
Controlにキャストする必要あるのか
つかOfTypeで良いんじゃねえのか

ちなみにControlsの列挙順って一定なのか?
2021/04/25(日) 16:11:55.60ID:jBx2XbWF0
>>387
思わずCastで書いちゃったけど、OfTypeの方がいいね
2021/04/25(日) 16:15:19.50ID:pX1h9NBm0
男だったらキャストして突っ張り続けろよ
2021/04/25(日) 16:16:57.02ID:vWpG1hhV0
>>387
designerの登録順に依存するけどイジるたびに変更を確認するの馬鹿馬鹿しいから
自分はコントロール名やタブ順で並び替えてる
2021/04/25(日) 17:17:41.16ID:FaKFDW610
>>390
(デザイナーでの)登録順ってのは「保障」されているのか?って話なんだが
ディクショナリとか一見登録順に見えても、それは条件が良いだけか実装依存な場合がほとんどだぞ

まあデザイナの定義もVSでいじるとどう変わるかわからんけどな
2021/04/25(日) 17:43:19.45ID:jBx2XbWF0
>>391
自分で調べもせずに何でそんなに偉そうなんだw
Control.ControlCollectionはIListインターフェースを実装してるとDocsに書いてある
2021/04/25(日) 17:57:58.07ID:NMiXqa1mM
>>388
いやCastの方がいいよ
失敗しない確信を持ってるんだから
2021/04/25(日) 18:22:24.73ID:Jq50cbcAa
>>384
なんかやりたいことと質問の内容が噛み合ってないような気がw

n番目のLabelにn行目の内容を表示したいんだったら
欲しいのはLabesの数じゃなくてIEnumerable<Label>とかじゃないの?

っていうかそういう目的ならLabelじゃなくてListViewとか使った方がいいんじゃないの?w
2021/04/25(日) 18:45:17.32ID:6eSN7Ebq0
MVVMならもっと楽だったな
2021/04/25(日) 20:58:32.34ID:hcyifmDsx
皆様回答ありがとうございます。
Controlsプロパティに関しましては↓に
https://www.atmarkit.co.jp/fdotnet/dotnettips/224controls/controls.html
>PanelコントロールやGroupBoxコントロールなどを利用している場合には、フォームのControlsプロパティからすべてのコントロールにアクセスできるわけではない。

と書いていたのでスルーしていました。

>>394
まだ入門書を終わったばっかりでなにが正しいのかわかrない状態なので、変な感じなってるっぽいです。
ご指摘ありがとうございます。


とりあえずやりたいことはできたので、皆様本当にありがとうございました。
2021/04/26(月) 12:04:27.44ID:aoKZLvu10
>>396
一応釘を刺しておくけど、コントロール名を変えるだけで動かなくなるような実装にならないよう気をつけてね
2021/04/26(月) 15:48:20.09ID:57LVbzrx0
>>397
横からすみません。
そういう事態を避けるにはどういう実装にすればいいでしょうか。
2021/04/26(月) 17:00:40.17ID:fVZ2op5+0
Nameプロパティを見ない処理にすればよくね?
2021/04/26(月) 17:16:30.71ID:57LVbzrx0
>>399
現在、ToolStripのクリックされたボタンをNameで判別してます。
if(e.ClickedItem.Name == "") { }

この場合、Name以外のプロパティを使うようにするだけでいいでしょうか。
2021/04/26(月) 17:43:14.20ID:1JVi9H1ud
>>400
Nameじゃなきゃいいわけじゃないよ
じゃあTextで″削除″だった時にって分岐をすると、後にダイアログを出すから″削除...″に修正しなきゃってなって動かなくなる
派生してカスタムコントロールを作るとかTagを利用するとかが一般的かな
2021/04/26(月) 17:43:28.37ID:+MtLiehda
>>400
どのプロパティーを使おうが、そのコードを書いた時と違う値が設定されてしまったら
識別子として使えないのは同じじゃないの?w

素直に「クリックされたのは○○か?」を検査するコードを書けばいい。
if (e.ClickedItem == hogeButton) { ... }

そもそもボタン自身のイベントを使えば何がクリックされたか識別するコードを書く必要がない
2021/04/26(月) 18:57:38.53ID:fsnGR4b00
ありがとうございます。

>>402
以前、その方式でやっていたのですが、理由あってToolStripと、そのコンテナになるFormを別にした結果、以下のコードになってしまいました。
結果、FormからMenuItemを直接参照出来なくなりました。
https://ideone.com/dlhYMG

対策的に、別途、MenuItemの一覧のenumと、クリックされたItemを伝播するイベントを作りました。
https://ideone.com/da5kPY

ただし、この場合はMenuItemを追加する時に、enumに要素を追加する必要がありますが、
enumは定数なので、アプリ使用中にItem追加した際、enumにそのボタンを登録出来ないのです。

それで結局Nameを参照するようになりました・・・
2021/04/26(月) 19:20:00.87ID:+MtLiehda
>>403
メンバー(fileMenuItem)のアクセスレベルを非privateにして晒すのが嫌なら
素直にイベントを作っちゃうのがいいんじゃないの?

public class MyToolStrip : ToolStrip
{
  private ToolStripMenuItem fileMenuItem = new ToolStripMenuItem();

  public event EventHandler FileMenuItemClick
  {
    add
    {
      fileMenuItem.Click += value;
    }

    remove
    {
      fileMenuItem.Click -= value;
    }
  }
}
2021/04/26(月) 19:27:06.52ID:fsnGR4b00
>>404
それで行きます!ありがとうございます!
2021/04/26(月) 19:35:35.06ID:/WVOYzSd0
動的にオブジェクト追加してるならそのオブジェクトの参照は持ってるはずだから
Nameプロパティとか見る必要ないはずだが
2021/04/26(月) 19:50:40.13ID:fVZ2op5+0
言語の機能でインスタンスを特定しようとするのはギルティ
だいたい作っていくと痛い目にあう
2021/04/26(月) 21:00:37.58ID:zRuX+7dna
>>405
本来はToolStrip自身じゃなくて、ToolStripやMenuStripを持った
Formを継承した方がいいような気もするけどね。
まあそれじゃ満たせない要件なのかもしれないけど。

でもToolStripやMenuStripってFormの継承と相性悪いんだよな確か。
修正されずに放置されてるバグがてんこ盛りだった気がする
2021/04/26(月) 22:26:58.02ID:VGqr4loSx
>>397-408
入門書がNameプロパティでの判別をしていたので、当たり前のようにやっていましたが、
あまりよくないやり方なんですね。
ありがとうございます。勉強になりました。
2021/04/26(月) 23:28:26.99ID:fsnGR4b00
>>409
よくないかどうかは状況次第だと思う。
自分や他人がコントロールのNameを変更した時に、判定する側もきちんと変更すれば問題ないはず。
そもそも変更しないなら問題になることもないし。
2021/04/27(火) 00:39:04.06ID:H7ElJCU2a
>>410
「〇〇を変更した時には××も変更すべし」みたいな自明じゃないルールが存在すると、
そのルールをコードを保守する人が忘れているか知らない場合には
正常に動作しなくなるリスクが発生していることになる。

プログラミングの目的は要件を満たすことなので、他に手段がなければ
あえてそういうリスクのある方法を採用することはあってもいいけど、
今の話は明らかにそうじゃない
2021/04/27(火) 00:47:33.70ID:8Unh/3dq0
Windows,LInux,Macで動作するものを作る場合は.Net coreとmonoどっちがおすすめですか?
2021/04/27(火) 00:58:04.31ID:ezafVa/dM
今からなら.NET 5 (.NET Coreの後継)
今年中には更に後継の.NET 6が登場予定
.NET Coreは既に終了済、monoはモバイル向け(.NET 6に統合される予定)
2021/04/27(火) 01:08:57.42ID:8OBs4sir0
なんか次々思い付いてはゴミのように捨てていくよな
2021/04/27(火) 01:13:33.58ID:8Unh/3dq0
そうなんですね
.NET 5調べてみます!
2021/04/27(火) 01:19:08.19ID:DUr8YxD70
.NET Core 3.1の次バージョンを.NET 5とリネームしただけだから.NET Coreが終わったわけじゃない
2021/04/27(火) 08:59:07.35ID:nkW/cvkg0
>>413
既に終了済み??
418デフォルトの名無しさん (ワッチョイ b701-J6CO)
垢版 |
2021/04/27(火) 09:09:39.16ID:+C/fTs2P0
インターフェースや抽象クラスのメリットとは?

つまりvirtualで処理をかかない純粋仮想関数を作る意味はあるのかということです。

そもそもvirtual指定するのであればデフォルト処理というものを書いておけば必要に応じてオーバーライドすればよいと思うのですが。
2021/04/27(火) 09:56:11.35ID:zT7wmnFt0
>>418
>インターフェイス
多重継承

>抽象クラス
デフォルト処理が決まらないメソッドを継承先でオーバーライドで強要する
420デフォルトの名無しさん (ワッチョイ b701-J6CO)
垢版 |
2021/04/27(火) 10:13:30.82ID:+C/fTs2P0
>>419
ありがと、
めちゃわかりやすかった。
2021/04/27(火) 13:59:45.19ID:MoRpu0yA0
ちゃんとifやcase文で書いた方が実は後で楽だけどね
使うかどうかはかっちょええかどうかである場合が多い
2021/04/27(火) 14:31:58.08ID:H51IIUOO0
将来的にスパゲティ化することを防ぐために多少手間でもインタフェースや抽象クラスを使って制約を設けるもんじゃないの?
2021/04/27(火) 15:29:38.21ID:5DBHgWrVM
そういうのは大抵、いざ要件が増えたときには、今の引数だけでは〇〇の情報が足りないとか、拡張を想定していなかった部分を拡張しなければならなくなったとかで破綻するんだよ
要件にないなら後で実際に拡張が必要になってからリファクタリングした方がよい
2021/04/27(火) 16:06:23.66ID:NpDZDySr0
俺は>>422派だな。
要件が増えたときにパラメータが増えたとしても、ファクトリーに渡す拡張用の値増やすだけで元の処理に手を入れなくていいから
425デフォルトの名無しさん (ワッチョイ b701-J6CO)
垢版 |
2021/04/27(火) 17:44:39.71ID:+C/fTs2P0
もしかして抽象クラスとインターフェースって使う必要ない?
メリットはスパゲティコードにしない制約を追加するだけで有れば設計ミスの方じゃないか?
2021/04/27(火) 17:54:44.27ID:MoRpu0yA0
>>425
まあでも知ってると他の誰かが使ったときに欠点がわかるよ
下地がそうやってできてるのにそれに逆らって作ってもしゃーないし
合わせるのは大事

ただメリットはよくわからん
List<object>やobject型の悪用とあんま変わらん気がする
落ちてもどこで落ちたかわからんのもいっしょ
2021/04/27(火) 17:58:00.62ID:3vzUzKx8M
>>425
同時平行開発するときは有用だな
2021/04/27(火) 18:04:24.32ID:pi+NfSuo0
interfaceはこのクラスにはこのメソッドがありますよと言う事を約束するだけで
実装が共通化しようもないようなものに使うものだし
(例としてforeachで回せるようにする為のIEnumerable)
抽象クラスは良くある例はFruitクラスの子クラスがAppleやら関連性のあるものに対して使うものだろうし
そもそも用途が違うような
2021/04/27(火) 18:05:20.92ID:eLMexJPua
>>425
アーキテクチャ綺麗だとあんまし使わないね
依存関係グチャグチャのスパゲティになってるとインターフェースで切ってDIしないとキツイ
けどそれは最初から設計ミスなんだよ
2021/04/27(火) 18:06:48.09ID:eLMexJPua
>>428
アルゴリズム書くときには便利かもね
431デフォルトの名無しさん (スッップ Sd70-I7vP)
垢版 |
2021/04/27(火) 18:14:04.55ID:RVxlIcyJd
クラスを他の人に使わせてまうとあとで変えれなくなってのっぴきならなくなることがあるからやがな。

interfaceにしておくことでサイズゼロにしておくことが出来る。
相手が不特定多数だと「変更したから変えてくれ」とはいえないわけですわ。
2021/04/27(火) 18:16:27.98ID:H51IIUOO0
多態性を利用するために必須なんだから使わなきゃ不便じゃない?
純粋に楽になるついでに、構造に制約を設けて将来的に品質維持する保険にもなるっていう複数のメリットあるので、使わない理由が無いというか
一回つくって終わりの書き捨てならいらないけど

426の後半2行は意味がよくわからない
2021/04/27(火) 18:32:34.55ID:/yDoZvzG0
下手の考え休むに似たりって本当だよな
434デフォルトの名無しさん (ワッチョイ b701-J6CO)
垢版 |
2021/04/27(火) 18:33:38.95ID:+C/fTs2P0
>>432
多様性を使う為に必須というのは初耳だった
別に普通のクラスでも継承してインスタンス化すれば多様性は使えると思ってたんだけど

同じ親クラスやvarの配列にしてfor回したり
そこでインターフェースや抽象クラスにしてしまうよりかは
少なくとも何も処理しないダミー関数でも書いて仮想メソッドで実装しておいた方が良いとおもてる
2021/04/27(火) 18:35:08.09ID:MoRpu0yA0
>>431
いやいやinterfaceから触るでしょうよw
2021/04/27(火) 18:37:58.55ID:MoRpu0yA0
ちゃんとcase文書いた方がいくつ分岐してるかわかっていいじゃん
これをメリットと思えないのってなんでなの?
ソース読むときいくつに処理が別れてるか知らずに済むことって皆無だと思うけど
2021/04/27(火) 18:48:41.39ID:K2ItIfw9D
今って多態性じゃなく多様性って言うのが主流なの?
2021/04/27(火) 18:49:53.91ID:tjxIRyEc0
>>436
いくつに分岐しているかを気にしなくてすむのがinterfaceによる抽象化のメリットの1つだろうに
439デフォルトの名無しさん (ワッチョイ fc63-On6t)
垢版 |
2021/04/27(火) 18:51:27.27ID:LNs0Wm240
いいえ多態性です
440デフォルトの名無しさん (ワッチョイ 74e5-4uvq)
垢版 |
2021/04/27(火) 18:53:45.11ID:QWBqF+Zq0
>>431
interfaceって実装しなくてもいいの?
詐欺にならない?
2021/04/27(火) 18:59:04.44ID:izPR1pTAa
OOPの歴史も30年以上あるのでさすがに本質的に不要なものが
淘汰されずに生き残っているってことはないよ。

インターフェイス不要論とか抽象クラス不要論とか
staticおじさん級に幼稚で非生産的な書生論w

もっとマシなことに時間使った方がいいよ
2021/04/27(火) 19:07:16.33ID:pi+NfSuo0
>>440
実装しなくても良いのではなく、interfaceそのものには実装は書けない。必要なメソッドを定義するだけ
良くある例としてIDisposableがあるけど
using(var obj = new TestClass()) {
}
みたいな使い方したければ上記のTestClassにDispose()メソッドを用意してねって事で
class TestClass : IDisposable
{
public void Dispose() {何らかの終了処理}
}
みたいに実装を用意しないとそもそもエラーになる
2021/04/27(火) 19:27:42.16ID:H51IIUOO0
>>434
普通の継承でも使えたね。すまん
具象クラス継承の適切なケースがわからんので考えなくなって、出来るって事も忘れてた
2021/04/27(火) 19:49:20.62ID:MoRpu0yA0
>>441
ハイ、じゃあメリットは?
2021/04/27(火) 19:53:09.03ID:zk58yDApM
>>440
単一継承しか許されないクラスと違い多重継承が許されるインタフェースでは、実体を実装するとC++同様に基底メンバの衝突の問題が発生する
この問題を回避するために実装を派生先に委ねてしまうことにしてインタフェース内では実装は禁止されている
2021/04/27(火) 20:06:45.34ID:3YkNPMA00
教えて下さい。VBから書き換えて勉強してます。
フォーム1と2があり、それぞれTextBoxが無数にあります。フォーム1→2まで入力をして最後入力した情報を保存したいのですが、どういった形式、方法で保存するのが望ましいですか?
VBは区切り文字を入れ、datファイル1つに2行で書き込んでます。再度呼び出す際にsplitでそれぞれのTextBoxに入れてます。
が、何かのタイミングでTextBoxが増減したとか面倒そうなんですが一般的にはどんな感じでしてるんですかね?
2021/04/27(火) 20:21:32.78ID:cvesXM3a0
辞書を作りたまえ

DDXって死語け?
2021/04/27(火) 21:09:28.77ID:3TA75SVH0
json
2021/04/27(火) 21:15:25.28ID:YZq/AI+30
自分で使ったことはないけどinterfaceはデフォルト実装持てるようになってなかったっけ?
2021/04/27(火) 21:17:18.55ID:AfIT+tVg0
>>449
なってるけどあんま使いたくないな
2021/04/28(水) 01:26:19.18ID:C+xRRq0o0
まあどうしてもバイナリ互換性を崩したくない時に使うもんだよね
2021/04/28(水) 02:42:21.15ID:2iApvDDg0
バイナリ互換性って何?
2021/04/28(水) 03:00:12.55ID:C+xRRq0o0
あるdll(A)にインターフェイスが定義されており、別のdll(B)にその実装があった場合、Aを修正してもBに影響がなければバイナリ互換性があると言う。
たとえばAのインターフェイスに実装を持たないメンバーを追加するとBはコンパイルエラーになってしまうので互換性が崩れる。
Aにメンバーを足す際にデフォルトの実装を書いてあげれば、Bはコンパイルエラーにならない。

破壊的変更にならないようにフレームワークやライブラリを改修したいってのがインターフェイスのデフォルト実装の動機。
2021/04/28(水) 03:09:37.20ID:QdyWhJOJ0
まあCOMみたいにナントカ2とかナントカ3とか増えるのもまたアレ感があるんで
455デフォルトの名無しさん (ワッチョイ 3702-6Fjd)
垢版 |
2021/04/28(水) 06:00:02.52ID:Nr1kHF1d0
"IsDisabled": false,
"Name": "Tap",
"Arguments": [
"Keys.O",
"112",
"12600",
"True"


これって、キーボードのOを112ms間押して、12600ms離すって意味だよね?
約24時間、キーボードのPを押す時間も離す時間もランダム(10〜10000msの範囲で)にしたい場合どう入力したらいいの?
あと24時間以内にとある画像を認識した場合、認識したその都度W、S、A、Fを押すという時どう入力したらいいの?
2021/04/28(水) 11:10:31.63ID:905Z8E/r0
それ何の言語なの?
2021/04/28(水) 11:34:29.86ID:o3+T5GoG0
json
458デフォルトの名無しさん (ワッチョイ b701-J6CO)
垢版 |
2021/04/28(水) 12:01:20.73ID:k6d6iGQO0
アップキャストを行うと何が嬉しいのでしょう?
インスタンス化は普通
クラスA a = new クラスA();
なのに
クラスB b = new クラスA();
ってする意味です。入れれるのと使えるメソッドはイメージ通りですが、使うタイミングが不明です。
2021/04/28(水) 12:12:07.08ID:CT/VgEdf0
>>458
親クラスがクラスBで、クラスBを継承したのがクラスAってことなんだろうけど、
クラスBを継承したクラスCを追加して時に、クラスAとクラスCを同じように扱いたい時に使う。
2021/04/28(水) 15:39:41.26ID:z2mXZLfz0
>>458
foreachでまとめて処理するのに使ったかな。
2021/04/28(水) 16:32:07.21ID:snAX0stPa
>>458
あえて言えばサブクラスで隠蔽(new)を使ってるメソッドやプロパティがあると、
サブクラスのインスタンスをスーパークラスの変数に入れた場合に
動作が変わってくるんだけど、恐らくそういう目的でそれをやるケースは
ほとんどないんじゃないかな。

ほとんどの場合、それは積極的な意味を持たないと思う。
2021/04/28(水) 16:58:01.56ID:MNdo4yxk0
>>458
List<Human> list;
に派生したクラスとかを入れたい時に使う
463デフォルトの名無しさん (アウアウウー Sa83-Im0W)
垢版 |
2021/04/28(水) 17:52:40.77ID:snAX0stPa
>>462
大阪人「は」人間なので、そんなことは不要。

class Human { }
class Osakan : Human { }
....

var o = new Osakan();
var hs = new List<Human>();
hs.Add(o);
2021/04/28(水) 17:59:49.82ID:1SQ+syPV0
アップキャストってそれ自体を目的にするものなのかな?
意識せずに使ってるだけで、見方を変えればアップキャストが目的とも言えるのかもだが
2021/04/28(水) 19:54:14.62ID:MNdo4yxk0
>>463
それ暗黙的にアップキャストをしてるから不要ではないよね?
質問が、アップキャストの嬉しさについてだから例としては適切だと思うけど

アップキャストとしての嬉しさではなく、
クラスB b = new クラスA();という変数を作る意味があるのかって話なら、大抵は暗黙的なキャストてどうにかなるからやる意味はない
2021/04/28(水) 20:13:50.67ID:VZRYywec0
var s = new LinkedList<char>();
_ = Console.ReadLine().Select(x => s.AddLast(x));

これでsに標準入力が入る気がするのですが実際何も入りません
どうすればいいんでしょうか?
2021/04/28(水) 20:44:33.40ID:snAX0stPa
ポカミスだと思うけど、Selectはシーケンスを返すだけだよね。
Selectが実行された時点ではstringの中のcharを列挙したりしない。
2021/04/28(水) 20:50:43.89ID:VZRYywec0
>>467
var s = new LinkedList<char>();
_ = Console.ReadLine().Select(x => s.AddLast(x)).Count();

こうですね...
遅延評価にハマりました
ありがとうございました
2021/04/28(水) 21:04:25.17ID:VZRYywec0
var s = new LinkedList<char>(Console.ReadLine());
というかこれで良かったみたい
2021/04/28(水) 21:35:36.25ID:CT/VgEdf0
Select(x => s.AddLast(x))
はやっちゃ駄目だろう
471デフォルトの名無しさん (ワッチョイ 38e6-4uvq)
垢版 |
2021/04/28(水) 21:38:57.70ID:ohiKXwgS0
ToLinkedListを実装するのが絶対的正義
2021/04/28(水) 21:54:47.35ID:2iApvDDg0
>>457
このスレってJSONを推してる人むっちゃ多いんだけど、CSVと比べて何がいいの?
CSVに出来なくてJSONに出来ることってあるの?
2021/04/28(水) 22:01:00.21ID:N4TU29msM
階層構造を持たせられる
項目の追加が楽
シリアライザが充実している
方言の多いCSVと違い、仕様が統一されている
2021/04/28(水) 22:13:27.34ID:RJLrCSIQM
CSVの方がよさそうならCSVって回答するけど
このスレくらいの質問者だと背景や用途を喋らないので最大公約数的回答になる
2021/04/28(水) 22:18:25.06ID:SKK3EpB30
俺はjsonの方が好きだからjsonを使う
2021/04/28(水) 22:33:03.67ID:roTNJzpQa
CSVとかトラブル製造機じゃん
2021/04/28(水) 22:43:14.57ID:2iApvDDg0
>>473-476
ありがとうございます
なるほど、XMLでも階層構造は持たせられるけど仰々しいですよね
ああ、あれをシリアライザって呼ぶんですね
昔、一回JavaだかでJSON読んでみて満足した記憶があります
GW明けの使い捨てのスクリプトではJSONで書いて読んでみます
2021/04/29(木) 00:09:54.46ID:uAu0lWj/0
CSVは方言多すぎてそこらのパーサー使うの怖いわ
2021/04/29(木) 04:38:08.16ID:mJShgxJuM
unityでc#ぼちぼち覚えてきたけどc#って何ができるんや
2021/04/29(木) 05:53:27.68ID:Pwf8A7W+d
>>479
何でも出来るさ。ライブラリが揃えば。
2021/04/29(木) 05:59:02.89ID:RErNGDPY0
[ {"a" : "1"}, {"b" : "x"} ]

a列のみとか、b列のみしかないJSON が、CSV では、

a,b
1,
,x
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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