.NET’e giriş

.NET, şu gibi birçok tür uygulama oluşturmaya yönelik ücretsiz, açık kaynaklı bir geliştirme platformudur:

Sınıf kitaplıklarınıkullanarak farklı uygulamalar ve uygulama türleri arasında işlevsellik paylaşabilirsiniz.

.NET ile kodunuz ve proje dosyalarınız, hangi tür bir uygulama oluşturmakta olduğunuzla aynı şekilde görünür. Her uygulamayla aynı çalışma zamanına, API 'ye ve dil özelliklerine erişebilirsiniz.

Platformlar arası

Birçok işletim sistemi için aşağıdakiler de dahil olmak üzere .NET uygulamaları oluşturabilirsiniz:

  • Windows
  • Mac OS
  • Linux
  • Android
  • iOS
  • tvOS
  • watchOS

Desteklenen İşlemci mimarileri şunları içerir:

  • x64
  • x86
  • ARM32
  • ARM64

.NET, işletim sistemi API 'Leri gibi platforma özgü özellikleri kullanmanıza olanak sağlar. örnekler, Windows üzerinde Windows Forms ve WPF ve Xamarin 'ten her mobil platforma yönelik yerel bağlamalardır.

Daha fazla bilgi için bkz. desteklenen işletim sistemi yaşam döngüsü ilkesi ve .net RID kataloğu.

Açık kaynak

.NET, MIT ve Apache 2 lisanslarınıkullanarak açık kaynaktır. .NET, .net Foundation'ın bir projem.

daha fazla bilgi için GitHub. com üzerindeki proje depoları listesinebakın.

Destek

.net, Windows, macos ve Linux 'ta Microsoft tarafından desteklenir. Her ayın ikinci Salı günü, güvenlik ve kalite açısından düzenli olarak güncelleştirilir.

Microsoft 'un .NET ikili dağıtımları, Azure 'da Microsoft tarafından korunan sunucularda oluşturulup test edilir ve Microsoft mühendislik ve güvenlik uygulamalarını izler.

Red Hat Red Hat Enterprise Linux (rhel) üzerinde .net destekler. Red Hat ve Microsoft, .NET Core 'un RHEL üzerinde iyi çalıştığından emin olmak için işbirliği sağlar.

Tizen, Tizen platformlarında .net destekler .

Daha fazla bilgi için bkz. .NET Core ve .NET 5 Için yayınlar ve destek.

Araçlar ve üretkenlik

.NET size diller, tümleşik geliştirme ortamları (IDEs) ve diğer araçlar sunar.

Programlama dilleri

.NET üç programlama dilini destekler:

  • C#

    C# ("bkz. diyez") modern, nesne odaklı ve tür açısından güvenli bir programlama dilidir. C#, C ailesinin köklerine sahiptir ve C, C++, Java ve JavaScript programcıları için hemen tanıdık gelecektir.

  • F#

    F # dili işlevsel, nesne yönelimli ve kesinlik temelli programlama modellerini destekler.

  • Visual Basic

    .net dilleri arasında Visual Basic sözdizimi, normal insan diline en yakın bir deyişle, daha kolay bilgi edinebilirsiniz. Microsoft 'un yeni özellikler geliştirmekte olduğu C# ve F # ' dan farklı olarak Visual Basic dili kararlı olur. Visual Basic web apps için desteklenmez, ancak web apı 'leri için desteklenir.

.NET dillerinin desteklediği bazı yetenekler şunlardır:

IDE

.NET için tümleşik geliştirme ortamları şunları içerir:

  • Visual Studio

    yalnızca Windows çalışır. , .NET ile çalışmak için tasarlanan kapsamlı yerleşik işlevlere sahiptir. Community sürümü öğrenciler, açık kaynak katkı sağlayanlar ve bireyler için ücretsizdir.

  • Visual Studio Code

    Windows, macos ve Linux üzerinde çalışır. Ücretsiz ve açık kaynak. Uzantılar .NET dilleri ile birlikte çalışmak için kullanılabilir.

  • Mac için Visual Studio

    Yalnızca macOS 'ta çalışır. İOS, Android ve Web için .NET uygulamaları ve oyunları geliştirme.

  • GitHub Codespaces

    şu anda beta sürümünde olan çevrimiçi bir Visual Studio Code ortamı.

SDK ve çalışma zamanları

.NET SDK , .NET uygulamaları geliştirmeye ve çalıştırmaya yönelik kitaplıkların ve araçların bir kümesidir.

.net 'i indirdiğinizde, SDK 'yı veya .net çalışma zamanı veya ASP.NET Core çalışma zamanı gibi bir çalışma zamanını seçebilirsiniz. .NET uygulamalarını çalıştırmaya hazırlamak istediğiniz bir makineye çalışma zamanı yükler. Geliştirme için kullanmak istediğiniz bir makineye SDK 'Yı yükler. SDK 'Yı indirdiğinizde, çalışma zamanlarını otomatik olarak alırsınız.

SDK indirmesi aşağıdaki bileşenleri içerir:

  • .Net CLI. Yerel geliştirme ve sürekli tümleştirme betikleri için kullanabileceğiniz komut satırı araçları.
  • dotnet Sürücü. Çerçeveye bağımlı uygulamalar çalıştıran bir CLı komutu.
  • Roslyn ve F# programlama dili derleyicileri.
  • Derleme MSBuild altyapısı.
  • .NET çalışma zamanı. Tür sistemi, derleme yüklemesi, çöp toplayıcı, yerel birlikte çalışma ve diğer temel hizmetler sağlar.
  • Çalışma zamanı kitaplıkları. Temel veri türlerini ve temel yardımcı programları sağlar.
  • Çalışma ASP.NET Core çalışma zamanı. Web uygulamaları, IoT uygulamaları ve mobil arka uçlar gibi İnternet'e bağlı uygulamalar için temel hizmetler sağlar.
  • Masaüstü çalışma zamanı. Windows Forms Windows WPF dahil olmak üzere masaüstü uygulamaları için temel hizmetler sağlar.

Çalışma zamanı indirmesi aşağıdaki bileşenleri içerir:

  • İsteğe bağlı olarak, masaüstü veya ASP.NET Core çalışma zamanı.
  • .NET çalışma zamanı. Tür sistemi, derleme yüklemesi, çöp toplayıcı, yerel birlikte çalışma ve diğer temel hizmetler sağlar.
  • Çalışma zamanı kitaplıkları. Temel veri türlerini ve temel yardımcı programları sağlar.
  • dotnet Sürücüsü. Çerçeveye bağımlı uygulamaları çalıştıran bir CLI komutu.

Daha fazla bilgi için aşağıdaki kaynaklara bakın:

Project sistemi ve MSBuild

.NET uygulaması, bir .NET uygulaması kullanılarak kaynak koddan MSBuild. Bir proje dosyası (.csproj, .fsproj veya .vbproj), kodu derleme, paketleme ve yayımlamadan sorumlu hedefleri ve ilişkili görevleri belirtir. Standart hedef ve görev koleksiyonlarını ifade etmek için SDK tanımlayıcıları vardır. Bu tanımlayıcıların kullanımı, proje dosyalarının küçük ve kolay bir şekilde çalışmasına yardımcı olur. Örneğin, bir konsol uygulaması için bir proje dosyası şöyledir:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
  </PropertyGroup>
</Project>

Web uygulaması için bir tane de şu şekildedir:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
  </PropertyGroup>
</Project>

Bu örneklerde, Sdk öğesinin Project özniteliği projeyi MSBuild hedef ve görev kümesi belirtir. TargetFrameworköğesi, uygulamanın bağlı olduğu .NET sürümünü belirtir. Projeye özgü ek hedefler ve görevler eklemek için proje dosyasını düzenleyebilirsiniz.

Daha fazla bilgi için bkz. .NET proje SDK'larına genel bakış ve Hedef çerçeveler.

CI/CD

MSBuild ve .NET CLI, aşağıdakiler gibi çeşitli sürekli tümleştirme araçları ve ortamlarla kullanılabilir:

Daha fazla bilgi için bkz. Sürekli Tümleştirmede (CI) .NET SDK'sı ve araçlarını kullanma

NuGet

NuGet . NET için tasarlanmış bir açık kaynak paket yöneticisidir. NuGet paketi, derlenmiş kod (DLL), bu kodla ilgili diğer dosyaları ve paketin sürüm numarası gibi bilgileri içeren açıklayıcı bir bildirim içeren uzantıya sahip bir.zip.nupkg dosyasıdır. Paketleri paylaşmak için kod içeren geliştiriciler, paketleri nuget.org özel bir konakta yayımlar. Paylaşılan kodu kullanmak isteyen geliştiriciler, projelerine bir paket ekler ve ardından proje kodunda paket tarafından ortaya çıkarılacak API'yi çağırabilir.

Daha fazla bilgi için bkz. NuGet bakın.

.NET Interactive

.NET Interactive kullanıcıların web, markdown ve not defterleri genelinde etkileşimli deneyimler oluşturmalarını sağlayan bir CLI araçları ve API'leri grubu.

Daha fazla bilgi için aşağıdaki kaynaklara bakın:

Yürütme modelleri

.NET uygulamaları yönetilen kodu Ortak Dil Çalışma Zamanı (CLR) olarak bilinen bir çalışma zamanı ortamında çalıştırmaktadır.

CLR

.NET CLR, Windows, macOS ve Linux için destek içeren platformlar arası bir çalışma zamanıdır. CLR bellek ayırmayı ve yönetimi ele alır. CLR ayrıca uygulamaları yürütmekle birlikte tam zamanında (JIT) bir derleyici kullanarak kod oluşturan ve derleen bir sanal makinedir.

Daha fazla bilgi için bkz. Ortak Dil Çalışma Zamanı 'ne (CLR) genel bakış.

JIT derleyicisi ve IL

C# gibi daha üst düzey .NET dilleri, Ara Dil (IL) olarak adlandırılan donanımdan bağımsız bir yönerge kümesine derle. Bir uygulama çalıştırıldı mı, JIT derleyicisi IL'yi işlemcinin anlediği makine koduna çevirir. JIT derlemesi, kodun üzerinde çalıştıracak olduğu makinede gerçekleşir.

JIT derlemesi uygulamanın yürütülmesi sırasında oluştuğundan, derleme zamanı çalışma zamanlarının bir parçası olur. Bu nedenle, JIT derleyicilerinin kodu iyileştirmeye harcanan zamanı, sonuçta elde edilen kodun üreteci tasarrufuna göre dengelemesi gerekir. Ancak bir JIT derleyicisi gerçek donanımı bilir ve geliştiricileri farklı platformlar için farklı uygulamalar yapmak zorunda kalmadan serbest bırakabiliyor.

.NET JIT derleyicisi katmanlı derleme işlemi yapar, yani çalışma zamanında tek tek yöntemleri yeniden derler. Bu özellik, sık kullanılan yöntemler için kodun yüksek oranda ayarlanmış bir sürümünü üretmeye devam ederken hızlı bir şekilde derlenin.

Daha fazla bilgi için bkz. Yönetilen yürütme işlemi ve Katmanlı derleme.

AOT derleyicisi

Çoğu .NET iş yükü için varsayılan deneyim JIT derleyicisidir, ancak .NET iki zaman önce derleme (AOT) derlemesi sunar:

  • Bazı senaryolar %100 AOT derlemesi gerektirir. Örneğin iOS.
  • Diğer senaryolarda, uygulama kodunun çoğu AOT ile derlenmiş ancak bazıları JIT ile derlenmiş durumdadır. Bazı kod desenleri AOT için uygun değildir (genel türler gibi). AOT derlemesi bu biçime örnek olarak çalıştırmaya hazır yayımlama seçeneğidir. Bu AOT biçimi, dezavantajları olmadan AOT'nin avantajlarını sunar.

Otomatik bellek yönetimi

Atık toplayıcı (GC), uygulamalar için bellek ayırmayı ve serbest bırakmayı yönetir. Kodunuz yeni bir nesne oluşturduğunda CLR, nesne için yönetilen yığından bellek ayırır. Yönetilen yığında kullanılabilir adres alanı bulunduğu sürece, çalışma zamanı yeni nesneler için bellek ayırmaya devam eder. Yeterli boş adres alanı kalmasa, GC yönetilen yığında uygulama tarafından artık kullanılmamış nesneleri denetler. Daha sonra bu belleği geri alar.

GC, bellek güvenliğini sağlamaya yardımcı olan CLR hizmetlerinden birisidir. Program yalnızca ayrılmış belleğe erişıyorsa bellek güvenlidir. Örneğin, çalışma zamanı bir uygulamanın bir dizinin sınırlarının ötesindeki bağımsız belleğe erişmesini sağlar.

Daha fazla bilgi için bkz. Otomatik bellek yönetimi ve Çöp toplamanın temelleri.

Unmanaged resources ile çalışma

Bazen kodun, tarafından kontrol edilemez kaynaklara başvurusu gerekir. Unmanaged resources, .NET çalışma zamanı tarafından otomatik olarak bakımı olmayan kaynaklardır. Örneğin, bir dosya tanıtıcısı, bir unmanaged kaynağıdır. Nesne FileStream yönetilen bir nesnedir, ancak yönetilemeyen bir dosya tanıtıcısı başvurur. 'ı kullanmayı FileStream tamamlasanız, dosya tanıtıcıyı açıkça serbest bırakmanız gerekir.

.NET'te, unmanaged resources'a başvurulan nesneler IDisposable arabirimini kullanır. nesnesini kullanmayı bitirerek, tüm unmanaged kaynaklarını serbest bırakmakla sorumlu olan Dispose() nesnesinin yöntemini çağırabilirsiniz. .NET dilleri, yöntemin çağrılacağını sağlayan kullanışlı bir deyim using (C#, F#, VB) Dispose sağlar.

Daha fazla bilgi için bkz. Unmanaged resources temizleme.

Dağıtım modelleri

.NET uygulamaları iki farklı modda yayımlanır:

  • Bir uygulamayı kendi içinde olarak yayımlamak, .NET çalışma zamanı ve kitaplıklarını ve uygulama ile bağımlılıklarını içeren yürütülebilir bir dosya üretir. Uygulamanın kullanıcıları uygulamayı .NET çalışma zamanı yüklü olmayan bir makinede çalıştırabilirsiniz. Kendi içinde bulunan uygulamalar platforma özgüdir ve isteğe bağlı olarak bir AOT derlemesi biçimi kullanılarak yayımlanır.

  • Bir uygulamayı çerçeveye bağımlı olarak yayımlamak, yalnızca uygulamanın kendisini ve bağımlılıklarını içeren yürütülebilir bir dosya ve ikili dosya (.dlldosyaları) üretir. Uygulama kullanıcılarının .NET çalışma zamanlarını ayrı olarak yüklemesi gerekir. Yürütülebilir dosya platforma özgü ancak çerçeveye.dll uygulamaların dosyaları platformlar arasıdır.

    Çalışma zamanının farklı sürümlerini hedef alan çerçeveye bağımlı uygulamaları çalıştırmak için çalışma zamanının birden çok sürümünü yan yana yükleyebilirsiniz. Daha fazla bilgi için bkz. Hedef çerçeveler.

Yürütülebilir dosyalar, bir çalışma zamanı tanımlayıcısı (RID)ile belirttiğiniz belirli hedef platformlar için üretir.

Daha fazla bilgi için bkz. .NET uygulama yayımlamaya genel bakış ve .NET ve Docker'a giriş.

Çalışma zamanı kitaplıkları

.NET, çalışma zamanı kitaplıkları, çerçeve kitaplıkları veya temel sınıf kitaplığı (BCL)olarak bilinen geniş bir standart sınıf kitaplık kümesine sahip. Bu kitaplıklar, genel amaçlı ve iş yüküne özgü birçok tür ve yardımcı işlev için uygulamalar sağlar.

.NET çalışma zamanı kitaplıklarında tanımlanan türlere bazı örnekler aşağıda verilmiştir:

Daha fazla bilgi için bkz. Çalışma zamanı kitaplıklarına genel bakış. Kitaplıkların kaynak kodu, GitHub dotnet/runtime deposundadır.

Çalışma zamanı kitaplıklarına uzantılar

Yaygın olarak kullanılan bazı uygulama işlevlerinin kitaplıkları çalışma zamanı kitaplıklarına dahil değildir, ancak aşağıdaki gibi NuGet paketlerde kullanılabilir hale sağlanır:

NuGet paketi Belgeler
Microsoft.Extensions.Hosting Uygulama yaşam süresi yönetimi (Genel Konak)
Microsoft.Extensions.DependencyInjection Bağımlılık ekleme (DI)
Microsoft.Extensions.Configuration Yapılandırma
Microsoft.Extensions.Logging Günlüğe kaydetme
Microsoft.Extensions.Options Seçenekler deseni

Daha fazla bilgi için, GitHub üzerinde dotnet/extensions deposuna bakın.

Veri erişimi

.NET, nesne/ilişkisel eşlemci (ORM) ve kodda sorgu yazma SQL bir yol sağlar.

Entity Framework Core

Entity Framework (EF) Core, ORM olarak hizmet vermeyen açık kaynak ve platformlar arası bir veri erişim teknolojisidir. EF Core, koddaki .NET nesnelerine başvurup veritabanıyla çalışmanıza olanak sağlar. Aksi takdirde yazmanız ve test etmek zorunda olacağınız veri erişim kodu miktarını azaltır. EF Core veritabanı altyapısını destekler.

Daha fazla bilgi için bkz. Entity Framework Core Ve Veritabanı Sağlayıcıları.

LINQ

Dille tümleşik sorgu (LINQ), veriler üzerinde çalışma için bildirime bağlı kod yazmanız için olanak sağlar. Veriler birçok farklı biçimde (bellek içinde nesneler, SQL veritabanı veya XML belgesi gibi) olabilir, ancak genellikle yazmakta olduğu LINQ kodu veri kaynağına göre farklılık gösterir.

Daha fazla bilgi için bkz. LINQ (Dil Ile Tümleşik Sorgu) genel bakışı.

.NET terminolojisi

.NET belgelerini anlamak için, bazı terimlerin kullanımının zaman içinde nasıl değiştiğini anlamanıza yardımcı olabilir.

.NET Core ve .NET 5+

2002'de Microsoft, .NET Framework uygulamalarıoluşturmaya Windows platform olan Windows piyasaya çıktı. Bugün .NET Framework 4.8 sürümündedir ve Hala Microsoft tarafından de desteklene devam ediyor.

2014'te Microsoft, .NET Core'u platformlar arası, açık kaynak bir ardılı olarak .NET Framework. Bu yeni .NET uygulaması sürüm 3.1 aracılığıyla .NET Core adını tutmister. .NET Core 3.1'den sonraki sürüm .NET 5 olarak adlandırılmış. Bu nedenle .NET 5+ (artı işareti "ve sonraki sürümler" anlamına gelir) ve .NET Core, .NET'in bir ve aynı uygulamasına başvurur.

.NET Core/5+ ile .NET Framework için sürüm 4 atlandı. Bu .NET uygulamasının artık ana uygulama olduğunu net bir şekilde ifade etmek için ".NET Core"dan "Core" adı bırakıldı. "Çekirdek", ASP.NET Core ve Entity Framework Core.

Belgelerde ayrıca veri .NET Standard. .NET Standard . NET'in birden çok uygulaması için sınıf kitaplıkları geliştirmenizi sağlayan bir API belirtimidir.

Daha fazla bilgi için bkz. .NET mimari bileşenleri.

Aşırı yüklenmiş terimler

Aynı sözcük farklı bağlamlarda farklı şekillerde kullanılan .NET terminolojisi kafa karıştırıcı olabilir. Öne çıkan örneklerden birkaçı:

  • Çalışma zamanı

    Bağlam "çalışma zamanı" anlamı
    Ortak Dil Çalışma Zamanı (CLR) Yönetilen bir programın yürütme ortamı. Işletim sistemi çalışma zamanı ortamının bir parçası ama .NET çalışma zamanının bir parçası değil.
    .NET indirme sayfasında .NET çalışma zamanı Çerçeveye bağımlı uygulamaları çalıştırma desteği sağlayan CLR ve çalışma zamanı kitaplıkları. Sayfa ayrıca sunucu uygulamaları ve masaüstü ASP.NET Core için çalışma zamanı Windows seçenekleri sunar.
    Çalışma Zamanı Tanımlayıcısı (RID) Bir .NET uygulamasının üzerinde çalıştır olduğu işletim sistemi platformu ve CPU mimarisi. Örneğin: Windows x64, Linux x64.
  • çerçeve

    Bağlam "framework" anlamı
    .NET Framework Özgün, Windows .NET uygulamasıdır. "Framework" büyük harfle ifade edildi.
    hedef çerçeve Bir .NET uygulamasının veya kitaplığının bağlı olduğu API'ler koleksiyonu. Örnekler: .NET Core 3.1, .NET Standard 2.0
    Hedef Çerçeve Bilinen Adı (TFM) TFM, bir .NET uygulamasının veya kitaplığının hedef çerçevesini belirtmeye yönelik standartlaştırılmış bir belirteç biçimidir. Örnek: net462 .NET Framework 4.6.2.
    çerçeveye bağımlı uygulama Çalışma zamanının .NET indirme sayfasından yüklemiş olduğu bir makinede yalnızca çalıştırabilirsiniz. Bu kullanımda "Framework", .NET indirme sayfasından indiren "çalışma zamanı" ile aynıdır.
    çerçeve kitaplıkları Bazen çalışma zamanı kitaplıkları için eş anlamlı olarak kullanılır.
  • SDK

    Bağlam "SDK" anlamı
    .NET indirme sayfasında SDK .NET uygulamaları geliştirmek ve çalıştırmak için indirip yüklediğiniz araç ve kitaplıkların bir koleksiyonu. clı, MSBuild, .net çalışma zamanı ve diğer bileşenleri içerir.
    SDK stili proje belirli bir uygulama türü için bir projenin nasıl oluşturulacağını belirten MSBuild hedefleri ve görevleri kümesi. Bu anlamda SDK, Sdk Project bir proje dosyasındaki öğesinin özniteliği kullanılarak belirtilir.
  • platformunun

    Bağlam "Platform" anlamı
    platformlar arası bu dönemde, "platform", Windows, macos, Linux, iOS ve Android gibi bir işletim sistemini ve çalıştığı donanımı belirtir.
    .NET platformu Kullanım farklılık gösterir. başvuru, bir .net uygulaması (örneğin, .NET Framework veya .net 5 +) veya tüm uygulamalar dahil olmak üzere .net 'in aşırı bir kavramı olabilir.
  • CLI

    Kısaltması Anlamı
    Komut Satırı Arabirimi .NET uygulamaları geliştirmeye, oluşturmaya, çalıştırmaya ve yayımlamaya yönelik platformlar arası araç zinciri.
    Ortak dil altyapısı Clr 'nin uyguladığı belirtim.

.NET terminolojisi hakkında daha fazla bilgi için bkz. .net sözlüğü.

Gelişmiş senaryolar

Aşağıdaki bölümlerde, Gelişmiş senaryolarda yararlı olan bazı .NET özellikleri açıklanmaktadır.

Yerel birlikte çalışma

Her işletim sistemi, sistem hizmetleri sağlayan bir uygulama programlama arabirimi (API) içerir. .NET, bu API 'Leri çağırmak için çeşitli yollar sağlar.

Yerel API 'lerle birlikte kullanmanın ana yolu, kısa için "Platform Invoke" veya P/Invoke aracılığıyla yapılır. P/ınvoke, Linux ve Windows platformları arasında desteklenir. Windows tek bir çalışma şekli, yönetilen koddaki com bileşenleriyle birlikte çalışarak "com birlikte çalışma" olarak bilinir. P/Invoke altyapısının üzerine kurulmuştur, ancak daha sorunsuz şekilde farklı yollarla çalışmaktadır.

Daha fazla bilgi için bkz. yerel birlikte çalışabilirlik.

Güvenli olmayan kod

Dil desteğine bağlı olarak, CLR yerel belleğe erişmenizi ve kod aracılığıyla işaretçi aritmetiği yapmanızı sağlar unsafe . Bu işlemler, bazı algoritmalar ve sistem birlikte çalışabilirliği için gereklidir. Güçlü, güvenli olmayan kod kullanımı, sistem API 'Leri ile birlikte çalışmak veya en verimli algoritmayı uygulamak gerekmedikçe önerilmez. Güvenli olmayan kod farklı ortamlarda aynı şekilde yürütülemeyebilir ve ayrıca çöp toplayıcı ve tür güvenliği avantajlarından de yararlanmaya başlayabilir. Güvenli olmayan kodu sınırlamak ve merkezileştirmek ve kodu tamamen test etmeniz önerilir.

Daha fazla bilgi için bkz. güvenli olmayan kod ve işaretçiler.

Sonraki adımlar