Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Notatka
Ten artykuł jest specyfikacją funkcji. Specyfikacja służy jako dokument projektowy dla funkcji. Zawiera proponowane zmiany specyfikacji wraz z informacjami wymaganymi podczas projektowania i opracowywania funkcji. Te artykuły są publikowane do momentu sfinalizowania proponowanych zmian specyfikacji i włączenia ich do obecnej specyfikacji ECMA.
Mogą wystąpić pewne rozbieżności między specyfikacją funkcji a ukończoną implementacją. Te różnice są przechwytywane w odpowiednich spotkania projektowego języka (LDM).
Więcej informacji na temat procesu wdrażania specyfikacji funkcji można znaleźć w standardzie języka C# w artykule dotyczącym specyfikacji .
Zgłaszaj ostrzeżenia dla odwołań do typów i członków oznaczonych 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; }
}
}
Zgłoszona diagnostyka
Mimo że diagnostyka jest technicznie ostrzeżeniem, dzięki czemu kompilator zezwala na jego pomijanie, jest traktowany jako błąd w celu raportowania. Spowoduje to niepowodzenie kompilacji, jeśli diagnostyka nie zostanie wyciszona.
Diagnoza jest zgłaszana dla dowolnego odwołania do typu lub członka, który może być:
- oznakowane atrybutem
- w zestawie lub module oznaczonym atrybutem,
z wyjątkiem sytuacji, kiedy odwołanie występuje w członkach [Experimental], jest ono wtedy automatycznie pomijane.
Możliwe jest również wyłączenie diagnostyki w zwykły sposób, na przykład poprzez jawną opcję kompilatora lub #pragma.
Jeśli na przykład interfejs API jest oznaczony [Experimental("DiagID")] lub [Experimental("DiagID", UrlFormat = "https://example.org/{0}")], diagnostyka może zostać pominięta przy użyciu #pragma warning disable DiagID.
Błąd jest generowany, jeśli identyfikator diagnostyczny podany dla atrybutu eksperymentalnego nie jest prawidłowym identyfikatorem języka C#.
Jeśli nie podano wartości właściwości Message, komunikat diagnostyczny jest określonym komunikatem, w którym '{0}' jest w pełni kwalifikowanym typem lub nazwą elementu członkowskiego.
'{0}' is for evaluation purposes only and is subject to change or removal in future updates.
Jeśli zostanie podana wartość właściwości Message, komunikat diagnostyczny jest określonym komunikatem, w którym '{0}' jest w pełni kwalifikowanym typem lub nazwą elementu członkowskiego, a '{1}' jest Message.
'{0}' is for evaluation purposes only and is subject to change or removal in future updates: '{1}'.
Atrybut nie jest dziedziczony z typów podstawowych ani nadpisanych członków.
Przestarzałe atrybuty i przestarzałeAttribute
Ostrzeżenia dotyczące [Experimental] są zgłaszane wśród członków [Obsolete] lub [Deprecated].
Ostrzeżenia i błędy dotyczące [Obsolete] i [Deprecated] są zgłaszane wewnątrz [Experimental] członków.
Jednak ostrzeżenia i błędy dotyczące [Obsolete] i [Deprecated] są zgłaszane zamiast [Experimental], jeśli istnieje wiele atrybutów.
C# feature specifications