and - comparison operators in c# net




أقصر طريقة للتحقق من القيمة الفارغة وتعيين قيمة أخرى إن لم يكن (7)

أنا استخدم طريقة extention SelfChk

static class MyExt {
//Self Check 
 public static void SC(this string you,ref string me)
    {
        me = me ?? you;
    }
}

ثم استخدم مثل

string a = null;
"A".SC(ref a);

أقوم بسحب قيم varchar من قاعدة بيانات وتريد تعيين string أقوم بتعيينها كـ "" إذا كانت null . أنا أفعلها حاليًا كما يلي:

if (string.IsNullOrEmpty(planRec.approved_by) == true)
  this.approved_by = "";
else
  this.approved_by = planRec.approved_by.toString();

يبدو أن هناك طريقة للقيام بذلك في سطر واحد مثل:

this.approved_by = "" || planRec.approved_by.toString();

ومع ذلك لا يمكنني العثور على طريقة مثالية للقيام بذلك. هل هناك طريقة أفضل أم أن لدي أفضل طريقة للقيام بذلك؟


استخدم مشغل التجميع C #: ؟؟

// if Value is not null, newValue = Value else if Value is null newValue is YournullValue
var newValue = Value ?? YournullValue;

جرب هذا:

this.approved_by = IsNullOrEmpty(planRec.approved_by) ? "" : planRec.approved_by.toString();

يمكنك أيضًا استخدام عامل التجميع الخالي كما قال آخرون - بما أنه لم يقدم أحد مثالًا يعمل مع شفرتك هنا:

this.approved_by = planRec.approved_by ?? planRec.approved_by.toString();

ولكن هذا المثال لا يعمل إلا لأن القيمة المحتملة لهذا. this.approved_by هي نفسها كواحدة من القيم المحتملة التي ترغب في تعيينها لها. في جميع الحالات الأخرى ، ستحتاج إلى استخدام المشغل الشرطي كما أظهرته في المثال الأول.


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

var x = somePossiblyNullValue ?? valueIfNull;

لتوسيع الإجابة @ Dave ... إذا كان planRec.approved_by بالفعل سلسلة

this.approved_by = planRec.approved_by ?? "";

مع C # 6 هناك طريقة أقصر قليلاً للحالة حيث planRec.approved_by ليس سلسلة:

this.approved_by = planRec.approved_by?.ToString() ?? "";





variable-assignment