Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Nota
Artikel ini adalah spesifikasi fitur. Spesifikasi berfungsi sebagai dokumen desain untuk fitur tersebut. Ini termasuk perubahan spesifikasi yang diusulkan, bersama dengan informasi yang diperlukan selama desain dan pengembangan fitur. Artikel ini diterbitkan sampai perubahan spesifikasi yang diusulkan diselesaikan dan dimasukkan dalam spesifikasi ECMA saat ini.
Mungkin ada beberapa perbedaan antara spesifikasi fitur dan implementasi yang selesai. Perbedaan tersebut dicatat dalam catatan dari rapat desain bahasa (LDM) yang relevan.
Anda dapat mempelajari lebih lanjut tentang proses untuk mengadopsi speklet fitur ke dalam standar bahasa C# dalam artikel tentang spesifikasi .
Laporkan peringatan untuk referensi terhadap jenis dan anggota yang diberi tanda dengan 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; }
}
}
Diagnostik yang dilaporkan
Meskipun diagnostik secara teknis merupakan peringatan, sehingga pengompilasi memungkinkan untuk menekannya, ia diperlakukan sebagai kesalahan untuk tujuan pelaporan. Hal ini menyebabkan build gagal jika pesan diagnostik tidak diabaikan.
Diagnostik akan diberikan untuk setiap referensi ke tipe atau anggota yang:
- ditandai dengan atribut
- dalam rakitan atau modul yang ditandai dengan atribut
kecuali ketika referensi terjadi pada anggota [Experimental], yang secara otomatis akan ditekan.
Dimungkinkan juga untuk menekan diagnostik dengan cara biasa, seperti opsi kompilator eksplisit atau #pragma.
Misalnya, jika API ditandai dengan [Experimental("DiagID")] atau [Experimental("DiagID", UrlFormat = "https://example.org/{0}")], diagnostik dapat ditekan dengan #pragma warning disable DiagID.
Kesalahan dihasilkan jika ID diagnostik yang diberikan ke atribut eksperimental bukan pengidentifikasi C# yang valid .
Jika nilai untuk properti Message tidak disediakan, pesan diagnostik adalah pesan tertentu, di mana '{0}' adalah jenis atau nama anggota yang sepenuhnya memenuhi syarat.
'{0}' is for evaluation purposes only and is subject to change or removal in future updates.
Jika nilai untuk properti Message disediakan, pesan diagnostik adalah pesan tertentu, di mana '{0}' adalah jenis atau nama anggota yang sepenuhnya memenuhi syarat dan '{1}' adalah Message.
'{0}' is for evaluation purposes only and is subject to change or removal in future updates: '{1}'.
Atribut tidak diwariskan dari tipe dasar atau anggota yang ditimpa.
ObsoleteAttribute dan DeprecatedAttribute
Peringatan untuk [Experimental] dilaporkan dalam anggota [Obsolete] atau [Deprecated].
Peringatan dan kesalahan untuk [Obsolete] dan [Deprecated] dilaporkan pada anggota [Experimental].
Tetapi peringatan dan kesalahan untuk [Obsolete] dan [Deprecated] dilaporkan alih-alih [Experimental] jika ada beberapa atribut.
C# feature specifications