سؤال

وأنا متأكد من أن هذا هو السؤال السهل، ولكن أنا لا أملك جوابا ل. وهنا يكمن senario ومسألة.

ولدي مجموعة التي تم تخزينها استخدام في شكل معين. يحتوي على شكل سجل رأس مع سجلات التفصيل muntiple بعده. رأس سجل يقول لي ما TypeCode كان يستخدم لتخزين البيانات، على سبيل المثال Int32.

ولدي روتين التي تأخذ بايت [] مجموعة وتحويل البيانات بايت إلى انها شكل مناسب في C #. هذا الروتين يحتاج عدد مناسب من وحدات البايت لإجراء عملية التحويل ناجحة.

س. فكيف يمكنني الحصول على طول بايت من TypeCode نظرا لتمرير إلى وظيفة تحويل دون الحاجة إلى ترميز ثابت طول لكل نوع؟

هل كانت مفيدة؟

المحلول

وبالنظر إلى أن TypeCode هو مجرد تعداد مجموعة ثابتة من القيم، يمكن بسهولة من الصعب رمز قاموس منهم، منها مثلا.

private static readonly Dictionary<TypeCode,int> TypeCodeLength =
    new Dictionary<TypeCode,int> {
    { TypeCode.Int32, 4 },
    { TypeCode.Int64, 8 },
    { TypeCode.Char, 2 },
    // etc
}

و(ومن شأن حل يعادل يكون استخدام عبارة التبديل / حالة - هي في الواقع ما يعادل إذا كنت فقط بما في ذلك القيم)

وبعضها، مثل string وobject سيكون متغير على الرغم - وغيرها سوف يعتمد على كيفية كنت ترميز الأشياء مثل DateTime

وهذا هو ما لم باستخدام تحويل القياسية، لا شيء في إطار ستكون قادرة على إعطائك أطوال. أعرف أن كانوا يرفضون الثابت ترميز عموما عليها، ولكن في هذه الحالة انها فقط في مكان واحد وسيكون الخيار الأسهل.

نصائح أخرى

ووفقا ل كيفية إنشاء نوع من TypeCode ... ، لا يمكنك (دون تبديل شامل). وبطبيعة الحال فإن الاتجاه (من نوع> TypeCode) الآخر هو تافهة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top