النوع وتحويلات نوع (البرمجة C# إرشادات)

لأن C# هو بشكل ثابت-كتابتها في وقت يحول برمجياً، بعد متغير هو تعريف، لا يمكن تعريف مرة أخرى أو استخدامها لتخزين قيم نوع آخر إلا إذا كان الذي اكتب هو convertible إلى نوع للمتغير. على سبيل المثال، هناك هو لا يوجد تحويل من عددا صحيحاً لأي سلسلة عشوائية. ولذلك، بعد تقوم بتعريفه iكعدد صحيح، لا يمكنك تعيين السلسلة "Hello" عليها، ك هو في التعليمة البرمجية التالية.

int i;
i = "Hello"; // Error: "Cannot implicitly convert type 'string' to 'int'"

ومع ذلك، في بعض الأحيان تحتاج في نسخ القيمة في في متغير أو أسلوب معلمة من نوع آخر. على سبيل المثال، قد يكون لديك متغير عدد صحيح تحتاج لتمريرها إلى أسلوب المعلمة التي هو كتابته ك double. أو قد تحتاج إلى تعيين متغير فئة إلى متغير نوع واجهة. تسمى هذه الأنواع من العمليات تحويل المستندات لنوع . في C#, يمكنك تنفيذ أنواع التحويلات التالية:

تحويلات ضمنية

أنواع رقمية مضمنة، تحويل الضمني إجراء عندما يتم تخزين القيمة التي يمكن أن تناسب المتغير دون أن اقتطاع أو تقريب. ل مثال، متغير من نوع طويلة (8 بايت عدد صحيح) بتخزين أي القيمة Int (4 بايتs تشغيل a 32-بت الكمبيوتر). في المثال التالي، المحول البرمجي ضمنياً بتحويل القيمة تشغيل حق تشغيل نوع longقبل تعيينه إلى bigNum.

// Implicit conversion. num long can
// hold any value an int can hold, and more!
int num = 2147483647;
long bigNum = num;

للحصول على قائمة كاملة بكافة تحويلات ضمنية رقمي، راجع جدول التحويلات الرقمية الواضحة (مرجع #C).

أنواع المرجع، تحويل ضمني دوماً تنشأ من فئة إلى أي فئة من الفئات الأساسية مباشرة أو غير مباشرة أو الواجهات الخاصة به. لا يوجد بناء جملة خاص هو ضرورية نظراً لفئة مشتقة يحتوي دوماً على الجميع الأعضاء فئة Base.

Derived d = new Derived();
Base b = d; // Always OK.

تحويلات صريحة

ومع ذلك، في حالة عدم إمكانية إجراء تحويل دون مخاطرة فقدان المعلومات، يتطلب المحول البرمجي إجراء تحويل صريحة، الذي يسمى على تحويل . تحويل هو طريقة لإعلام المترجم المرغوبة بوضوح إلى إجراء التحويل والتي تكون على علم بأن قد يحدث فقدان بيانات. للقيام بفريق العمل، قم بتحديد نوع التي أنت castفيg إلى في الأقواس في الأمامي القيمة أو متغير ليتم تحويله. البرنامج التالي casts مزدوجة إلى Int . سوف لا ترجمة البرنامج دون فريق العمل.

class Test
{
    static void Main()
    {
        double x = 1234.7;
        int a;
        // Cast double to int.
        a = (int)x;
        System.Console.WriteLine(a);
    }
}
// Output: 1234

للحصول على قائمة بعمليات تحويل رقمية واضحة المسموح بها، راجع جدول التحويلات الرقمية الواضحة (مرجع #C).

ل مرجع أنواع، تحويل صريحة مطلوبة إذا كنت بحاجة إلى تحويل من نوع أساس لنوع مشتق:

// Create a new derived type.
Giraffe g = new Giraffe();

// Implicit conversion to base type is safe.
Animal a = g;

// Explicit conversion is required to cast back
// to derived type. Note: This will compile but will
// throw an exception at run time if the right-side
// object is not in fact a Giraffe.
Giraffe g2 = (Giraffe) a;

لا يغير عملية تحويل بين أنواع مرجع نوع وقت التشغيل الخاص بالكائن الأساسي؛ فهو يغير فقط نوع القيمة التي هو المستخدمة كمرجع لهذا الكائن. لمزيد من المعلومات، راجع التعدد (إرشادات برمجة C#).

نوع التحويل استثناءات في وقت التشغيل

في بعض مرجع اكتب تحويلات، لا يمكن لبرنامج التحويل البرمجي تحديد ما إذا كان سيتم تحويل صالح. هو لإجراء عملية تحويل تجميع بشكل صحيح إلى فشل في وقت التشغيل. كما هو موضح في المثال التالي، تحويل نوع لكنه فشل في وقت التشغيل يؤدي InvalidCastExceptionإلى أن يتم طرح.


class Animal
{
    public void Eat() { Console.WriteLine("Eating."); }
    public override string ToString()
    {
        return "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)
    {
        // Cause InvalidCastException at run time 
        // because Mammal is not convertible to Reptile.
        Reptile r = (Reptile)a;
    }

}

C# يوفر هو و ك operaإلىrs إلى تتيح لك إلى اختبار التوافق قبل تنفيذ فريق العمل الفعل. لمزيد من المعلومات، راجع كيفية القيام بما يلي: التحويل بأمان عن طريق عوامل التشغيل as و is (دليل البرمجة لـ #C).

مواصفات لغة #C

لمزيد من المعلومات، راجع مواصفات لغة #C. مواصفات اللغة هي المصدر النهائي لبناء جملة C# واستخدامها.

راجع أيضًا:

المهام

كيفية القيام بما يلي: تحويل السلسلة إلى عدد صحيح (دليل البرمجة لـ #C)

المرجع

الأنواع (دليل البرمجة لـ #C)

عامل التشغيل () (مرجع #C)

explicit (مرجع #C)

الضمنية ( مرجع C# )

عوامل تشغيل التحويل (دليل البرمجة لـ #C)

المبادئ

دليل البرمجة لـ #C

تحويل نوع معمم

تحويل نوع المُصدر