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#」「コードスタイル」で。
「名前指定」