PDA

View Full Version : سوال: تعریف Function با پارامتر اختیاری



navidkhalilian
شنبه 01 مرداد 1390, 15:09 عصر
سلام دوستان من یک پروژه جدید باز کردم و این کد رو داخلش نوشتم:

public void ExampleClass(string name = "Default name")
{

}
اما خطای زیر رو میده علت چیه؟؟؟؟

Error 1 Default parameter specifiers are not permitted

mehran_sh_t
شنبه 01 مرداد 1390, 15:14 عصر
مگه تو C# هم می شه پارامتر اختیاری تعریف کرد؟!

salehbagheri
شنبه 01 مرداد 1390, 15:32 عصر
احتمالاً از نسخه 4 زبان #C استفاده نمی کنید!

برای حل این مشکل به صورت زیر عمل کنید:


public void ExampleMethod()
{
ExampleMethod("Default Name");
}
public void ExampleMethod(string Name)
{
//TODO:
}

navidkhalilian
شنبه 01 مرداد 1390, 15:42 عصر
احتمالاً از نسخه 4 زبان #C استفاده نمی کنید!

برای حل این مشکل به صورت زیر عمل کنید:


public void ExampleMethod()
{
ExampleMethod("Default Name");
}
public void ExampleMethod(string Name)
{
//TODO:
}



دوست عزیزی این روشی که شما گفتید Overload هست و برای توابع ایستا مثل تابع زیر که من نوشتم جواب نمیده.یا شاید من بلد نیستم

public static string ExampleMethod(string Name)
{

}

navidkhalilian
شنبه 01 مرداد 1390, 15:43 عصر
مگه تو C# هم می شه پارامتر اختیاری تعریف کرد؟!

دوست عزیز مگه توی c# کاری هم هست که نشه انجام داد؟

mmd2009
شنبه 01 مرداد 1390, 16:00 عصر
با سلام

Optional parameters در کامپایلر 2010 ( C#4) تعریف شدند و در نسخه های پایین تر این امکان وجود ندارد

این رو هم در نظر داشته باشیه که Optional parameters در هر نسحه ای از framework قابل دستیابی هست ولی با این امکان که از vs2010 یا بهتر بگم کامپایلر 2010 استفاده بکنید

موفق باشید

salehbagheri
شنبه 01 مرداد 1390, 20:09 عصر
دوست عزیزی این روشی که شما گفتید Overload هست و برای توابع ایستا مثل تابع زیر که من نوشتم جواب نمیده.یا شاید من بلد نیستم

چرا جواب نده؟ خوب هم جواب میده!


public static void ExampleMethod()
{
ExampleMethod("Default Name");
}
public static void ExampleMethod(string Name)
{
//TODO:
}

mehran_sh_t
شنبه 01 مرداد 1390, 21:52 عصر
احتمالاً از نسخه 4 زبان #C استفاده نمی کنید!
بله، من از 3.5 استفاده می کنم! ممنون از راهنماییتون. ولی روشی که آقای باقری گفتند، همون overload هستش، که در حالت static هم جواب میده و ربطی به C# 4 نداره.


این رو هم در نظر داشته باشیه که Optional parameters در هر نسحه ای از framework قابل دستیابی هست ولی با این امکان که از vs2010 یا بهتر بگم کامپایلر 2010 استفاده بکنید

یعنی منظورتون اینه که مثلا تو 2010، ftamework رو پایین تر از 4 انتخاب کنیم، باز هم میشه؟!

mmd2009
شنبه 01 مرداد 1390, 23:12 عصر
یعنی منظورتون اینه که مثلا تو 2010، ftamework رو پایین تر از 4 انتخاب کنیم، باز هم میشه؟!

بله دوست عزیز.