Asosiy turlar orasidagi konversiyani qo'llab-quvvatlashdan tashqari, Convert usuli har qanday moslashtirilgan turni istalgan tayanch turiga o'tkazishni qo'llab-quvvatlaydi. Buning uchun maxsus tip IConvertible interfeysini amalga oshirishi kerak , bu amalga oshiruvchi turini har bir baza turiga o'tkazish usullarini belgilaydi. Muayyan turdagi qo'llab-quvvatlanmaydigan konversiyalar InvalidCastException-ni tashlashi kerak .
Qachon ChangeType usuli birinchi parametr, yoki maxsus turini o'tgan bo'lsa Convert.Toturi kabi usul ( Convert.ToUInt32 (ob'ektni) yoki Convert.ToDouble (ob'ektni, IFormatProvider) deb nomlangan va uning birinchi bo'lib maxsus turiga misol uzatiladi parametrida, aylantirish usuli, o'z navbatida, konvertatsiyani amalga oshirish uchun odatiy turdagi IConvertible dasturini chaqiradi . Qo'shimcha ma'lumot olish uchun .NET-dagi Konversiyani ko'ring .
Madaniyatga xos formatlash to'g'risidagi ma'lumotlar
Barcha asosiy turdagi konvertatsiya usullari va ChangeType usuli IFormatProvider tipidagi parametrga ega bo'lgan ortiqcha yuklarni o'z ichiga oladi . Masalan, Convert.ToBoolean usuli quyidagi ikkita ortiqcha yuklarga ega:
Convert.ToBoolean (Ob'ekt, IFormatProvider)
2.2.Convert.ToBoolean (String, IFormatProvider)
IFormatProvider parametr aylantirish jarayonini yordam uchun madaniyat-maxsus formatlash ma'lumotlarni taqdim etishi mumkin. Biroq, asosiy turdagi konvertatsiya qilish usullarining aksariyati unga e'tibor bermaydi. U faqat quyidagi bazaviy turdagi konversiya usullari bilan qo'llaniladi. Agar nullIFormatProvider argumenti ushbu usullarga o'tkazilsa, joriy oqim madaniyatini ifodalovchi CultureInfo ob'ekti ishlatiladi.
Qiymatni raqamli turga o'tkazadigan usullar bo'yicha. IFormatProvider parametr turi parametrlarini ega haddan tashqari tomonidan ishlatiladi string va IFormatProvider . Shuningdek, u ob'ektning ishlash vaqti turi String bo'lsa, u Object va IFormatProvider turlarining parametrlariga ega bo'lgan ortiqcha yuk bilan ishlatiladi .
Qiymatni sana va vaqtga o'zgartiradigan usullar bo'yicha. IFormatProvider parametr turi parametrlarini ega haddan tashqari tomonidan ishlatiladi string va IFormatProvider . Bundan tashqari, agar ob'ektning ish vaqti turi String bo'lsa, u Object va IFormatProvider turlarining parametrlariga ega bo'lgan ortiqcha yuk bilan ishlatiladi .
Tomonidan Convert.ToString bir o'z ichiga haddan tashqari IFormatProvider bir parametr va dinga ham bir satrlari soni bir qiymat yoki DATETIME bilan mag'lubiyatga qiymatini.
Biroq, IConvertible-ni amalga oshiradigan har qanday foydalanuvchi tomonidan belgilangan tur IFormatProvider parametridan foydalanishi mumkin .
Base64 kodlash
Base64 kodlash ikkilik ma'lumotlarni mag'lubiyatga aylantiradi. 64-raqamli raqam sifatida ko'rsatilgan ma'lumotlar faqat 7-bitli belgilarni uzatadigan ma'lumotlar kanallari orqali osongina uzatilishi mumkin. Convert sinf qo'llab-quvvatlash Base64 kodlaması uchun quyidagi usullarini o'z ichiga oladi: usullar majmui va bir bayt bir qator konvertatsiya qo'llab-quvvatlash , string yoki va BASE64 raqamli belgi ichiga Unicode belgilar bir qator kelgan.
Baytlar qatorini base64 kodlangan qatorga o'zgartiradigan ToBase64String .
Baytlar qatorini base64 kodlangan belgilar qatoriga o'zgartiradigan ToBase64CharArray .
Base64 bilan kodlangan qatorni baytlar qatoriga o'zgartiradigan FromBase64String
Base64 kodlangan belgilar qatorini baytlar qatoriga o'zgartiradigan FromBase64CharArray .
Boshqa umumiy konversiyalar
Convert sinfining statik usullari qo'llab-quvvatlamaydigan ba'zi konversiyalarni amalga oshirish uchun NET Framework-ning boshqa sinflaridan foydalanishingiz mumkin . Bunga quyidagilar kiradi:
Bayt massivlariga o'tkazish BitConverter klassi ibtidoiy raqamli turlarni (shu jumladan, mantiqiy ) baytlar qatoriga va baytlar qatoridan ibtidoiy ma'lumotlar turlariga o'tkazadigan usullarni taqdim etadi .
Belgilarni kodlash va dekodlash Kodlash klassi va undan olingan sinflar (masalan, UnicodeEncoding va UTF8Encoding ) belgilar qatorini yoki satrini kodlash usullarini (ya'ni ularni ma'lum bir kodlashda baytlar qatoriga aylantirish) va kodlangan baytni dekodlashni ta'minlaydi. array (ya'ni baytlar qatorini UTF16 kodlangan Unicode belgilariga qaytarish. Qo'shimcha ma'lumot uchun .NET-dagi Belgilar kodlash- ga qarang .
Maydonlar
Usullari
Usullari
|
O'zgartirish turi (ob'ekt, tur)
|
Belgilangan turdagi va qiymati belgilangan ob'ektga teng bo'lgan ob'ektni qaytaradi.
|
O'zgartirish turi (ob'ekt, tur, IFormat provayderi)
|
Qiymati belgilangan ob'ektga teng bo'lgan belgilangan turdagi ob'ektni qaytaradi. Parametr madaniyatga xos formatlash ma'lumotlarini etkazib beradi.
|
O'zgartirish turi (ob'ekt, turdagi kod)
|
Qiymati belgilangan ob'ektga teng bo'lgan belgilangan turdagi ob'ektni qaytaradi.
|
O'zgartirish turi (ob'ekt, turdagi kod, IFormat provayderi)
|
Qiymati belgilangan ob'ektga teng bo'lgan belgilangan turdagi ob'ektni qaytaradi. Parametr madaniyatga xos formatlash ma'lumotlarini etkazib beradi.
|
From Base64Char Array (CHAR [], Int32, Int32)
|
Ikkilik ma'lumotlarni bazaviy-64 ta raqam sifatida kodlaydigan Unicode belgilar qatorining ichki qismini 8-bitli belgisiz tamsayılar qatoriga o'zgartiradi. Parametrlar kirish qatoridagi ichki to'plamni va konvertatsiya qilinadigan elementlarning sonini belgilaydi.
|
From Base64String (string)
|
Ikkilik ma'lumotlarni bazaviy 64 raqam sifatida kodlaydigan belgilangan satrni ekvivalent 8-bit imzosiz butun sonli qatorga o'zgartiradi.
|
From Hex string (o'qing Faqat keng tarqalishi )
|
Ikkilik ma'lumotlarni olti burchakli belgilar sifatida kodlaydigan oraliqni ekvivalent 8-bit imzosiz butun sonli qatorga o'zgartiradi.
|
From Hex satrlari (string)
|
Ikkilik ma'lumotni olti burchakli belgilar sifatida kodlaydigan belgilangan satrni ekvivalent 8-bit imzosiz butun sonli qatorga o'zgartiradi.
|
Oling turi Code (ob'ektni)
|
Belgilangan ob'ekt uchun TypeCode-ni qaytaradi .
|
Ish DBNull (ob'ektni)
|
Belgilangan ob'ekt DBNull turiga kiradimi yoki yo'qligini ko'rsatib beradi .
|
Uchun Base64Char Array (baytda [], Int32, Int32, Char [], Int32)
|
8-bit imzosiz butun sonli massivning pastki qismini 64-raqamli raqamlar bilan kodlangan Unicode belgilar qatorining ekvivalent pastki qismiga o'zgartiradi. Parametrlar kirish va chiqish massivlarida subsetlarni va konvertatsiya qilinadigan kirish massividagi elementlarning sonini belgilaydi.
|
Ba'zi bir mos yozuvlar turidagi konversiyalarda kompilyator gipsning haqiqiyligini aniqlay olmaydi. To'g'ri kompilyatsiya qilingan quyma operatsiyani bajarish vaqtida ishlamay qolishi mumkin. Quyidagi misolda ko'rsatilgandek, ish paytida muvaffaqiyatsiz tugagan turi, InvalidCastException tashlanishiga olib keladi.
C #Nusxalash
class Animal
{
public void Eat() => System.Console.WriteLine("Eating.");
public override string ToString() => "I am an animal.";
}
class Reptile : Animal { }
class Mammal : Animal { }
class UnSafeCast
{
static void Main()
{
Test(new Mammal());
// Keep the console window open in debug mode.
System.Console.WriteLine("Press any key to exit.");
System.Console.ReadKey();
}
static void Test(Animal a)
{
// System.InvalidCastException at run time
// Unable to cast object of type 'Mammal' to type 'Reptile'
Reptile r = (Reptile)a;
}
}
TestUsuli bir bor Animalshunday ochiq hujjatingizni tashlab, bir parametr abir Reptilexavfli taxmin qiladi. Taxmin qilmaslik, aksincha turini tekshirish xavfsizroq. C # beradi deb aslida bir ohangini amalga oldin muvofiqligi uchun sinov uchun taqdim qilish uchun operator. Qo'shimcha ma'lumot olish uchun naqshni moslashtirish va operatorlar kabi va qanday qilib xavfsiz translyatsiya qilish- ga qarang .
O'rnatilgan raqamli turlar uchun, saqlanadigan qiymat kesilmay yoki yaxlitlanmasdan o'zgaruvchiga mos kelishi mumkin bo'lsa, yashirin konvertatsiya qilish mumkin. Integral turlar uchun bu manba turi diapazoni maqsad turi uchun oraliqning to'g'ri to'plamidir. Masalan, long (64 bitli butun) turidagi o'zgaruvchi int (32 bitli tamsayı) saqlashi mumkin bo'lgan har qanday qiymatni saqlashi mumkin. Quyidagi misolda kompilyator bilvosita num, o'ngdagi qiymatni turga longbermasdan oldin o'zgartiradi bigNum.
C #Nusxalash
// Implicit conversion. A long can
// hold any value an int can hold, and more!
int num = 2147483647;
long bigNum = num;
Barcha yashirin raqamli konversiyalarning to'liq ro'yxati uchun " Ichki raqamli konversiyalar" maqolasining " Yashirin raqamli konversiyalar" bo'limiga qarang.
Yo'naltiruvchi turlar uchun yashirin konversiya har doim sinfdan to'g'ridan-to'g'ri yoki bilvosita bazaviy sinflar yoki interfeyslarning istalgan biriga o'tadi. Hech qanday maxsus sintaksis shart emas, chunki hosil bo'lgan sinf har doim asosiy sinfning barcha a'zolarini o'z ichiga oladi.
C #Nusxalash
Derived d = new Derived();
// Always OK.
Base b = d;
Do'stlaringiz bilan baham: |