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.
Bu makale aşağıdaki derleyici hatalarını kapsar:
- CS0765 - Yalnızca tanımlama bildirimine sahip kısmi yöntemler veya kaldırılan koşullu yöntemler ifade ağaçlarında kullanılamaz.
- CS0831 - İfade ağacı temel erişim içermeyebilir.
- CS0832 - İfade ağacı atama işleci içermeyebilir
- CS0834 - Deyim gövdesine sahip lambda ifadesi ifade ağacına dönüştürülemez.
- CS0835 - Lambda ifadesi, tür bağımsız değişkeni 'type' bir temsilci türü olmadığı için bir ifade ağacına dönüştürülemez.
- CS0838 - İfade ağacı çok boyutlu dizi başlatıcı içermeyebilir.
- CS0845 - İfade ağacı lambda, sol tarafında null veya varsayılan değişmez değer olan bir birleştirme işleci içermeyebilir.
- CS0853 - İfade ağacı adlandırılmış bağımsız değişken belirtimi içermeyebilir.
- CS0854 - İfade ağacı, isteğe bağlı bağımsız değişkenler kullanan bir çağrı veya başlatma içermemelidir.
- CS0855 - İfade ağacı dizine alınan bir özellik içermeyebilir.
- CS1944 - İfade ağacı güvenli olmayan bir işaretçi işlemi içermeyebilir.
- CS1945 - İfade ağacı anonim bir yöntem ifadesi içermeyebilir.
- CS1946 - Anonim yöntem ifadesi bir ifade ağacına dönüştürülemez.
-
CS1951 - İfade ağacı lambda bir
refveyainoutparametresi içermeyebilir. - CS1952 - Lambda ifade ağacı değişken sayıda bağımsız değişken içeren bir yöntem içeremez.
- CS1963 - İfade ağacı dinamik işlem içermeyebilir.
- CS1989 - Zaman uyumsuz lambda ifadeleri ifade ağaçlarına dönüştürülemez.
- CS2037 - İfade ağacı lambda ifadesi, bağımsız değişkenlerden 'ref' atlandığında bir COM çağrısı içermemelidir.
- CS7053 - İfade ağacı "özellik" içermeyebilir.
- CS8072 - Lambda ifade ağacı null yayma işleci içermeyebilir.
- CS8074 - Lambda ifade ağacı sözlük başlatıcısı içermeyebilir.
-
CS8075 - Lambda ifadesindeki koleksiyon başlatıcısı için uzantı
Addyöntemi desteklenmez. - CS8110 - İfade ağacı yerel işleve başvuru içermeyebilir.
-
CS8122 - İfade ağacı '
is' desen eşleştirme işleci içermeyebilir. - CS8143 - İfade ağacı bir demet sabiti içermemelidir.
- CS8144 - İfade ağacı bir tuple dönüşümünü içermemelidir.
- CS8153 - İfade ağacı lambda, başvuruyla döndüren bir yönteme, özelliğe veya dizin oluşturucuya çağrı içermeyebilir.
- CS8155 - Başvuru ile döndüren lambda ifadeleri ifade ağaçlarına dönüştürülemezler.
- CS8188 - Bir ifade ağacı, throw ifadesi içeremez.
- CS8198 - İfade ağacı bir out bağımsız değişken bildirimi içermeyebilir.
- CS8207 - İfade ağacı kullanılmayan değişken bulunduramaz.
-
CS8382 - İfade ağacı bir demet
==veya!=işleci içermemelidir. - CS8514 - İfade ağacı anahtar ifadesi içermeyebilir.
- CS8640 - İfade ağacı, başvuru yapısının veya kısıtlanmış türün değerini içeremez.
- CS8642 - İfade ağacı null birleştirme ataması içermeyebilir.
- CS8790 - İfade ağacı bir desen System.Index veya System.Range dizin oluşturucu erişimi içermeyebilir.
-
CS8791 - İfade ağacı bir from-end index ('
^') ifadesi içermeyebilir. -
CS8792 - İfade ağacı bir aralık ('
..') ifadesi içermeyebilir. -
Yöntem gruplarında CS8810 - '
&' ifade ağaçlarında kullanılamaz. -
CS8849 - İfade ağacı bir
withifadesi içermemelidir. - CS8927 - İfade ağacı statik sanal veya soyut arabirim üyesi erişimi içermeyebilir.
- CS8952 - İfade ağacı, ilişkilendirilmiş dize işleyicisi dönüştürmesi içermeyebilir.
- CS8972 - Öznitelikleri olan bir lambda ifadesi bir ifade ağacına dönüştürülemez.
- CS9170 - İfade ağacı satır içi dizi erişimi veya dönüştürmesi içermeyebilir.
- CS9175 - İfade ağacı koleksiyon ifadesi içermeyebilir.
- CS9226 - bir ifade ağacı, dizi dışı params koleksiyon parametresinin genişletilmiş bir biçimini içermeyebilir.
- CS9296 - İfade ağacı bir uzantı özelliği veya dizin oluşturucu erişimi içermeyebilir.
- CS9307 - İfade ağacı, konum dışında adlandırılmış bağımsız değişken belirtimi içermeyebilir.
- CS9369 - İfade ağacı birleşim dönüştürmesi içermeyebilir.
İfade ağacı kısıtlamaları
Yukarıdaki listedeki hataların tümü, ifade ağacında izin verilmeyen bir C# ifade türü kullandığınızı gösterir. Çoğu durumda yasaklanmış ifadeler, C# 3.0'ın ardından gelen söz dizimini temsil eder. bu ifadelere izin vermek, ifade ağaçlarını ayrıştıran tüm kitaplıklarda hataya neden olan bir değişiklik oluşturacağından yasaktır. Daha yeni yapılara izin veriliyorsa yeni C# ifadelerini ayrıştırmak için tüm kitaplıkların geliştirilmesi gerekir.
Aşağıdaki ifadeler yasaktır:
- Uygulama bildirimi olmayan kısmi yöntemlerin çağrıları.
- Kaldırılan koşullu yöntemlerin çağrıları.
- Yerel işlevlerin çağrıları.
-
asynclambda ifadeleri. -
basekullanarak temel sınıfta bildirilen sanal bir yöntemi doğrudan çağırma - atama işlemleri.
- statement lambda’ları.
- çok boyutlu dizi başlatıcılar. Bunun yerine, ifade ağacının dışında çok boyutlu bir dizi oluşturun ve başlatın.
-
dynamicişlemler. - örüntü eşleme ifadeleri.
- Tuple değişmezleri ve eşitlik karşılaştırmaları gibi birçok tuple işlemi.
-
throwifadeler. -
yok say (
_) bildirimleri. - Dizin ve aralık işleçleri.
-
withifadeleri kullanılarak yıkıcı olmayan mutasyon. - Satır içi dizileri bildirme veya bunlara erişme.
- koleksiyon ifadeleri dahil.
- Union dönüştürmeleri.
- null yayılımı ve null birleştirme işleçleri.
-
ref structtürleri, örneğin System.Span<T> ve System.ReadOnlySpan<T>. -
in,outverefparametreler,outdeğişken bildirimleri de dahil olmak üzere. -
refiadeleri. -
reftarafından döndüren yöntemlere çağrılar. - Statik soyut arabirim üyelerine erişme.
- Satır içi diziler.
- Tek boyutlu diziler dışındaki her şey üzerindeki
paramsdeğiştiricisi.
Diğer kısıtlamalar şunlardır:
- Uzantı özelliklerine ve dizin oluşturucularına uzantı olarak erişemezsiniz.
- Lambda ifadesine, parametrelerine veya dönüşe öznitelik uygulanamaz.
- Lambda ifadesi, tür parametresi temsilci türü olan System.Linq.Expressions.Expression'den türetilen bir türe dönüştürülebilir olmalıdır.
- Adlandırılmış ve isteğe bağlı parametreler kısıtlandı. İfade, adlandırılmış bağımsız değişkenleri belirten bir yöntemi çağıramaz ve isteğe bağlı bir parametrenin varsayılan değerini kullanamaz.
-
Sözlük başlatıcıları veya uzantı
Addyöntemleri kullanılamaz. - Hedef ifade bir lambda ifadesi olmalıdır. Sabitlere ve değişkenlere izin verilmez, ancak sabit veya değişken döndüren bir lambda ifadesine izin verilir.
- Güvenli olmayan işaretçi işlemlerine izin verilmez.
- COM çağrıları bağımsız değişkenlere dahil
refedilmelidir; bu ima edilemez. - Desteklenmeyen
__arglistanahtar sözcük.