Visual Studio 2026 - エラー・警告 - 警告 IDExxxx


 


1. 概要
2. IDE0017
3. IDE0028
4. IDE0031
5. IDE0044
6. IDE0054
7. IDE0059
8. IDE0063
9. IDE0071
10. IDE0090
11. IDE0270
12. IDE0290
13. IDE0300
14. IDE1006
15. 参考サイト

1. 概要

 「IDExxxx」は、「C#」などのコーディング規約(命名規則)に違反した際に表示されるあるいは、簡略な書き方が可能な場合表示されるもので、警告・エラーコードというよりは、提案のようなものです。

2. IDE0017

 下記のようなメッセージが表示されます。
Null チェックを簡素化できます

a = new b();
a.c = true;
 てな場合、下記のように書けますよ、ちゅうことです。

a = new (){ a.c = true };

3. IDE0028

 下記のようなメッセージが表示されます。
コレクションの初期化を簡素化できます
 下記のような構文は。

Hashtable a_ = new Hashtable();
 下記のように書けるということです。

Hashtable a_ = [];

4. IDE0031

 下記のようなメッセージが表示されます。
Null チェックを簡素化できます
 下記のような文の場合。

if (a != null)
{
	a.method();
}
 下記のように書きます。

a?.method();

5. IDE0044

 下記のようなメッセージが表示されます。
フィールドを読み取り専用にします
 これは、クラス変数で使われていないようなケースで出力される場合があります。  「readonly」をつける手もありますが、本当に使われてなくて、将来も使わないのであれば、削除します。

6. IDE0054

 下記のようなメッセージが表示されます。
複合代入を使用
 これは、よくあるパターン。

i = i - 1;
 は、下記のように書けますよということです。

i -= 1;

7. IDE0059

 下記のようなメッセージが表示されます。
値の 'a' への不必要な代入
 下記のような文の場合。

bool a = true;

if (File.Exists(FilePath))
{
    a = true;
}
else
{
    a = false;
}
 この場合、「a」は、次の「if」文のどちらでも代入されるので、最初の初期化の代入文は不要ということです。

8. IDE0063

 下記のようなメッセージが表示されます。
'new' 式を簡素化できます
'using' ステートメントは簡素化できます
 「new」の場合、下記のような記述があると、表示されます。

string name = new string("");
 下記のように記述します。

string name = new ("");
 基本的に、パラメータはそのままに、型名を省略して、「new ();」と記述できるようで、それを推奨されています。  まぁ、決まりきっているし、楽なコーディングになりますわな。  「using」の場合、下記のような記述があると、表示されます。

try
{
	using (System.IO.StreamWriter file = new(@"C:\a.csv", false))
	{
		file.WriteLine("タイトル");
	}
}
catch (Exception)
{
	...
}
 「using」が、「try ~ catch」で囲まれているようであれば。

try
{
	using System.IO.StreamWriter file = new(@"C:\a.csv", false);
	file.WriteLine("タイトル");
}
catch (Exception)
{
	...
}
 「using」が、終わりのカッコまで有効であれば、カッコでネストさせなくても良いようです。  ネストが浅くなりますな。

9. IDE0071

 下記のようなメッセージが表示されます。
補間を簡素化することができます
 下記の場合。

Console.WriteLine($@"[{ x.Length.ToString() }]");
 「C#」が、うまいこと補完するので。

Console.WriteLine($@"[{ x.Length }]");
 と書いていいですよ、ということです。

10. IDE0090

 下記のようなメッセージが表示されます。
'new' 式を簡素化できます
 以前は、クラスを「new」するときに、クラス名を書かなきゃならなかったのですが、今は、クラス名を省略できます。

using Font f = new Font(fontStyle, fontSize);
 は、下記のように書けるわけです。

using Font f = new(fontStyle, fontSize);

11. IDE0270

 下記のようなメッセージが表示されます。
コレクションの初期化を簡素化できます
 下記のような構文で発生します。

Control? c = serchControl(id, panel_);

if (c == null)
{
    throw new Exception("オブジェクトが存在しません(" + id + ")");
}
 これは、下記のように記述できるということです。

Control c = serchControl(id, panel_) ?? throw new Exception("オブジェクトが存在しません(" + id + ")");

12. IDE0290

 下記のようなメッセージが表示されます。
プライマリ コンストラクターの使用

public class ClassA
{
	private readonly ClassB c_;

	public ClassA(ClassB c)
	{
		c_ = c;
	}
 てなクラス定義とコンストラクタは、下記のように簡略化できるようです。

public class ClassA(ClassB c)
{
	private readonly ClassB c_ = c;

13. IDE0300

 下記のようなメッセージが表示されます。
コレクションの初期化を簡素化できます

Vector3[] shortcutPoint = new Vector3[2];
shortcutPoint[0] = new Vector3(-2.65f, -2.15f, 0.0f);
shortcutPoint[1] = new Vector3(-2.525f, -2.275f, 0.0f);
 は、下記のように書けますよということです。

Vector3[] shortcutPoint =
	[
		new(-2.65f, -2.15f, 0.0f),
		new(-2.525f, -2.275f, 0.0f),
	];

14. IDE1006

 下記のようなメッセージが表示されます。
名前付けルール違反: これらの単語は、大文字で始まらなければなりません: xxxx
 変数名やメソッド名を規定の形式(パスカルケースやキャメルケースなど)に修正します。  屁数名やメソッド名をそのままにして、警告を表示しないようにするには。  ソースコードに、下記を記述するか。

#pragma warning disable IDE1006
 「オプション」「すべての設定」「言語」「C#」「コードスタイル」で。  「名前指定」

 例えば、「Types」の「Pascal Case」を「提案次項」から。


 「リファクタリングのみ」へ変えれば、警告は消えます。


 別解として。
 プロジェクトの「.csproj」を開いて。


<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
	・・・	略	・・・
    <NoWarn>$(NoWarn);IDE1006</NoWarn>
  </PropertyGroup>
</Project>
 と「PropertyGroup」タグ内に、「NoWarn」のタグを付けて、「$(NoWarn);IDE1006」を記述します。

15. 参考サイト

 本ページは、「Claude」上等兵および「Google」大先生を参考にさせていただきました。

audiobook.jp
【usus ウズウズ】
サウンドハウス
ネットオークションの相場、統計、価格比較といえばオークファン
それがだいじWi-Fi
ハイスピードプラン
earthcar(アースカー)
ベルリッツ
健康サポート特集
U-NEXT
5G CONNECT
薬屋の独り言
アフィリエイトのアクセストレード
損保との違い
Amazonギフトカード
JETBOY
TikTok Shop 【リピート用プログラム】
葬送のフリーレン Prime Video