سؤال

طلبت مؤخرا من سؤال حول IIf مقابلإذا وجدت أن هناك وظيفة أخرى في VB يسمى إذا الأساس الذي يفعل الشيء نفسه كما IIf بل هو ماس كهربائي.

هل هذا إذا وظيفة أداء أفضل من IIf وظيفة ؟ لا إذا البيان ورقة رابحة إذا و IIf الوظائف ؟

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

المحلول

تبا لقد ظننت حقا أنك تتحدث عن المشغل على طول.;-) على أي حال ...

لا هذا إذا كان وظيفة أداء أفضل من الدالة IIf?

بالتأكيد.تذكر, انها بنيت في اللغة.واحد فقط من اثنين من الحجج مشروطة لابد من تقييم تنقذ عملية مكلفة.

هل كان ورقة رابحة إذا IIf الوظائف ؟

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

Dim result = If(a > 0, Math.Sqrt(a), -1.0)

' versus

Dim result As Double ' Redundant default initialization!
If a > 0 Then
    result = Math.Sqrt(a)
Else
    result = -1
End If

نصائح أخرى

واحد مهم جدا متميزة بين IIf() و If() هو أنه مع Option Infer On في وقت لاحق سوف يلقي ضمنا النتائج على نفس نوع البيانات في بعض الحالات ، IIf سيعود Object.

على سبيل المثال:

    Dim val As Integer = -1
    Dim iifVal As Object, ifVal As Object
    iifVal = IIf(val >= 0, val, Nothing)
    ifVal = If(val >= 0, val, Nothing)

الإخراج:
iifVal له قيمة من لا شيء و نوع الكائن
ifVal له قيمة من 0 و نوع عدد صحيح ب/ج هو ضمنا تحويل أي شيء إلى عدد صحيح.

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