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.
Bir onay veya Assert deyimi, Assert deyimine bağımsız değişken olarak belirttiğiniz bir koşulu test eder. Koşul true olarak değerlendirilirse işlem yapmanız gerekmez. Koşul false olarak değerlendirilirse onay başarısız olur. Hata ayıklama derlemesi ile çalıştırıyorsanız, programınız kesme moduna girer.
Bu konuda
System.Diagnostics İsim Alanında Doğrulamalar
İzleme ve Hata Ayıklama Gereksinimleri
Assert davranışını özelleştirme
Yapılandırma dosyalarında doğrulamaları ayarlama
System.Diagnostics Namespace'de Doğrulamalar
Visual Basic ve Visual C# içinde, Assert ad alanında bulunan Debug veya Trace içinden System.Diagnostics yöntemini kullanabilirsiniz.
Debug sınıf yöntemleri programınızın Yayın sürümüne dahil değildir, bu nedenle yayın kodunuzun boyutunu veya hızını azaltmaz.
C++ sınıf yöntemlerini desteklemez Debug . Koşullu derleme ile Trace sınıfını kullanarak aynı etkiyi elde edebilirsiniz, örneğin #ifdef DEBUG... #endif.
Debug.Assert yöntemi
Kodunuz doğruysa doğru olması gereken koşulları test etmek için System.Diagnostics.Debug.Assert yöntemini serbestçe kullanın. Örneğin, bir tamsayı bölme işlevi yazdığınızı varsayalım. Matematik kurallarına göre bölen asla sıfır olamaz. Bunu bir onay kullanarak test edebilirsiniz:
int IntegerDivide ( int dividend , int divisor )
{
Debug.Assert ( divisor != 0 );
return ( dividend / divisor );
}
Bu kodu hata ayıklayıcı altında çalıştırdığınızda onay deyimi değerlendirilir, ancak Sürüm sürümünde karşılaştırma yapılmaz, bu nedenle ek yük yoktur.
Başka bir örnek aşağıda verilmiştir. Aşağıdaki gibi bir çek hesabı uygulayan bir sınıfınız var:
float balance = savingsAccount.Balance;
Debug.Assert ( amount <= balance );
savingsAccount.Withdraw ( amount );
Hesaptan para çekmeden önce, hesap bakiyesinin çekilmeye hazır olduğunuz tutarı karşılamak için yeterli olduğundan emin olmak istiyorsunuz. Bakiyeyi denetlemek için bir doğrulama yazabilirsiniz:
float balance = savingsAccount.Balance;
Trace.Assert ( amount <= balance );
savingsAccount.Withdraw ( amount );
Kodunuzun Yayın sürümünü oluşturduğunuzda System.Diagnostics.Debug.Assert yöntemine yapılan çağrıların kaybolacağını unutmayın. Bu, bakiyeyi denetleen çağrının Yayın sürümünde kaybolduğu anlamına gelir. Bu sorunu çözmek için, System.Diagnostics.Debug.Assert öğesini Sürüm sürümünde kaybolmayan System.Diagnostics.Trace.Assert ile değiştirmeniz gerekir.
Yayın sürümünüze ek yük getiren System.Diagnostics.Trace.Assert çağrıları, System.Diagnostics.Debug.Assert çağrılarının aksine.
Debug.Assert'ın yan etkileri
Ne zaman System.Diagnostics.Debug.Assert kullandığınızda, Assert içindeki herhangi bir kodun, Assert kaldırıldığında, programın sonuçlarını değiştirmediğinden emin olun. Aksi takdirde, yanlışlıkla yalnızca programınızın Yayın sürümünde görüntülenen bir hataya neden olabilirsiniz. Aşağıdaki örnek gibi işlev veya yordam çağrıları içeren onaylar konusunda özellikle dikkatli olun:
Bu System.Diagnostics.Debug.Assert kullanımı ilk bakışta güvenli görünse de, fonksiyonun her çağrıldığında bir sayacı güncellediğini varsayalım. Yayın sürümünü oluşturduğunuzda, bu meas çağrısı ortadan kaldırıldığından sayaç güncelleştirilmez. Bu, yan etkisi olan bir işlev örneğidir. Yan etkileri olan bir işlev çağrısının ortadan kaldırılması, yalnızca Sürüm sürümünde görünen bir hataya neden olabilir. Bu tür sorunları önlemek için, işlev çağrılarını System.Diagnostics.Debug.Assert ifadesine yerleştirmeyin. Bunun yerine geçici bir değişken kullanın:
System.Diagnostics.Trace.Assert kullanıyor olsanız bile, fonksiyon çağrılarını bir Assert deyim içinde yerleştirmekten kaçınmak isteyebilirsiniz. Sürüm derlemesinde ifadeler ortadan kaldırılmadığından System.Diagnostics.Trace.Assert bu tür çağrılar güvenli olmalıdır. Ancak, alışkanlık olarak bu tür yapılardan kaçınıyorsanız, kullanırken System.Diagnostics.Debug.Asserthata yapma olasılığınız daha düşüktür.
İzleme ve Hata Ayıklama Gereksinimleri
Projenizi Visual Studio sihirbazlarını kullanarak oluşturursanız, TRACE simgesi varsayılan olarak hem Yayın hem de Hata Ayıklama yapılandırmalarında tanımlanır. DEBUG simgesi varsayılan olarak yalnızca Debug derlemesinde tanımlanır.
Aksi takdirde, yöntemlerin çalışması için Trace programınızın kaynak dosyanın en üstünde aşağıdakilerden birine sahip olması gerekir:
#Const TRACE = TrueVisual Basic'te#define TRACEVisual C# ve C++ içindeVeya programınızın TRACE seçeneğiyle derlenmiş olması gerekir:
/d:TRACE=TrueVisual Basic'te/d:TRACEVisual C# ve C++ içindeC# veya Visual Basic Release derlemesinde Hata Ayıklama yöntemlerini kullanmanız gerekiyorsa, Yayın yapılandırmanızda DEBUG simgesini tanımlamanız gerekir.
C++ sınıf yöntemlerini desteklemez Debug . Koşullu derleme ile Trace sınıfını kullanarak aynı etkiyi elde edebilirsiniz, örneğin
#ifdef DEBUG...#endif. Bu simgeleri <Proje> Özellik Sayfaları iletişim kutusunda tanımlayabilirsiniz. Daha fazla bilgi için bkz. Visual Basic Hata Ayıklama Yapılandırması için Proje Ayarlarını Değiştirme veya C veya C++ Hata Ayıklama Yapılandırması için Proje Ayarlarını Değiştirme.
Argümanları doğrula
System.Diagnostics.Trace.Assert ve System.Diagnostics.Debug.Assert en fazla üç bağımsız değişken alır. Zorunlu olan ilk bağımsız değişken, denetlemek istediğiniz koşuldur. Eğer yalnızca bir bağımsız değişkenle System.Diagnostics.Trace.Assert(Boolean) veya System.Diagnostics.Debug.Assert(Boolean) çağırırsanız, Assert yöntemi koşulu denetler ve sonuç false ise çağrı yığınının içeriğini Çıkış penceresine yazdırır. Aşağıdaki örnekte System.Diagnostics.Trace.Assert(Boolean) ve System.Diagnostics.Debug.Assert(Boolean) gösterilmektedir:
Eğer mevcutsa, ikinci ve üçüncü argümanlar string türünde olmalıdır. System.Diagnostics.Trace.Assert veya System.Diagnostics.Debug.Assert öğesini iki veya üç bağımsız değişkenle çağırırsanız, ilk bağımsız değişken bir koşuldur. yöntemi koşulu denetler ve sonuç false ise ikinci dizeyi ve üçüncü dizeleri verir. Aşağıdaki örnek, System.Diagnostics.Debug.Assert(Boolean, String) ve System.Diagnostics.Trace.Assert(Boolean, String) ile iki bağımsız değişkenin nasıl kullanıldığını göstermektedir.
Debug.Assert ( stacksize > 0, "Out of stack space" );
Trace.Assert ( stacksize > 0, "Out of stack space" );
Aşağıdaki örnek, System.Diagnostics.Debug.Assert(Boolean, String, String) ve System.Diagnostics.Trace.Assert(Boolean, String, String)'in üç bağımsız değişkenle nasıl kullanıldığını gösterir.
Debug.Assert ( stacksize > 100, "Out of stack space" , "Failed in inctemp" );
Trace.Assert ( stacksize > 0, "Out of stack space", "Failed in inctemp" );
Assert davranışını özelleştirme
Uygulamanızı kullanıcı arabirimi modunda çalıştırırsanız, Assert koşul başarısız olduğunda yöntem Onay Başarısız iletişim kutusunu görüntüler. Onaylama başarısız olduğunda meydana gelen eylemler, Listeners veya Listeners özelliği tarafından kontrol edilmektedir.
Koleksiyona TraceListener nesne Listeners ekleyerek, koleksiyondan TraceListenerListeners kaldırarak veya mevcut System.Diagnostics.TraceListener.Fail yöntemini TraceListener geçersiz kılarak çıkış davranışını farklı şekilde özelleştirebilirsiniz.
Örneğin, System.Diagnostics.TraceListener.Fail iletişim kutusunu görüntülemek yerine bir olay günlüğüne yazmak amacıyla yöntemini geçersiz kılabilirsiniz.
Çıktıyı bu şekilde özelleştirmek için, programınızda bir dinleyici bulunmalı ve TraceListener'den devralarak onun System.Diagnostics.TraceListener.Fail yöntemini geçersiz kılmalısınız.
Daha fazla bilgi için bkz. İzleme Dinleyicileri.
Yapılandırma dosyalarında doğrulamaları ayarlama
Onayları hem program yapılandırma dosyanızda hem de kodunuzda ayarlayabilirsiniz. Daha fazla bilgi için bkz. System.Diagnostics.Trace.Assert veya System.Diagnostics.Debug.Assert.