Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Derlemede olarak literal işaretlenmiş bir /clr değişken (veri üyesi), derleme zamanı sabitidir. C# const değişkeninin yerel eşdeğeridir.
Tüm Platformlar
Açıklamalar
(Bu dil özelliği için tüm çalışma zamanları için geçerli olan hiçbir açıklama yoktur.)
Windows Çalışma Zamanı
Açıklamalar
(Bu dil özelliği için yalnızca Windows Çalışma Zamanı geçerli olan bir açıklama yoktur.)
Ortak Dil Çalışma Zamanı
Açıklamalar
olarak literal işaretlenmiş bir veri üyesi bildirildiğinde başlatılmalıdır. Değer sabit bir tamsayı, sabit sabit veya dize türü olmalıdır. Başlatma ifadesinin türünden veri üyesinin türüne literal dönüştürme, kullanıcı tanımlı dönüştürme gerektirmez.
Çalışma zamanında alan için literal bellek ayrılmaz; derleyici yalnızca değerini sınıfın meta verilerine ekler. literal Değer, derleme zamanı sabiti olarak değerlendirilir. Standart C++ içindeki en yakın eşdeğerdir constexpr, ancak bir veri üyesi C++/CLI'da olamaz constexpr .
olarak literal işaretlenmiş bir değişken, işaretli static constbir değişkenden farklıdır. Veri static const üyesi diğer derleyicilerin meta verilerinde kullanılamaz. Daha fazla bilgi için bkz. static ve const.
literal bağlama duyarlı bir anahtar sözcüktür. Daha fazla bilgi için bkz . Bağlama duyarlı anahtar sözcükler.
Örnekler
Bu örnekte bir literal değişkenin ifade ettiği staticgösterilir.
// mcppv2_literal.cpp
// compile with: /clr
ref struct X {
literal int i = 4;
};
int main() {
int value = X::i;
}
Aşağıdaki örnekte meta verilerdeki etkisi gösterilmektedir literal :
// mcppv2_literal2.cpp
// compile with: /clr /LD
public ref struct A {
literal int lit = 0;
static const int sc = 1;
};
ve litiçin sc meta verilerdeki farka dikkat edin: modopt yönergesi uygulaması, scdiğer derleyiciler tarafından yoksayılabilir anlamına gelir.
.field public static int32 modopt([mscorlib]System.Runtime.CompilerServices.IsConst) sc = int32(0x00000001)
.field public static literal int32 lit = int32(0x00000000)
C# dilinde yazılan aşağıdaki örnek, önceki örnekte oluşturulan meta verileri başvurur ve ve static const değişkenlerinin literal etkisini gösterir:
// mcppv2_literal3.cs
// compile with: /reference:mcppv2_literal2.dll
// A C# program
class B {
public static void Main() {
// OK
System.Console.WriteLine(A.lit);
System.Console.WriteLine(A.sc);
// C# does not enforce C++ const
A.sc = 9;
System.Console.WriteLine(A.sc);
// C# enforces const for a literal
A.lit = 9; // CS0131
// you can assign a C++ literal variable to a C# const variable
const int i = A.lit;
System.Console.WriteLine(i);
// but you cannot assign a C++ static const variable
// to a C# const variable
const int j = A.sc; // CS0133
System.Console.WriteLine(j);
}
}
Gereksinimler
Derleyici seçeneği: /clr