質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

1098閲覧

コード変数 a にnullが代入できない

11kiny

総合スコア5

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2020/07/02 02:22

編集2020/07/02 02:42

開発ソフト ビジュアルスタジオ
言語   C#
.NET コンソールアプリ
使用PC  MAC

using System; namespace Sample407 { class Program { static void Main(string[] args) { String[] a = new String[10000]; for (int i = 0; i < 10000; i++) { a[i] = new String('M', 10000); } Console.WriteLine("メモリ使用量(GC発動前) :" + GC.GetTotalMemory(false)); a = null; Console.WriteLine("メモリ使用量(参照解除後):" + GC.GetTotalMemory(false)); GC.Collect(); Console.WriteLine("メモリ使用量(GC発動後):" + GC.GetTotalMemory(false)); } } } コード

メモリの解放を行った後のメモリ使用量を見たいのですがこちらのプログラムを実行すると
メモリ使用量(GC発動前) :200387632
メモリ使用量(参照解除後):200470464
メモリ使用量(GC発動後):200445592
と出てメモリ使用量が減りません
どうやら調べてみますと a = null;がうまく実行されていないようで
下にい黄色い線が出て Unnecessary assignment of a value to 'a'
と表示されております。
エラー コードは出ておりません。
a に nullを代入するにはどのようにしたらよろしいでしょうか?
わかる方いらっしゃいましたら教えていただけますと幸いです。
何卒よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/07/02 02:31

コードはマークダウンのcode機能を利用してご提示ください
11kiny

2020/07/02 02:40

勉強ぶそくでした汗 次回以降利用していきたいと思います ありがとうございます。
ozwk

2020/07/02 02:41

質問は編集できます
11kiny

2020/07/02 02:43

ためしにおこないましたがこちらでよろしいでしょうか?
ozwk

2020/07/02 02:49

質問タイトルに「コード」とか コードブロック内に「コード」書かれてますけど 概ねできてます。
11kiny

2020/07/02 02:51

ありがとうございます。 プログラミングでも細かいミスが多いのでコードと出てしまっております部分は注意いたします。 ご指摘いただきましてありがとうございました。
guest

回答1

0

ベストアンサー

a に nullを代入するにはどのようにしたらよろしいでしょうか?

そのコードで問題ありません。実行できているということは、単に「それは無駄ですよ」という警告であって、エラーではありません

投稿2020/07/02 02:25

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/07/02 02:29

デバッグモードだとGCしてもスコープアウトするまで残り続ける、ということがあるようです。
11kiny

2020/07/02 02:31

かいとうありがとうございます。 現在教本にて a = null;を行い メモリ使用量が減ったことを確認したく思っておりますが 実行結果 メモリ使用量(GC発動前) :200387632 メモリ使用量(参照解除後):200470464 メモリ使用量(GC発動後):30000 のようなものにしたく a に入っている大量のデータにnullを上書きするにはどのようにしたらよろしいでしょうか?
11kiny

2020/07/02 04:05

using System; namespace Sample407 { class Program { static void Main(string[] args) { String[] a = new String[10000]; for (int i = 0; i < 10000; i++) { a[i] = new String('M', 10000); } Console.WriteLine("メモリ使用量(GC発動前) :" + GC.GetTotalMemory(false)); for (int i = 0; i < 10000; i++) { a[i] = null; } Console.WriteLine("メモリ使用量(参照解除後):" + GC.GetTotalMemory(false)); GC.Collect(); Console.WriteLine("メモリ使用量(GC発動後):" + GC.GetTotalMemory(false)); } } } にコード変更を行い無事解決いたしました。 ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問