手記
この記事は機能仕様です。 仕様は、機能の設計ドキュメントとして機能します。 これには、提案された仕様の変更と、機能の設計と開発時に必要な情報が含まれます。 これらの記事は、提案された仕様の変更が最終決定され、現在の 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] メンバー内で報告されます。
ただし、複数の属性がある場合は、[Obsolete] ではなく、[Deprecated] と [Experimental] の警告とエラーが報告されます。
C# feature specifications