!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part146
https://mevius.5ch.net/test/read.cgi/tech/1576069931/
■関連スレ
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
探検
ふらっと C#,C♯,C#(初心者用) Part147
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (エムゾネ FF9f-HF0o)
2020/02/19(水) 17:25:41.55ID:IsrGexiaF367デフォルトの名無しさん (ワッチョイ 779b-+5sX)
2020/04/21(火) 13:38:13.11ID:3bJr7zNG0 >>366の続き
しかし、以下のようにするとエラーは消えました。
Nortification nt = new Nortification();
nt = Form1.nort;
nt.OpenBrowser = true;
Form1.nort = nt;
いったん別のインスタンスを作ってそこに構造体ごとコピーし、
コピーのメンバなら値を設定出来ました。
最後に元のインスタンスへコピーし直します。
なぜ元の構造体のメンバに直接値を書き込めないのでしょうか?
そもそも構造体の使い方が間違っていますか?
しかし、以下のようにするとエラーは消えました。
Nortification nt = new Nortification();
nt = Form1.nort;
nt.OpenBrowser = true;
Form1.nort = nt;
いったん別のインスタンスを作ってそこに構造体ごとコピーし、
コピーのメンバなら値を設定出来ました。
最後に元のインスタンスへコピーし直します。
なぜ元の構造体のメンバに直接値を書き込めないのでしょうか?
そもそも構造体の使い方が間違っていますか?
368デフォルトの名無しさん (JP 0H8f-nkQT)
2020/04/21(火) 13:51:21.58ID:cdjEy/7BH >>367
C#入門者が必ず嵌るポイント
c# 値型と参照型 とかでググれば腐るほど出てくる
構造体は特性をよく理解した上でパフォーマンス上のメリットがある場合のみ使うもの
今は忘れてクラスだけ使ってればいい
C#入門者が必ず嵌るポイント
c# 値型と参照型 とかでググれば腐るほど出てくる
構造体は特性をよく理解した上でパフォーマンス上のメリットがある場合のみ使うもの
今は忘れてクラスだけ使ってればいい
369デフォルトの名無しさん (ワッチョイ 37b2-BRXw)
2020/04/21(火) 15:53:17.78ID:1MDMdwK80 このメモリ大容量時代に構造体プログラミングなんてすなや
370デフォルトの名無しさん (ワッチョイ 9fad-7eNI)
2020/04/21(火) 16:02:20.66ID:LjsiMFkA0 必要なとこでは必要なんだよ
371デフォルトの名無しさん (オッペケ Sr8b-s6iC)
2020/04/21(火) 16:39:28.13ID:tax3JV1pr でもまあここでは要らないわな
372デフォルトの名無しさん (ワッチョイ 9fad-7eNI)
2020/04/21(火) 16:39:46.61ID:LjsiMFkA0 そだね
373デフォルトの名無しさん (ワッチョイ 779b-+5sX)
2020/04/21(火) 16:44:50.57ID:3bJr7zNG0 おっしゃるとおりクラスに変更したところエラーは出なくなりました。
ググると以下のページのような記述がありました
https://smdn.jp/programming/netfx/valuetype_referencetype/#value_type_property
値型では代入時にコピーが作成されますが、値型のプロパティやインデクサから値を
取得しようとする場合も同様にコピーが作成されます。
値型のプロパティ・インデクサはインスタンスそのものではなくインスタンスのコピーを
返すことから、直接インスタンスを変更することができません。
そのため、次の例のように値型のプロパティを直接変更しようとするとコンパイルエラーとなります。
参照型では変更しようとするインスタンスを参照によって取得することができるため、
コンパイルエラーとはなりません。
>値型のプロパティはインスタンスそのものではなくインスタンスのコピーを返す
ということなのでやはり構造体の型をプロパティにするのは使い勝手が悪そうですね
いっそインスタンス作成時にpublicにしたほうがいいかもと思いました
ググると以下のページのような記述がありました
https://smdn.jp/programming/netfx/valuetype_referencetype/#value_type_property
値型では代入時にコピーが作成されますが、値型のプロパティやインデクサから値を
取得しようとする場合も同様にコピーが作成されます。
値型のプロパティ・インデクサはインスタンスそのものではなくインスタンスのコピーを
返すことから、直接インスタンスを変更することができません。
そのため、次の例のように値型のプロパティを直接変更しようとするとコンパイルエラーとなります。
参照型では変更しようとするインスタンスを参照によって取得することができるため、
コンパイルエラーとはなりません。
>値型のプロパティはインスタンスそのものではなくインスタンスのコピーを返す
ということなのでやはり構造体の型をプロパティにするのは使い勝手が悪そうですね
いっそインスタンス作成時にpublicにしたほうがいいかもと思いました
374デフォルトの名無しさん (アウアウウー Sa1b-V/21)
2020/04/21(火) 16:56:16.12ID:K2Bh67Tta >>373
コードを書く側の立場で考えると
>構造体の型をプロパティにするのは使い勝手が悪そう
これはむしろ逆の場合が多いと思うよ。
考えてもみてよ。
プロパティーの値が変更された時の処理をプログラマは普通プロパティーのセッターに書く。
ゲッター経由でプロパティーが実質的に変更されてしまう可能性があるとしたら?
コードを書く側の立場で考えると
>構造体の型をプロパティにするのは使い勝手が悪そう
これはむしろ逆の場合が多いと思うよ。
考えてもみてよ。
プロパティーの値が変更された時の処理をプログラマは普通プロパティーのセッターに書く。
ゲッター経由でプロパティーが実質的に変更されてしまう可能性があるとしたら?
375デフォルトの名無しさん (ワッチョイ bfda-ycCE)
2020/04/21(火) 17:27:49.13ID:2AP1dLJq0 もしかして: notification
376デフォルトの名無しさん (ワッチョイ ff2d-QsZ8)
2020/04/21(火) 17:34:55.97ID:Q9kb1Yoh0 値型で高速化の話が出てきたついでに教えて欲しいんだけどさあ
下のそれぞれの変数って、スタックとヒープどっちにメモリが確保されてるの?これであってる???
静的なint型の変数・・・・スタック
静的な構造体・・・・スタック
mainメソッド内に宣言されたint型の変数・・・・ヒープ
mainメソッド内に宣言された構造体・・・・ヒープ
インスタンス内で宣言されたint型変数・・・・ヒープ
インスタンス内で宣言された構造体・・・・ヒープ
下のそれぞれの変数って、スタックとヒープどっちにメモリが確保されてるの?これであってる???
静的なint型の変数・・・・スタック
静的な構造体・・・・スタック
mainメソッド内に宣言されたint型の変数・・・・ヒープ
mainメソッド内に宣言された構造体・・・・ヒープ
インスタンス内で宣言されたint型変数・・・・ヒープ
インスタンス内で宣言された構造体・・・・ヒープ
377デフォルトの名無しさん (ワッチョイ 7feb-Ho7r)
2020/04/21(火) 18:06:24.10ID:3Z0ku97Y0 VisualStudioプロフェッショナル版以下使用時、
プログラムの概観を素早く把握したい時ってどうするのがベストなんでしょう?
ctrl + m → o ?
逆に把握してもらいたい時はDocFXとかに頼る形になるのかな
プログラムの概観を素早く把握したい時ってどうするのがベストなんでしょう?
ctrl + m → o ?
逆に把握してもらいたい時はDocFXとかに頼る形になるのかな
378デフォルトの名無しさん (ワッチョイ d763-/zZG)
2020/04/21(火) 18:43:14.63ID:gorOElOo0 概要をさくっと把握する、にコード見ろになるの?
概要こそドキュメント、もしくはファイル先頭に概要コメントで詳細は各メソッドのコメントなりコード見ろじゃない?
docをコメントから自動生成するなら書いてある内容の粒度はコメントだろうがドキュメントだろうが変わらん
プログラマが見るならIDEで見れたほうがいい場合もあるしそうじゃないなたhtmlドキュメントみたいなのが良い場合もある
概要こそドキュメント、もしくはファイル先頭に概要コメントで詳細は各メソッドのコメントなりコード見ろじゃない?
docをコメントから自動生成するなら書いてある内容の粒度はコメントだろうがドキュメントだろうが変わらん
プログラマが見るならIDEで見れたほうがいい場合もあるしそうじゃないなたhtmlドキュメントみたいなのが良い場合もある
379デフォルトの名無しさん (ワッチョイ ff8e-eUuY)
2020/04/21(火) 18:50:11.10ID:XAeWC18v0 >>366
なんでget,setしとるの?
なんでget,setしとるの?
380デフォルトの名無しさん (JP 0H8f-nkQT)
2020/04/21(火) 18:52:56.43ID:cdjEy/7BH381デフォルトの名無しさん (ワッチョイ d763-/zZG)
2020/04/21(火) 18:57:38.36ID:gorOElOo0 >>376
ついでにいうとそもそもint自体も構造体だよ
ついでにいうとそもそもint自体も構造体だよ
382デフォルトの名無しさん (ワッチョイ 5701-lL3q)
2020/04/21(火) 19:18:17.27ID:mEER3mJt0 >>381
mjd?
mjd?
383デフォルトの名無しさん (ブーイモ MMcf-gAk0)
2020/04/21(火) 19:36:44.84ID:DjpYKR7GM 意識しすぎてstringクラスでまた勘違いする
384デフォルトの名無しさん (ワッチョイ b7cf-RulI)
2020/04/21(火) 20:51:10.54ID:E4gE2B8j0 >>379
get,setしないとフィールドにアクセスできないじゃん
get,setしないとフィールドにアクセスできないじゃん
385デフォルトの名無しさん (ワッチョイ ff2d-QsZ8)
2020/04/21(火) 20:56:24.99ID:Q9kb1Yoh0 >>380
全然わかってなかったぜ、ありがとう!
全然わかってなかったぜ、ありがとう!
386デフォルトの名無しさん (アウアウエー Sadf-t/jp)
2020/04/21(火) 21:28:08.07ID:Vo0c0hBga387デフォルトの名無しさん (ワッチョイ 9f01-7Des)
2020/04/21(火) 21:44:15.58ID:9fcQjJm80388デフォルトの名無しさん (ワッチョイ 972c-htAm)
2020/04/21(火) 22:34:21.97ID:gnqBqFRT0389デフォルトの名無しさん (ワッチョイ ff8e-eUuY)
2020/04/21(火) 23:09:05.72ID:XAeWC18v0 >>384
structだぞ
structだぞ
390デフォルトの名無しさん (ワッチョイ b2da-6+K6)
2020/04/22(水) 02:26:50.40ID:C83u6fr40 https://dotnet.microsoft.com/download/dotnet-framework/net48
のDeveloper Pack をインストールしました。
C#の言語バージョンは 8.0 になると思ったのですが、現在は 5 のようです。
--------------------------------------------------------------
C:\Windows\system32>csc
Microsoft (R) Visual C# Compiler version 4.8.3752.0
for C# 5
Copyright (C) Microsoft Corporation. All rights reserved.
This compiler is provided as part of the Microsoft (R) .NET Framework,
but only supports language versions up to C# 5,
which is no longer the latest version. For compilers that support newer versions of the C# programming language,
see http://go.microsoft.com/fwlink/?LinkID=533240
--------------------------------------------------------------
どうすれば、C# 8 を使用出来ますか?
のDeveloper Pack をインストールしました。
C#の言語バージョンは 8.0 になると思ったのですが、現在は 5 のようです。
--------------------------------------------------------------
C:\Windows\system32>csc
Microsoft (R) Visual C# Compiler version 4.8.3752.0
for C# 5
Copyright (C) Microsoft Corporation. All rights reserved.
This compiler is provided as part of the Microsoft (R) .NET Framework,
but only supports language versions up to C# 5,
which is no longer the latest version. For compilers that support newer versions of the C# programming language,
see http://go.microsoft.com/fwlink/?LinkID=533240
--------------------------------------------------------------
どうすれば、C# 8 を使用出来ますか?
391デフォルトの名無しさん (アウアウウー Sa83-GHE+)
2020/04/22(水) 09:28:54.12ID:lrNM/Ez+a >>390
手で入れたことはないから確証はないけど、.NET Frameworkに含まれるC#コンパイラはRoslynになる前の旧世代のもので止まっているのだろう
普通、新しい.NETはVSのインストーラから入れるもので、そうすればRoslyn世代のコンパイラも勝手に入る
ちなみにC#8では.NET Coreのみに対応しており、.NET Frameworkは完全にサポート外になった
手で入れたことはないから確証はないけど、.NET Frameworkに含まれるC#コンパイラはRoslynになる前の旧世代のもので止まっているのだろう
普通、新しい.NETはVSのインストーラから入れるもので、そうすればRoslyn世代のコンパイラも勝手に入る
ちなみにC#8では.NET Coreのみに対応しており、.NET Frameworkは完全にサポート外になった
392デフォルトの名無しさん (ワッチョイ dc2c-y6ks)
2020/04/22(水) 15:03:54.78ID:Tc3u/Tz90 > ちなみにC#8では.NET Coreのみに対応しており、.NET Frameworkは完全にサポート外になった
そんなわけあるか
普通にコンパイルできるわ
そんなわけあるか
普通にコンパイルできるわ
393デフォルトの名無しさん (ワッチョイ 66ad-rGdA)
2020/04/22(水) 15:23:15.27ID:NZfVsFFq0 >>392
非対応の機能使ってなければコンパイルできるよね
非対応の機能使ってなければコンパイルできるよね
394デフォルトの名無しさん (ワッチョイ 66ad-rGdA)
2020/04/22(水) 15:23:51.48ID:NZfVsFFq0 >>391
.NET Standardも2.1なら対応してるやろ
.NET Standardも2.1なら対応してるやろ
395デフォルトの名無しさん (ワッチョイ 953a-1Gce)
2020/04/22(水) 15:25:45.83ID:M4wrH+Xp0 C# 8.0 の新機能
https://docs.microsoft.com/ja-jp/dotnet/csharp/whats-new/csharp-8
>C# 8.0 は .NET Core 3.x と .NET Standard 2.1 でサポートされています。
https://docs.microsoft.com/ja-jp/dotnet/csharp/whats-new/csharp-8
>C# 8.0 は .NET Core 3.x と .NET Standard 2.1 でサポートされています。
396デフォルトの名無しさん (ブーイモ MMfd-4A6c)
2020/04/22(水) 20:18:39.80ID:oGjFYrP4M .NET Frameworkは.NET Standard2.1はサポート対象外なのか
非同期ストリームやインデクサやrange等は.NET Standard 2.1なので、C#8.0を.NET Framework 4.8に設定すると使用できなくなる
.NET Core 3.0やXamarin、Unity、Monoはすべて.NET Standard 2.1を実装する
非同期ストリームやインデクサやrange等は.NET Standard 2.1なので、C#8.0を.NET Framework 4.8に設定すると使用できなくなる
.NET Core 3.0やXamarin、Unity、Monoはすべて.NET Standard 2.1を実装する
397デフォルトの名無しさん (ワッチョイ 7349-xf6K)
2020/04/23(木) 13:32:04.15ID:UY53iXGX0 coreに行っとけってこった
398デフォルトの名無しさん (ワッチョイ dc2c-y6ks)
2020/04/23(木) 17:51:59.15ID:YT2pRfjo0 Coreにさっさと移行すべきというのはその通りだが
C#8の文法に必要な大体のライブラリは.NET Framework用にバックポートされてNugetで公開されてる
C#8の文法に必要な大体のライブラリは.NET Framework用にバックポートされてNugetで公開されてる
399デフォルトの名無しさん (アウアウエー Sa6a-0GGu)
2020/04/23(木) 19:26:18.65ID:iR4g/Ykka 言いたいことは判るがそれは論点ずらしだ
400デフォルトの名無しさん (ワッチョイ faad-PpL2)
2020/04/23(木) 19:57:39.98ID:m302zc2R0 作成したアプリの.NETのバージョンが4.6.2で古い4.5がインストールされている環境でも動作させたいのだけど、何もしなくても動かせますかね?使ってるc#のコードは、4.5以降なら動作するんですが。
アプリケーション構成ファイルのsupportedRuntimeとか書き換えるとか何か必要ですか?
アプリケーション構成ファイルのsupportedRuntimeとか書き換えるとか何か必要ですか?
401デフォルトの名無しさん (ワッチョイ b6d6-Op/G)
2020/04/23(木) 20:04:56.27ID:ngI9YQpk0 >>400
プロジェクトのプロパティでアプリケーションの対象フレームワークを4.5に変更してからリビルド
プロジェクトのプロパティでアプリケーションの対象フレームワークを4.5に変更してからリビルド
402デフォルトの名無しさん (ワッチョイ faad-PpL2)
2020/04/23(木) 20:17:04.06ID:m302zc2R0403デフォルトの名無しさん (ワッチョイ 66ad-rGdA)
2020/04/23(木) 20:26:13.85ID:AGd9KY8X0 古いバージョンならリビルドしないと無理。逆は大丈夫だけど。
404デフォルトの名無しさん (ワッチョイ 66ad-rGdA)
2020/04/23(木) 20:26:49.41ID:AGd9KY8X0 ちなみになんでサポート切れのバージョン使ってんの?
405デフォルトの名無しさん (ワッチョイ dc2c-y6ks)
2020/04/23(木) 20:38:44.94ID:YT2pRfjo0 そのアプリが面倒みる最低バージョンでビルドしとけばいいよ
もちろんそれより上のバージョンでちゃんと動くことを保証するものではないけど
もちろんそれより上のバージョンでちゃんと動くことを保証するものではないけど
406デフォルトの名無しさん (ワッチョイ faad-PpL2)
2020/04/23(木) 20:39:33.00ID:m302zc2R0407デフォルトの名無しさん (ワッチョイ 66ad-rGdA)
2020/04/23(木) 20:50:49.64ID:AGd9KY8X0 >>406
Windows10は最初のバージョンから既に4.6がプレインストールされてたはずだけど…まだ7使ってんの?しかもサポート切れのままで?
Windows10は最初のバージョンから既に4.6がプレインストールされてたはずだけど…まだ7使ってんの?しかもサポート切れのままで?
408デフォルトの名無しさん (ワッチョイ dc2c-y6ks)
2020/04/23(木) 21:12:57.93ID:YT2pRfjo0 Windows 8.1さんを忘れるんじゃない
409デフォルトの名無しさん (ワッチョイ 968e-iRnL)
2020/04/23(木) 21:18:36.78ID:A1RPJ5qa0 >>384
答えろよ
答えろよ
410デフォルトの名無しさん (ワッチョイ 66ad-rGdA)
2020/04/23(木) 21:22:31.43ID:AGd9KY8X0 >>408
ごめんわざと
ごめんわざと
411デフォルトの名無しさん (アウアウウー Sa30-R0M4)
2020/04/23(木) 21:29:24.37ID:tIS/wRWha あれれ、たしか数年前の時点で
.NETFramework4.5.2以下のサポートは強制打ち切りになったはず・・・・
いまは最低4.6にしとけば全環境カバーできるものとばかり思ってたけど、俺なにか勘違いしてる?
.NETFramework4.5.2以下のサポートは強制打ち切りになったはず・・・・
いまは最低4.6にしとけば全環境カバーできるものとばかり思ってたけど、俺なにか勘違いしてる?
412デフォルトの名無しさん (ワッチョイ 66ad-rGdA)
2020/04/23(木) 21:34:01.17ID:AGd9KY8X0 >>411
4.5.2はまだサポートされてるっしょ
4.5.2はまだサポートされてるっしょ
413デフォルトの名無しさん (アウアウウー Sa30-R0M4)
2020/04/23(木) 21:39:29.55ID:tIS/wRWha ごめん自己レス
4.5.2「以下」じゃなくて4.5.2「未満」が2016年1月13日でサポート終了だった・・・間違えて覚えてたわ
https://www.atmarkit.co.jp/ait/articles/1503/04/news141.html
4.5.2「以下」じゃなくて4.5.2「未満」が2016年1月13日でサポート終了だった・・・間違えて覚えてたわ
https://www.atmarkit.co.jp/ait/articles/1503/04/news141.html
414デフォルトの名無しさん (ワッチョイ 0a2f-Hty+)
2020/04/23(木) 23:58:26.72ID:9prkr8SY0 7もまだESUってのがあるからあと3年弱は現役だぞ
415デフォルトの名無しさん (ワッチョイ 66ad-rGdA)
2020/04/24(金) 01:05:13.24ID:agN2oJUo0 >>414
でも4.5はサポート切れ
でも4.5はサポート切れ
416デフォルトの名無しさん (ワッチョイ d49b-Ue8b)
2020/04/24(金) 11:08:50.08ID:VS+6OBXT0 メソッド内でnewしたインスタンスはメソッド抜けたら破棄されるから
disposeしたりnull代入したりする必要はありません!
っていうネット記事を見たんですが本当ですか?
メソッド抜けたら破棄されるのは値型の変数だけで
インスタンスが消費するメモリは解放されないと思っていました
disposeしたりnull代入したりする必要はありません!
っていうネット記事を見たんですが本当ですか?
メソッド抜けたら破棄されるのは値型の変数だけで
インスタンスが消費するメモリは解放されないと思っていました
417デフォルトの名無しさん (ワッチョイ 6e61-1Gce)
2020/04/24(金) 11:12:48.04ID:0XMd7UjD0 GCが気が向いたときに掃除してくれるんじゃなかったっけ?
418デフォルトの名無しさん (ワッチョイ 2f24-Ej8M)
2020/04/24(金) 11:22:24.63ID:jeeSLMOH0 Disposeやnull代入してもそのクラス自体のメモリは解放されない
C#においてはそこはガベコレの担当であって基本プログラマはコントロールできないので少なくともnull代入は完全に不要
Marshal.AllocHGlobalのような明示的に解放しなきゃいけないアンマネージドリソースを使ってる場合にはIDisposable.Disposeが必要になる訳だけど、
ただそれも明示的にDispose()を呼ばずとも一応GCによる破棄タイミングで自動的にDispose()が呼ばれるので絶対呼ばなきゃいけない訳ではない(なんかの理由でDisposeに関しては明示的に呼んだ方が良かったはずだけど)
C#においてはそこはガベコレの担当であって基本プログラマはコントロールできないので少なくともnull代入は完全に不要
Marshal.AllocHGlobalのような明示的に解放しなきゃいけないアンマネージドリソースを使ってる場合にはIDisposable.Disposeが必要になる訳だけど、
ただそれも明示的にDispose()を呼ばずとも一応GCによる破棄タイミングで自動的にDispose()が呼ばれるので絶対呼ばなきゃいけない訳ではない(なんかの理由でDisposeに関しては明示的に呼んだ方が良かったはずだけど)
419デフォルトの名無しさん (ワッチョイ 66ad-rGdA)
2020/04/24(金) 11:41:15.89ID:agN2oJUo0 >>418
Disposeで破棄せずに(保険用の)ファイナライザーに任せると、実際に破棄されるタイミングがgen0→gen1みたいに後回しになっていって高コストになるからね
Disposeで破棄せずに(保険用の)ファイナライザーに任せると、実際に破棄されるタイミングがgen0→gen1みたいに後回しになっていって高コストになるからね
420デフォルトの名無しさん (アウアウウー Sab5-BpYI)
2020/04/24(金) 12:08:50.65ID:hmKdXDZUa >>416
ネット記事じゃなくてちょっと前のここのレスじゃないのそれw
ネット記事じゃなくてちょっと前のここのレスじゃないのそれw
421デフォルトの名無しさん (アウアウエー Sa6a-0GGu)
2020/04/24(金) 12:14:59.67ID:FFBNt2WCa422デフォルトの名無しさん (ワッチョイ d49b-Ue8b)
2020/04/24(金) 12:25:56.45ID:VS+6OBXT0 >>420
この記事だったかも
https://qiita.com/7of9/items/ed4aa75852ae92c9cc58#comment-3cd34c69333eaf1c2d1e
nullを入れるのはやめましょう。
そんなことしなくてもローカル変数なら最後に登場した箇所以降はスコープ抜けたのと同じ扱いに最適化されます。
入門書にはnullを入れるよう書いてあるのもあるのですが・・・
https://i.imgur.com/VMOSHDY.gif
この記事だったかも
https://qiita.com/7of9/items/ed4aa75852ae92c9cc58#comment-3cd34c69333eaf1c2d1e
nullを入れるのはやめましょう。
そんなことしなくてもローカル変数なら最後に登場した箇所以降はスコープ抜けたのと同じ扱いに最適化されます。
入門書にはnullを入れるよう書いてあるのもあるのですが・・・
https://i.imgur.com/VMOSHDY.gif
423デフォルトの名無しさん (アウアウウー Sab5-BpYI)
2020/04/24(金) 13:00:24.56ID:hmKdXDZUa >>422
null代入は無意味は(ほとんどの場合)本当
それ言ってるのたぶんVB上がりの人
メモリーの管理はシステム任せでOK
Dispose無意味は(ほとんどの場合)間違い。
IDisposableをわざわざ実装しているのは、不要になったら可及的速やかにDisposeして欲しいから。
コンピュータのリソースにはシリアルポートみたいに数個しか存在しなかったり、拡張スロットやUSBにぶら下がってる
ハードウェアみたいに排他的にしか使用できないものがある。
そういうのは使い終わったらとっとと解放してやらないと他で使えないことになる。
IDisposableはそういう使い方を想定している
null代入は無意味は(ほとんどの場合)本当
それ言ってるのたぶんVB上がりの人
メモリーの管理はシステム任せでOK
Dispose無意味は(ほとんどの場合)間違い。
IDisposableをわざわざ実装しているのは、不要になったら可及的速やかにDisposeして欲しいから。
コンピュータのリソースにはシリアルポートみたいに数個しか存在しなかったり、拡張スロットやUSBにぶら下がってる
ハードウェアみたいに排他的にしか使用できないものがある。
そういうのは使い終わったらとっとと解放してやらないと他で使えないことになる。
IDisposableはそういう使い方を想定している
424デフォルトの名無しさん (ワッチョイ 66ad-rGdA)
2020/04/24(金) 13:11:21.82ID:agN2oJUo0 >>422
何その画像…デタラメやん
何その画像…デタラメやん
425デフォルトの名無しさん (アウアウウー Sa83-GHE+)
2020/04/24(金) 13:15:41.83ID:5EQwPUhVa 間違ってはいないだろ
nullを代入しておけば、メソッドを抜ける前にGCが走った場合に早期に解放されるかもしれない
ほとんどのメソッドは一瞬で抜けるため無意味だが、極一部の長時間抜けないメソッドではnull代入は必ずしも無意味ではない
nullを代入しておけば、メソッドを抜ける前にGCが走った場合に早期に解放されるかもしれない
ほとんどのメソッドは一瞬で抜けるため無意味だが、極一部の長時間抜けないメソッドではnull代入は必ずしも無意味ではない
426デフォルトの名無しさん (JP 0H34-GHE+)
2020/04/24(金) 13:22:18.77ID:rjwoLxqDH null代入して直後にGC.Collect呼ぶのはやったことある
古い.NETのバージョンだと、画像処理とかで巨大なオブジェクトを何度も確保しようとするとメモリ不足で落ちるケースがあった
古い.NETのバージョンだと、画像処理とかで巨大なオブジェクトを何度も確保しようとするとメモリ不足で落ちるケースがあった
427デフォルトの名無しさん (ワッチョイ 66ad-rGdA)
2020/04/24(金) 13:47:27.48ID:agN2oJUo0 「インスタンスを解放するためには、b=null; とする必要があります」ってのは明らかに間違いやろ
428デフォルトの名無しさん (ワッチョイ c252-Z+/y)
2020/04/24(金) 13:49:36.10ID:DJ6Oa20x0 >>422
参考のためにその本のタイトルと著者を教えてもらえるかな?
参考のためにその本のタイトルと著者を教えてもらえるかな?
429デフォルトの名無しさん (ワッチョイ f2da-QpYc)
2020/04/24(金) 14:38:19.92ID:+jmL6Bae0 bがこの後どのような使われ方するのか分からんことには何とも言えん
430デフォルトの名無しさん (ワッチョイ c252-Z+/y)
2020/04/24(金) 14:56:29.99ID:DJ6Oa20x0 この本はその1ページで説明が完結していて、そこでnullを代入しないとメモリリークが発生すると誤解されるような記述の仕方をするのは、入門書としてNGだろう。
431デフォルトの名無しさん (ワッチョイ 0e33-lMNq)
2020/04/24(金) 15:17:25.33ID:ANXSn9cW0432デフォルトの名無しさん (アウアウウー Sab5-BpYI)
2020/04/24(金) 15:49:58.69ID:hmKdXDZUa 10年ぐらい前、本屋で結構挑発的なタイトルのCの入門書を見つけたので
立ち読みしてみたら前書きでnullと\0を混同してる記述を見つけてひっくり返ったことがあるw
学校の教科書じゃないんで本に書いてあるからって鵜呑みにしない方がいいねこの分野は。
立ち読みしてみたら前書きでnullと\0を混同してる記述を見つけてひっくり返ったことがあるw
学校の教科書じゃないんで本に書いてあるからって鵜呑みにしない方がいいねこの分野は。
433デフォルトの名無しさん (アウアウエー Sa6a-0GGu)
2020/04/24(金) 16:15:17.70ID:3fWjsT92a434デフォルトの名無しさん (ワッチョイ 0c01-UN6T)
2020/04/24(金) 16:28:15.46ID:qTnWiq4N0 >>425
その認識が間違いだよ
GC目的でローカル変数にnull入れるのは無意味
https://devblogs.microsoft.com/oldnewthing/20100810-00/?p=13193
ローカル変数じゃなければ意味がある場合もあるが入門書で書く内容ではない
その認識が間違いだよ
GC目的でローカル変数にnull入れるのは無意味
https://devblogs.microsoft.com/oldnewthing/20100810-00/?p=13193
ローカル変数じゃなければ意味がある場合もあるが入門書で書く内容ではない
435デフォルトの名無しさん (ワッチョイ 66ad-rGdA)
2020/04/24(金) 16:41:13.14ID:agN2oJUo0 >>433
別にそうする必要はないから誤解を招くような記載は不要
別にそうする必要はないから誤解を招くような記載は不要
>>418
たとえ null 代入がガペコレの契機にならなくとも、ヒューマン側では意図を明確に記述している点で、null 代入は推奨できる記述方法なのでは?
たとえ null 代入がガペコレの契機にならなくとも、ヒューマン側では意図を明確に記述している点で、null 代入は推奨できる記述方法なのでは?
437デフォルトの名無しさん (ワッチョイ c001-Wew5)
2020/04/24(金) 17:08:09.05ID:WBygUvPh0 sync;sync;sync; みたいな物か
438デフォルトの名無しさん (JP 0H34-GHE+)
2020/04/24(金) 17:08:16.95ID:gOoAV1SLH >>436
こいつは馬鹿なんじゃないかと読む者に疑いを持たせる契機にはなるね
こいつは馬鹿なんじゃないかと読む者に疑いを持たせる契機にはなるね
439デフォルトの名無しさん (ワッチョイ 66ad-rGdA)
2020/04/24(金) 17:11:27.32ID:agN2oJUo0 >>436
なぜC#なのにnullを代入する必要があるのかどうか悩むことになる時点でout
なぜC#なのにnullを代入する必要があるのかどうか悩むことになる時点でout
440デフォルトの名無しさん (ラクッペペ MM34-3YDc)
2020/04/24(金) 17:13:01.95ID:pn4zFTupM 意図が明確なのと無駄な意図の表明を混同するな
シンタックスシュガー嫌いおじさんと同じ言動だと気づけ
シンタックスシュガー嫌いおじさんと同じ言動だと気づけ
441デフォルトの名無しさん (ワッチョイ ac63-aCTA)
2020/04/24(金) 17:13:39.58ID:Ln0giejY0 人間側に意図を伝えたいならコードじゃなくてコメント書けよ
不要なコードを記述することが推奨なんかされるわけがない
不要なコードを記述することが推奨なんかされるわけがない
442デフォルトの名無しさん (ワッチョイ ae63-7TXW)
2020/04/24(金) 17:17:33.89ID:CQLUkzVV0443デフォルトの名無しさん (ブーイモ MMfd-Pmq7)
2020/04/24(金) 17:37:41.38ID:+0niyonSM >>441
コメントで書かれても。。。
コメントで書かれても。。。
444デフォルトの名無しさん (ワッチョイ 0a2f-Hty+)
2020/04/24(金) 18:39:20.66ID:4FfGWszI0445デフォルトの名無しさん (ワッチョイ 245f-i0du)
2020/04/24(金) 18:40:18.74ID:0yikN2xQ0 今Xmlのデシリアライズの質問に答えてくれる方いますか?
446デフォルトの名無しさん (ワッチョイ 41a7-pY0b)
2020/04/24(金) 18:56:15.41ID:qZ8JT++I0 ダメだ
447デフォルトの名無しさん (アウアウエー Sa6a-0GGu)
2020/04/24(金) 20:50:16.80ID:h9xiDvvfa 例えばCの場合ポインタをfreeした後に再利用予定無いならそのポインタにNULL代入する意味は無いが
NULL代入する習慣があるようだけどC#のnullもそんな感じで代入してるんですか?
NULL代入する習慣があるようだけどC#のnullもそんな感じで代入してるんですか?
448デフォルトの名無しさん (ワッチョイ 66ad-rGdA)
2020/04/24(金) 20:53:13.33ID:agN2oJUo0 >>447
普通はnull代入なんてしない。ランタイムが勝手にやってくれる。
普通はnull代入なんてしない。ランタイムが勝手にやってくれる。
449デフォルトの名無しさん (ワッチョイ 66ad-rGdA)
2020/04/24(金) 20:53:48.09ID:agN2oJUo0 ランタイムが勝手にメモリ解放してくれる、ね。
450今度はビルドとはとか言い出すんだろうか? (ドコグロ MM40-f1XF)
2020/04/24(金) 21:04:37.09ID:5Yl2wSMPM451デフォルトの名無しさん (アウアウウー Sab5-BpYI)
2020/04/24(金) 21:09:13.94ID:hmKdXDZUa452デフォルトの名無しさん (ワッチョイ 66ad-rGdA)
2020/04/24(金) 21:11:07.55ID:agN2oJUo0 >>450
なにかおかしいかい?
なにかおかしいかい?
453今度はビルドとはとか言い出すんだろうか? (ドコグロ MM2e-f1XF)
2020/04/24(金) 21:15:06.69ID:WpI80Xm2M454デフォルトの名無しさん (アウアウウー Sab5-BpYI)
2020/04/24(金) 21:18:29.65ID:hmKdXDZUa455今度はビルドとはとか言い出すんだろうか? (ドコグロ MM02-f1XF)
2020/04/24(金) 21:22:09.71ID:/oHWXBMTM456デフォルトの名無しさん (ワッチョイ 66ad-rGdA)
2020/04/24(金) 21:24:56.92ID:agN2oJUo0 >>453
日本語が通じていなかったようだ
日本語が通じていなかったようだ
457今度はビルドとはとか言い出すんだろうか? (ドコグロ MM40-f1XF)
2020/04/24(金) 21:56:18.12ID:ttgIjm5mM >>456
はいはいw
はいはいw
458デフォルトの名無しさん (ワッチョイ 7001-PxOI)
2020/04/24(金) 22:52:02.97ID:xndEmFws0 VB6のガベージコレクタがうんこだった頃のトラウマのせい?
459デフォルトの名無しさん (ワッチョイ 41a7-pY0b)
2020/04/24(金) 23:03:19.86ID:qZ8JT++I0 グローバルインスタンスホルダーを使ってるときの明示的な参照無効化だろ
ローカルじゃ意味ない
ローカルじゃ意味ない
460デフォルトの名無しさん (ワッチョイ 5302-1Gce)
2020/04/24(金) 23:32:16.92ID:sopKw+cH0 初心者は黙ってnull代入しておけ
意味がないとか決めつけるのは10年早い
意味がないとか決めつけるのは10年早い
461デフォルトの名無しさん (ワッチョイ 66ad-rGdA)
2020/04/24(金) 23:35:58.32ID:agN2oJUo0 >>460
初心者こそnull代入なんてすべきじゃない。非常に限られた特別な場合だけ。
初心者こそnull代入なんてすべきじゃない。非常に限られた特別な場合だけ。
462デフォルトの名無しさん (ワッチョイ 15cf-1Gce)
2020/04/24(金) 23:41:17.84ID:FbIpmtWO0 >>409
何が?
何が?
463デフォルトの名無しさん (ワッチョイ 968e-A1EL)
2020/04/25(土) 00:06:19.49ID:XJisoOEM0 >>451
Delphiはfreeする
Delphiはfreeする
464デフォルトの名無しさん (ワッチョイ ae63-7TXW)
2020/04/25(土) 00:53:28.01ID:un7mPScC0 ローカル変数は自動で解放されるんだからnull代入する意味がわからん
465デフォルトの名無しさん (ワッチョイ 74da-uMKU)
2020/04/25(土) 01:03:57.76ID:EchrqtYB0 インスタンスへの参照が残ってればGC対象にならない
と言う説明の為に適当にローカル変数を使っただけだと思う
でも読者はローカル変数にnullを入れる事が正しいと思うだろうな
と言う説明の為に適当にローカル変数を使っただけだと思う
でも読者はローカル変数にnullを入れる事が正しいと思うだろうな
466デフォルトの名無しさん (ワッチョイ 5c63-QpYc)
2020/04/25(土) 04:46:37.14ID:5x5kZrrV0 質問です
Process.Start メソッドの処理が何故か急にやたら時間がかかるようになってしまいました。
いろいろ条件を変えて調べてみましたが、
実行ファイル(拡張子がexeのもの)を明示的に指定するとすぐ開けるようです。
開きたいファイルに関連付けされた実行ファイルを取得することで解決しそうですが
あまりにイケてないのでもっと良い解決方法を探しています。どなたかご存じないでしょうか。
Process.Start メソッドの処理が何故か急にやたら時間がかかるようになってしまいました。
いろいろ条件を変えて調べてみましたが、
実行ファイル(拡張子がexeのもの)を明示的に指定するとすぐ開けるようです。
開きたいファイルに関連付けされた実行ファイルを取得することで解決しそうですが
あまりにイケてないのでもっと良い解決方法を探しています。どなたかご存じないでしょうか。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… ★3 [BFU★]
- 中国「国連安保理の許可なしに日本攻撃可能」 Xで旧敵国条項に言及… ★4 [BFU★]
- 【千葉】コンビニに尿入りペットボトル並べた疑い、26歳男「むしゃくしゃして」…購入した客が飲もうとしたところ臭いに違和感 [ぐれ★]
- 中国官製報道「日本経済はもう持たない」にネット民ツッコミ「ニュースだけ見てたら日本はもう百回くらい爆発してる」 [1ゲットロボ★]
- 【硬貨】500円だと思ったら「500ウォンが入っていた」価値は約10分の1 全国で飲食店などで“500ウォントラブル”相次いで報告 [ぐれ★]
- 【STARTO ENTERTAINMENT】timelesz、メンバーの不適切言動を謝罪「不用意かつモラルに反した発言であった」 全員の署名入りでコメント [Ailuropoda melanoleuca★]
- 【実況】博衣こよりのえちえちホロ分かり手クイズ🧪🏴‍☠🌸 ★3
- 【高市悲報】中国「国連安保理の許可なしに日本を攻撃可能だ」★2 [115996789]
- 【んな専🏡】華金もんなっしょいとはやれやれなのらね🍬(・o・🍬)🏰
- 【実況】博衣こよりのえちえちホロ分かり手クイズ🧪🏴‍☠🌸 ★4
- NHKニュースウオッチ9「日本側は対話にオープンな姿勢で安定した日中関係を築きたい考えなのに中国が意固地で糸口が見いだせない」 [904151406]
- 日中戦争起きたら5日で自衛隊壊滅するらしい。じゃあ徴兵も無いし、俺等が必死になって反対してやる理由なくね? [237216734]
