NDepend 4 (v4.1.0.6871) では、デフォルトのデザイン クエリ "Boxing/unboxing should be avoid" を使用しています。
warnif percentage > 5 from m in Application.Methods where
m.IsUsingBoxing ||
m.IsUsingUnboxing
select new { m, m.NbLinesOfCode, m.IsUsingBoxing, m.IsUsingUnboxing }
次のメソッド (Jon Skeet のMiscUtilに触発されて盗まれたもの) がボクシングを使用していると報告しています。
public static void ThrowIfNull<T>(this T target, string name) where T : class
{
if (target == null)
{
throw new ArgumentNullException(name ?? string.Empty);
}
}
この方法がボクシングをどのように使用している可能性があるのか わかりません。どこにもキャストを使用していません。
null合体演算子が何らかの形で舞台裏でボクシングを使用していた場合に備えて、次のバージョンを試しました。
public static void ThrowIfNull<T>(this T target, string name) where T : class
{
if (target == null)
{
throw new ArgumentNullException(name);
}
}
...しかし、それもうまくいきませんでした.NDependは、メソッドがボクシングを使用していると報告しました。
何か案は?