PDA

View Full Version : Cannot convert method group 'ToString' to non-delegate



swallow.pa
جمعه 06 اردیبهشت 1392, 18:07 عصر
سلام به همه
اين كد منه

public static string strToday;





public static void Today()
{

DateTime Dt = DateTime.Now;
System.Globalization.PersianCalendar Pc = new System.Globalization.PersianCalendar();
strToday = Pc.GetYear(Dt) + "/";
if (Pc.GetMonth(Dt) < 10)
strToday += "0" + Pc.GetMonth(Dt) + "/";
else
strToday += Pc.GetMonth(Dt) + "/";

if (Pc.GetDayOfMonth(Dt) < 10)
strToday += "0" + Pc.GetDayOfMonth(Dt);
else
strToday += Pc.GetDayOfMonth(Dt);
}
}
public enum PersianMontth
{
فروردبن =1,
اردیبهشت = 2,
خرداد = 3,
تیر = 4,
مرداد = 5,
شهریور = 6,
مهر = 7,
آبان = 8,
آذر = 9,
دی = 10,
بهمن = 11,
اسفند = 12,

}


و خط بعدي كه اشكال تو اينه



public string MonthName()
{
PersianMontth PM = strToday.Substring(6, 2).ToString;

}

متن خطا هم اينه :

Error 1 Cannot convert method group 'ToString' to non-delegate type 'PersianDate.PersianMontth'. Did you intend to invoke the method? C:\PersianDate\PersianDate\PersianDate.cs 16 32 PersianDate


چطور اون حل كنم لطفا توضيح بديد
ممنون

tooraj_azizi_1035
جمعه 06 اردیبهشت 1392, 18:16 عصر
PersianMontth PM = (PersianMontth)int.Parse(strToday.Substring(6, 2));

swallow.pa
جمعه 06 اردیبهشت 1392, 18:21 عصر
ميشه يكم توضيح بديد
ممنون

tooraj_azizi_1035
جمعه 06 اردیبهشت 1392, 21:08 عصر
Substring خودش رشته بر می گردونه نیازی نداره تا دوباره ToString رو صدا بزنید.
int.Parse میاد رشته روی تبدیل به عدد میکنه یعنی نوع int بر می گردونه.
و درنهایت (PersianMontth)اون رو تبدیل به نوع گونه شمارشی PersianMontth می کنه یعنی معادل اون رو بر میگردونه.:لبخندساده:

مهرداد صفا
جمعه 13 اردیبهشت 1392, 17:24 عصر
سلام به همه
اين كد منه

public static string strToday;





public static void Today()
{

DateTime Dt = DateTime.Now;
System.Globalization.PersianCalendar Pc = new System.Globalization.PersianCalendar();
strToday = Pc.GetYear(Dt) + "/";
if (Pc.GetMonth(Dt) < 10)
strToday += "0" + Pc.GetMonth(Dt) + "/";
else
strToday += Pc.GetMonth(Dt) + "/";

if (Pc.GetDayOfMonth(Dt) < 10)
strToday += "0" + Pc.GetDayOfMonth(Dt);
else
strToday += Pc.GetDayOfMonth(Dt);
}
}
public enum PersianMontth
{
فروردبن =1,
اردیبهشت = 2,
خرداد = 3,
تیر = 4,
مرداد = 5,
شهریور = 6,
مهر = 7,
آبان = 8,
آذر = 9,
دی = 10,
بهمن = 11,
اسفند = 12,

}


و خط بعدي كه اشكال تو اينه



public string MonthName()
{
PersianMontth PM = strToday.Substring(6, 2).ToString;

}

متن خطا هم اينه :

Error 1 Cannot convert method group 'ToString' to non-delegate type 'PersianDate.PersianMontth'. Did you intend to invoke the method? C:\PersianDate\PersianDate\PersianDate.cs 16 32 PersianDate


چطور اون حل كنم لطفا توضيح بديد
ممنون

با سلام.
گرچه جناب tooraj_azizi1035 هم درست گفتند اما دلیل اصلی خطا این است که شما پرانتزها را فراموش کردید و در واقع (از نظر کامپایلر c#) قصد تبدیل متود ToString را به String دارید که متود به رشته قابل تبدیل نیست.
دقت کنید که در c# بر خلاف VB عبارتی مثل ToString صرفا (آدرس) یک متود را می رساند و ToString() متود را invoke میکند و مقدار را بر می گرداند.