Derleyici neden montaj meta verilerinde sabit değerler depolar? Derleme meta verilerinden doğrudan Ara Dil koduna gömülüyorlar mı?
Derleyici neden montaj meta verilerinde sabit değerler depolar? Derleme meta verilerinden doğrudan Ara Dil koduna gömülüyorlar mı?
Yanıtlar:
Bunu düşünmenin en iyi yolu şudur: Derleme zamanında bir sabit, kullanıldığı bir değişmez değere dönüştürülür.
Tanımlandığı mecliste tezahürün içine girmesinin tek nedeni, onu tüketiciler için erişilebilir kılmaktı. Belirli bir türün bir parçasıdır ve bu türün meta verileri, onu kullanan montajlarda değil, montajında saklanır.
Bu nedenle, tüketimde satır içi bir değişmez değerdir ve meta verilerdeki sarf malzemesi türü kapsüllenmiş bir özellik veya alandır.
Sanırım iki meclisi karıştırıyorsun.
Sabit, yalnızca tanımlandığı derlemedeki meta verilerde depolanır . Meta veriler, bir derlemedeki tüm türler ve üyeler hakkında bilgi içerir ve sabitler üyedir.
Sabit hakkında hiçbir bilgi kullanıldığı montajda depolanmaz . Sabit değer, tıpkı sabit sayı veya dizeyi doğrudan kaynağa yazmışsınız gibi doğrudan IL'de kullanılır.
Bir örnek: Uygulamalarımdan biri, veritabanı tablolarını ve alanlarını tanımlamak için çok fazla sabit kullanır. Yalnızca tüm sabitleri içeren bir derleme var.
Uygulamayı oluşturduğumda, Visual Studio'daki "sabitler" derlemesine başvuru ekliyorum. Derleme yalnızca sabitleri içerdiğinden, uygulamamda herhangi bir başvuru yoktur ve çalışma zamanında "sabitler" derlemeye gerek yoktur.
Sabitler derleme zamanında bilinir ve daha sonra derlemenin meta verilerinde saklanır. Bu, yalnızca ilkel türler için sabitleri tanımlayabileceğiniz anlamına gelir.
Evet, doğrudan meta verilerden yüklenir. Çalışma zamanında bellek ayırma olmaz.