C#において、同じインスタンスを何度もnewしてよいでしょうか。
(インターネットで探したんですが、意外に見つからなかったもので質問させていただきました。)
例えば
A a = new A();
//なにかしら処理
a = new A();
//なにかしら処理
a = new A();
//なにかしら処理
と書いた場合、最初と2番目のnewしたインスタンスは、ガベージコレクタによっていずれ破棄されると考えてよろしいでしょうか。
また上記のコードを
A a = new A();
//なにかしら処理
A a = new A();
//なにかしら処理
A a = new A();
//なにかしら処理
のように、宣言から書きなおしている場合では、どのような違いがあるのでしょうか。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
すいません、「同じメソッド内に同じ変数名を再度宣言することはできません」は「同じスコープ内に・・・」の誤りでした。
ループの中で A a = new A(); とした場合は、ループが1回終わるごとにループ内のローカル変数はガベージコレクタで破棄する対象となるため、1回目のループのときのaと2回目のループのときのaは別物になります。ループによってメモリは一方的に使用量が増加してくわけではなく、あるタイミングで破棄対象のインスタンスが解放されるようになります。
No.1
- 回答日時:
1: A a = new A();
2: a = new A();
1で作成されたインスタンスはaという変数で参照することができます。
2で新たなインスタンスを作ってaという変数で参照することができるようになります。1で作成されたインスタンスを参照できる変数はなくなりますので、いずれガベージコレクタによって破棄されます。
1: A a = new A();
2: A a = new A();
同じメソッド内に同じ変数名を再度宣言することはできませんよ。「ローカル変数 'a' はこのスコープで既に定義されています。」というコンパイルエラーが出るはずです。
同じ変数で違うインスタンスを参照させることについては問題ありません。ただ、変数の使い回しがコードのメンテナンス性、可読性の面でいいかというと、「???」です。ご質問とは別の問題ですが、気をつけたほうがいいと思います。
回答ありがとうございます。
2つ目のコードについては、おっしゃるとおり2つ宣言はできないみたいですね。
ただ、ループの中に「A a = new A();」
と宣言を入れた場合、メモリ的にはどうなるのでしょうか。(もしかしてこれもできない!?)
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- C言語・C++・C# C# で、あるフォルダー内にあるすべてのテキストファイルを別のフォルダーにコピーする。 4 2022/11/21 13:23
- Java インスタンス ダウンキャストについて以下の解釈であっているか教えて欲しいです。 サブクラスをスーパー 1 2022/03/27 18:53
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- C言語・C++・C# クラスのメンバ変数を基準に並べ替えをしたい 5 2022/12/25 17:40
- Java java final 1 2022/06/10 22:49
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- 中学校 Do you want a new bag? Want you a new bag? この二つの違い 3 2022/07/30 15:55
- 英語 "exstential"と"exsting"と"existent"の違い等について 1 2023/05/01 13:50
- JavaScript 2段階プルダウンで1段階目の選択を終えた後に選択ボックスを見えなくしたい 2 2022/07/05 21:58
このQ&Aを見た人はこんなQ&Aも見ています
-
10代と話して驚いたこと
先日10代の知り合いと話した際、フロッピーディスクの実物を見たことがない、と言われて驚きました。今後もこういうことが増えてくるのかと思うと不思議な気持ちです。
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
プリン+醤油=ウニみたいな組み合わせメニューを教えて!
プリンと醤油を一緒に食べると「ウニ」の味がする! というような意外な組み合わせから、新しい味になる食べ物って色々ありますよね。 あなたがこれまでに試した「組み合わせメニュー」を教えてください。
-
お風呂の温度、何℃にしてますか?
みなさん、家のお風呂って何℃で入ってますか? ぬるめのお湯にゆったり…という方もいれば、熱いのが好き!という方もいるかと思います。 我が家は平均的(?)な42℃設定なのですが、みなさんのご家庭では何℃に設定していますか?
-
C# インスタンスの破棄
その他(プログラミング・Web制作)
-
CloseとDisposeの違い
Visual Basic(VBA)
-
visual studio でインデントを自動的に揃えるショートカットキー
その他(プログラミング・Web制作)
-
-
4
同じ配列またはクラスを、2回以上newしたとき
Java
-
5
インスタンス参照でアクセスできない。代わりに型名?
C言語・C++・C#
-
6
C# 超初心者です。 this.Refresh();という文を使いたいです
C言語・C++・C#
-
7
CSVファイルの中で、「 , 」カンマを使いたい
その他(コンピューター・テクノロジー)
-
8
変数名の付け方
Java
-
9
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
10
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
11
別のフォームで記述している関数を実行するには?C#
C言語・C++・C#
-
12
C# try-catch でcatchに飛ばす方法
C言語・C++・C#
-
13
C#でButtonのフォーカス枠を消したいのですが
C言語・C++・C#
-
14
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
15
C#で、あるクラスのメンバーすべての値を出力したい
C言語・C++・C#
-
16
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
17
画面解像度の最高以上の解像度を設定してスクロールさせて見るということはできませんか?
Windows Vista・XP
-
18
「マスタ」と「テーブル」の違いとはなんでしょうか?
Oracle
-
19
間違えて配置してしまったコントロールの削除
Visual Basic(VBA)
-
20
C#のループでtextboxに値を入れる方法
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数名の付け方
-
private static という変数の修飾
-
C# インスタンスの破棄
-
複数の変数を宣言する時、同時...
-
オブジェクト参照がオブジェク...
-
VB.NET getとsetの概念がわかり...
-
javaのクラスの作り方、エラー...
-
[Visual C#] 優先される処理に...
-
変数の参照でエラーが出てしま...
-
「インスタンス」の意味をわか...
-
C#において、同じインスタンス...
-
データベースから日付型を取得...
-
フォームの存在をチェックする方法
-
生成したインスタンスを削除す...
-
SQLを連続発行する時の正しい(?...
-
Dimensionクラスの使い方
-
サーブレットでレスポンスが返...
-
フォームのCheck boxとOLEObjec...
-
VC#での24ビットbmp形式での保...
-
VB.NET Newしたものを変数に代...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数名の付け方
-
private static という変数の修飾
-
複数の変数を宣言する時、同時...
-
インスタンス参照でアクセスで...
-
オブジェクト参照がオブジェク...
-
C# インスタンスの破棄
-
VB.NET getとsetの概念がわかり...
-
C#において、同じインスタンス...
-
生成したインスタンスを削除す...
-
「インスタンス」の意味をわか...
-
変数の参照でエラーが出てしま...
-
フォームの存在をチェックする方法
-
C#「オブジェクト参照が必要で...
-
javaのクラスの作り方、エラー...
-
SQLを連続発行する時の正しい(?...
-
他のファイルの変数参照
-
文字列を日付に変換でParseExce...
-
インスタンスを同じ名前で作成...
-
[Visual C#] 優先される処理に...
-
newしないインスタンス?実体化...
おすすめ情報