ExperimentalAttribute
手記
この記事は機能仕様です。 仕様は、機能の設計ドキュメントとして機能します。 これには、提案された仕様の変更と、機能の設計と開発時に必要な情報が含まれます。 これらの記事は、提案された仕様の変更が最終決定され、現在の ECMA 仕様に組み込まれるまで公開されます。
機能の仕様と完成した実装の間には、いくつかの違いがある可能性があります。 これらの違いは、関連する 言語設計会議 (LDM) ノートでキャプチャされます。
機能仕様を C# 言語標準に導入するプロセスの詳細については、仕様に関する記事を参照してください。
System.Diagnostics.CodeAnalysis.ExperimentalAttribute
でマークされた型とメンバーへの参照に関する警告を報告します。
namespace System.Diagnostics.CodeAnalysis
{
[AttributeUsage(AttributeTargets.Assembly |
AttributeTargets.Module |
AttributeTargets.Class |
AttributeTargets.Struct |
AttributeTargets.Enum |
AttributeTargets.Constructor |
AttributeTargets.Method |
AttributeTargets.Property |
AttributeTargets.Field |
AttributeTargets.Event |
AttributeTargets.Interface |
AttributeTargets.Delegate, Inherited = false)]
public sealed class ExperimentalAttribute : Attribute
{
public ExperimentalAttribute(string diagnosticId)
{
DiagnosticId = diagnosticId;
}
public string DiagnosticId { get; }
public string? UrlFormat { get; set; }
public string? Message { get; set; }
}
}
報告された診断
診断は技術的には警告ですが、コンパイラが抑制できるように、レポートの目的でエラーとして扱われます。 これにより、診断が抑制されていない場合にビルドが失敗します。
次に当てはまる型またはメンバーへの参照について診断が報告されます。
- 属性でマークされている。
- 属性でマークされたアセンブリまたはモジュールで、
参照が [Experimental]
メンバー内で発生する場合と自動的に抑制される場合はを除きます。
明示的なコンパイラ オプションや #pragma
など、通常の方法で診断を抑制することもできます。
たとえば、API が [Experimental("DiagID")]
または [Experimental("DiagID", UrlFormat = "https://example.org/{0}")]
でマークされている場合、#pragma warning disable DiagID
で診断を抑制できます。
実験用属性に指定された診断 ID が有効な C# 識別子
Message
プロパティの値が指定されていない場合、診断メッセージは特定のメッセージであり、'{0}'
は完全修飾型またはメンバー名です。
'{0}' is for evaluation purposes only and is subject to change or removal in future updates.
Message
プロパティの値が指定されている場合、診断メッセージは特定のメッセージです。ここで、'{0}'
は完全修飾型またはメンバー名、'{1}'
は Message
です。
'{0}' is for evaluation purposes only and is subject to change or removal in future updates: '{1}'.
この属性は、基本型またはオーバーライドされたメンバーから継承されません。
ObsoleteAttribute(非推奨属性)と DeprecatedAttribute(廃止予定の属性)
[Experimental]
の警告は、[Obsolete]
または [Deprecated]
メンバー内で報告されます。
[Obsolete]
および [Deprecated]
の警告とエラーは、[Experimental]
メンバー内で報告されます。
ただし、複数の属性がある場合は、[Experimental]
ではなく、[Obsolete]
と [Deprecated]
の警告とエラーが報告されます。
C# feature specifications