سؤال

مع PHP المعلمات الاختيارية, إذا كنت لا ترسل معلمة سيتم تعيينه إلى القيمة الافتراضية:

public function getCustomer(id, optionalMessage = "(no message)") {
    ...
}

في C# أنا عموما حل هذه مع C# طريقة الحمولة الزائدة, مثل:

public void GetCustomer(int id) 
{
    ...
}

public void GetCustomer(int id, string optionalMessage)
{
    ...
}

ولكن افتقد عملي PHP البديل ، هل C# أيضا بعض السكرية جملة للقيام المعلمات الاختيارية وكذلك, كما في PHP سبيل المثال ؟

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

المحلول

ليس في C# 3.0;هذه الميزة على ورقة C# 4.0 - انظر هنا.

الآن سيكون لديك لاستخدام مختلف الزائدة:

public void Foo(int a) {Foo(a, "");}
public void Foo(int a, string b) {...}

المقترح جملة ليكون:

public void Foo(int a, string b = "") {...}

ودعا مع أي من:

Foo(123); // use default b
Foo(123, "abc"); // optional by position
Foo(123, b: "abc"); // optional  by name

نصائح أخرى

لا، ولكن يمكنك محاكاة لهم إلى حد ما، خاصة إذا المعلمات الاختيارية الخاصة بك هي من نفس النوع (أو كنت لا تمانع في القيام ببعض الصب).

ويمكنك استخدام العلم بارامس.

void paramsExample(object arg1, object arg2, params object[] argsRest) 

وأود أن أشير إلى ذلك، وهذا يفقد اكتب السلامة، وليس هناك تطبيق نوع من المعلمات أو النظام.

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