|
|
連載:[完全版]究極のC#プログラミング
Chapter19 小さな改善とコンパイラの新機能
川俣 晶
2010/05/24 |
|
19.1 インライン警告制御「#pragma warning」
本章では、C# 2.0〜3.0で追加された小さな改善点をアトランダムにまとめる。
さて、コンパイラの警告は出ないほうがよいとわかっていながら、どうソースコードを修正しても消せない警告が残ってしまうこともある。かといって、オプション指定で一律に消すのも好ましいことではない。本当のバグの存在に気づくチャンスを逃す可能性もあるためだ。
C/C++などでは「#pragmaディレクティブ」を埋め込んで、指定した警告をソースコード中の特定の箇所でのみ発生させないように対処することができたが、C# 2.0以降でもこれと同じことが可能となった。#pragmaディレクティブとそれを用いて警告を制御する「#pragma warning」の機能が用意されたのである。
書式は難しくはない。以下のような書式で警告の番号を指定するだけである。
#pragma warning disable 警告番号リスト
|
|
警告を止めるとき |
#pragma warning restore 警告番号リスト
|
|
警告を再開させるとき |
ちなみに、警告番号リストを指定しない場合はすべての警告が対象となる。
これにより、「#pragma warning disable」を記述した行以降では、指定番号の警告は出力されなくなる。そして、「#pragma warning restore」を記述した行以降で、再び警告は出力されるようになる。
次のリスト19.1は、実際にこれを使用した例である。183番の警告は、「a is int」のような判定式が“コンパイル時に結果を確定できる”場合に発生する。
using System;
using System.Collections.Generic;
using System.Text;
class Program
{
static void Main(string[] args)
{
int a=0;
// 183番の警告を抑止する
#pragma warning disable 183
if (a is int) // 警告は出ない
{
}
// 183番の警告を再開する
#pragma warning restore 183
if (a is int) // 警告 式はつねに指定された型 ('int') です。
{
}
}
}
|
|
リスト19.1 「#pragma warning」により警告を抑止/再開した例 |
Insider.NET 記事ランキング
本日
月間