ふらっと 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/20(火) 13:01:47.56ID:TyJgyLsfa
このスレはRubyの宝石箱や!まで読んだ。
2021/04/20(火) 20:38:25.40ID:mPkgRyxP0
火入れするかあんたのはスピネルや
と言うべきか
2021/04/20(火) 21:04:57.15ID:HBCxLvi90
なにかのネタというかエンジニアジョークなのかな? わからないや

シャドーイングがどんな機能なのかは単純だからわかってるつもりだけど、一見同じ変数名を扱えることで何が嬉しいの?って話です
コード読んでて混乱しそうなので無い方が綺麗だと思うのだが、自分の脳みそが貧弱なだけかな?
322デフォルトの名無しさん (ワッチョイ bf68-Zgro)
垢版 |
2021/04/20(火) 21:05:35.48ID:3ANNQsEU0
c から来た人なんだけど、デリゲートって関数ポインターの認識
323デフォルトの名無しさん (ワッチョイ bf68-Zgro)
垢版 |
2021/04/20(火) 21:08:17.98ID:3ANNQsEU0
半角の++が書き込めない。なんだこれ。
2021/04/20(火) 21:28:46.29ID:mPkgRyxP0
>>322
それがリストになっているので
複数の呼び出しを一気に行える。
という感じ
2021/04/20(火) 22:48:16.53ID:wpz1WDBF0
メモリリークの温床だがな。。
2021/04/20(火) 23:13:15.40ID:oW++joyya
>>321
嬉しいでしょ。
まあぶっちゃけフィールドをローカル変数で隠蔽することはあまりないと思うけどね。

>>322
Cより機械語レベルで考えた方が分かりやすいね。
要はcall命令のオペランドだよね
厳密にはthisポインタの情報を含むから違うんだろうけど概念的には
2021/04/20(火) 23:17:25.34ID:+w5LC8La0
初歩的な質問ですいません
オブジェクト初期化子とコンストラクタは何が違うんでしょうか?
やってることは同じのように感じるのですが…
2021/04/21(水) 01:35:22.73ID:qZ+z+JK20
>>324
デリケートって追加や削除されるたびに全リストコピーしてるんだっけ?
ぶっちゃけ効率考えたらデリケートよりインターフェースをリストで持たせた方が効率はいいよね
2021/04/21(水) 01:38:27.35ID:GnM/pYwY0
どいつもこいつもデリケートデリケートってよお!
2021/04/21(水) 02:00:12.49ID:9Dxtj7zY0
♪シーズソーデリケート(デリケート、デリケート)
2021/04/21(水) 05:50:25.83ID:iaWKhvh90
>>327
初期化子は参照側が任意に行う。代入しか出来ない。
コンストラクタはオブジェクト側が初期化のルールを決めて、ロジックが書ける。
ってことじゃないのかな。
2021/04/21(水) 09:15:40.20ID:hAG7zCyL0
>>327
コンストラクタにはそのオブェクトを生成するために必要なものを渡してる
初期化子は特に生成には関係ないない項目にも初期値を設定してるイメージ
使う側はあまり気にしなくていいけど用意する側は意識しといた方がいいよ
2021/04/21(水) 09:18:16.78ID:zaNQ2p2Bd
>>327
初期化子はフィールド単体に対しての初期化で、コンストラクタはクラス全体に対しての初期化って考えたらイメージしやすいかも
まあ、初期化子を指定しない場合でも、def aultで初期化されるんだけどね
2021/04/21(水) 11:04:40.00ID:9tzd621Ta
>>327
そもそも問題設定が間違っていると思うよ。
正しい問題設定は「オブジェクト初期化子って何?」

オブジェクト初期化子とは、コンストラクタ呼び出しと、複数の任意のプロパティーやフィールドへの
値の設定をインラインで書けるようにした糖衣構文。
2021/04/21(水) 16:34:49.04ID:yCZSrEkI0
>>326
実を言うとnull safetyのせいで隠蔽したくなるんだな

もちろん、別の名前つければいいけど
2021/04/21(水) 16:56:18.92ID:yCZSrEkI0
C#に限らずnull safetyの言語で、特にビューモデルのクラスでnullableなフィールドを宣言する機会が多いいんだが、
フィールドはメソッド内でnullチェックしても非nullableに昇格しない(kotlinでいうスマートキャストが効かない)
から、
if (field == null)
 throw new IllegalState
var field = field!; // わざわざnon nullableなローカル変数に代入で、ローカル変数に適当な名前が思い付かないのでフィールド名と同じ名前で隠蔽
2021/04/21(水) 17:04:17.58ID:yCZSrEkI0
メソッド内で1,2回とか参照しないのであればわざわざnon nullableなローカル変数に代入しないが

特にkotlinとかスコープ演算子とかもあるがkotlinは「!!」と二重だからこれがいっぱい現れるとソースが見苦しい...
2021/04/21(水) 22:17:44.76ID:4gUtTQ4z0
>>333
違うだろ。C#ならフィールドとプロパティをきちんと区別しないといかん。
2021/04/22(木) 08:19:06.23ID:b0xCXWo1M
x = a ?? b; ←null合体演算子

x.?method() ←これなんて言うんだっけ?
2021/04/22(木) 08:59:45.35ID:bBpUq1Fa0
ピリオドとクエスチョンの位置逆だけどnull条件演算子
341デフォルトの名無しさん (ワッチョイ d76e-vWSz)
垢版 |
2021/04/22(木) 10:42:48.70ID:XvsGXOnj0
linuxとwindowsで動くguiソフト作りたいんですが、共通の開発環境と言語ってあるでしょうか?
openglを扱ってみたいのですが、c++とqtが多いんでしょうか?
c++を扱うと思うので、erectronやwxpythonなどは除外されるんでしょうかね。
2021/04/22(木) 11:01:31.56ID:8IHXhPWQM
>>341
C++の話をするのに何故C#のスレに来たの?
2021/04/22(木) 11:15:40.26ID:wjS6T4Xy0
>>339
逆にnullだったらそのままにしたいってことが多いんだけどそういう演算子ないよね

int? x = null;
int? 2x = (x == null ) ? null : (2 * x);

みたいな
344デフォルトの名無しさん (ワッチョイ d76e-vWSz)
垢版 |
2021/04/22(木) 11:16:13.25ID:XvsGXOnj0
opengl関係無いアプリも作りたいので(´・ω・`)
c#は恐らくlinuxでは動かないものですよね
2021/04/22(木) 12:12:49.77ID:fYKo/KH70
>>343
nullだったらメソッドやプロパティにアクセスせずnullを返すのがnull条件演算子(?.)
そのint?のケースは単に`2 * x`でnullが返されるようになってる
2021/04/22(木) 12:36:03.10ID:TgsR4gUfM
>>344
人脈があれば出来るぞ
2021/04/22(木) 13:12:31.50ID:V2Z7bz83a
>>344
Unityならwindowsでもlinuxでも動くはず
2021/04/22(木) 13:26:29.41ID:r34CJZmP0
.NET MAUIがそういうの目指してるんだろうけれど…
349デフォルトの名無しさん (ワッチョイ d76e-vWSz)
垢版 |
2021/04/22(木) 14:05:53.62ID:XvsGXOnj0
>>347
unityをguiアプリ開発に使いませんよね 普通
2021/04/22(木) 14:23:56.91ID:wSGfQWAL0
>>349
mono 使えばいいんじゃないの?
2021/04/22(木) 15:04:02.14ID:wjS6T4Xy0
>>345
条件演算子を使えないパターンの例をあげたつもりだったんだけどそういう動作すんのか
x.method()に対応するならmethod(x);にも対応してくれてもいいのにって思った
352デフォルトの名無しさん (ワッチョイ d76e-vWSz)
垢版 |
2021/04/22(木) 15:44:38.28ID:XvsGXOnj0
>>350
monoやxamarinはc#ですよね。
c#製アプリはlinuxで動かないと効かされていましたが。
あと、openglなので、c++ではないですか?
2021/04/22(木) 15:47:59.35ID:TgsR4gUfM
.net core も動くぞ
354デフォルトの名無しさん (ワッチョイ 778e-u7Bp)
垢版 |
2021/04/22(木) 17:02:51.26ID:RDEPc8rd0
釣りだろ
2021/04/22(木) 20:02:51.51ID:YBnx4+wd0
なんでも釣りって言わないで
2021/04/22(木) 21:59:40.16ID:8RSzlZOe0
なんでguiにunity勧める奴いるのw
2021/04/22(木) 22:01:36.51ID:itFZ12540
何にでもRuby勧める奴もいるだろ
2021/04/22(木) 22:05:49.71ID:JJ/RFZ5mM
まあC#スレでC++連呼してるのは釣りか底抜けのバカのどちらかだからいずれにせよスルーが基本かと
2021/04/23(金) 21:53:03.64ID:e/IHU4YJd
c#でPCがアイドル状態か否か判定したくて
マウスの動きが一定時間なしで判定するのは出来たんだけど
マウスを動かさずブラウザで動画再生しているときにもアイドル状態ではない判定にしたいんだけど
どうすれば判定取れるでしょうか
2021/04/23(金) 22:15:06.79ID:2LOGdF5/0
特定のキー押下でアイドル判定されない状態を追加して置いた方が今後楽じゃないかな?
2021/04/23(金) 22:40:41.15ID:vlx7cXWJ0
メディアプレイヤーの類で動画再生は構わないの?
ブラウザのバックグランドタブで再生中の場合は?

一応各プロセス各スレッドがSetExecutionStateした結果のステートはこんな感じで取れるらしい
https://stackoverflow.com/questions/10970625/how-windows-decides-to-show-the-screensave
2021/04/23(金) 22:41:57.81ID:vlx7cXWJ0
SetThreadExecutionStateだった
2021/04/23(金) 23:45:20.80ID:tWGuVFO60
その他の案
スクリーンセーバーのプロセスをトリガに利用にする
例えば「ブランク」のスクリーンセーバーが起動してたら、
「scrnsave.scr」がプロセス一覧から取得できる(はず)
つまり*.scrが動いてたら確実にアイドル状態と判断できる
この方法はスクリーンセーバーを無効にしてたら意味ないけど、それはレジストリから判断できるはず
問題はアイドル+スクリーンセーバーの起動時間まで待つ必要がある事
2021/04/24(土) 00:09:09.60ID:gwk+qBm00
つ WM _ enteridle
2021/04/24(土) 00:13:28.13ID:RPGHdVOi0
タスクスケジューラでアイドル状態を条件にプログラムを起動できる
コードから直接利用する方法があるかどうかは知らない
2021/04/24(土) 01:30:28.39ID:+FP4d2caa
>>359
率直に言って無理がある気が。

結局システムで正式に定義されたステートじゃないと
今たまたま何か方法を見つけ出してもいつまでそれが使えるか
わかんないよね。

スリープを抑止するプログラムが起動しているかどうかで
判定できないかとも思ったけど、ブラウザの動画再生は
たぶんスリープ抑止しないよね知らんけど
2021/04/24(土) 01:42:09.65ID:lUFfLIkMd
SetThreadExecutionStateを試してみます

>>360
同じような機能入れてたけど設定し忘れ&解除し忘れで意味なかったです
2021/04/24(土) 11:26:55.87ID:gMqF1SGc0
GetLastInputInfo
2021/04/24(土) 13:52:13.80ID:gg+BSg3V0
>>361 でよさそう(未確認)
>>368 GetLastInputInfo は数ヶ月前10で試したけどうまくいかなかった
2021/04/24(土) 14:17:41.68ID:zhh/+6W6M
.NETで文字列の見た目の幅を求めるライブラリってある?
等幅フォント前提で半角英数なら1文字分、全角漢字なら2文字分、、、といったように計算したい
2021/04/24(土) 14:21:02.35ID:n+JXhE4b0
https://dobon.net/vb/dotnet/graphics/measurestring.html
これじゃだめなの?
2021/04/24(土) 14:34:56.09ID:CavyEmf6a
>>370
シフトJISでエンコードした時のバイト数を数えればいいと思うけど
今時そんなの何に使うの?
2021/04/24(土) 15:01:36.07ID:zhh/+6W6M
>>371
ありがとう
でもできればプラットフォーム依存しないほうがいい

>>372
Markdownのテーブルをフォーマットしたり色々です
2021/04/24(土) 15:03:28.91ID:6TA9BQj40
絵文字やサロゲートペアも考え出すとめちゃめちゃめんどくさいよね
2021/04/24(土) 15:27:27.20ID:h2P4AVL30
>>370
雑にやるなら、StringInfo.ParseCombiningCharacters2倍して、半角文字の文字数引いたら良いんじゃないの?
アクセント付き文字も半角文字に入れればそれなりに並ぶんでは?

タイ語とかアラビア語まで考える?
2021/04/24(土) 15:41:18.56ID:Of2cOFGz0
MeasureStringの数字を見ながら、頭がウニになったGDI+の思い出
勝手に文字の大きさ計算してくれるwpfの有り難さよ
2021/04/24(土) 16:14:48.80ID:RPGHdVOi0
>>370
wcwidthとかeast asian widthで検索してみるといいと思う
https://www.nuget.org/packages/EastAsianWidthDotNet
2021/04/24(土) 16:54:43.52ID:zhh/+6W6M
>>375
情報ども
とりあえず日本語対応できればいいかなと

>>377
あざす
これたぶん正解っぽいすね
2021/04/24(土) 17:00:48.70ID:TFlZREhta
Markdownのテーブルっていうのが何かよく分からないけど、
細かいこと言えば等幅フォントであってもどの文字がどの幅で
描画されるかはフォントに依存するはずだと思うので、(一般的に半角の文字だと
されているものが半分の幅で描画される保証なんて実はないんじゃないか?)
グラフィック関係なら>>371みたいに実測するのが一番確実だよね
2021/04/24(土) 18:10:11.92ID:EfI17DN20
同じ文字で同じ等幅フォントで表示しても、アプリによって全角/半角相違することもあるよ
MS製品間でもVisualStudio/Officeで幅が一致しなくて以前困った記憶がある
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
>インターフェイス
多重継承

>抽象クラス
デフォルト処理が決まらないメソッドを継承先でオーバーライドで強要する
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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