我正在寫一個C#程序來抓取一個目錄,並給我一個列表,其中最後一個CSV行的日期小於當前日期的文件。由於這是一個程序小組,我並沒有花費太多時間讓代碼變得非常乾淨或任何東西 - 但我想這只是一個意見問題。C#沒有推斷通過返回類型的重載方法
好奇的是以下一組代碼片段。三個靜態方法都在同一個類中。
public static DateTime dateStringConverter(string mmddyyyy, char delim='/')
{
string[] date = mmddyyyy.Split(delim);
DateTime fileTime = new DateTime(Convert.ToInt32(date[2]), Convert.ToInt32(date[0]), Convert.ToInt32(date[1]));
return fileTime;
}
public static string dateStringGetter()
{
string sYear = DateTime.Now.Year.ToString();
string sMonth = DateTime.Now.Month.ToString().PadLeft(2, '0');
string sDay = DateTime.Now.Day.ToString().PadLeft(2, '0');
return sMonth + '/' + sDay + '/' + sYear;
}
public static DateTime dateStringGetter()
{
string datestring = dateStringGetter();
return dateStringConverter(datestring);
}
該錯誤消息表示:
Error 1 Type 'Poller.Program' already defines a member called
'dateStringGetter' with the same parameter types
的問題的方法是dateStringGetter(),的第二個重載拷貝當然具有相同的參數類型爲第二個版本(無),但有兩個完全不同的返回類型。一個是DateTime,另一個是字符串。帶有DateTime返回類型的版本(一串錯誤編碼)使用字符串類型調用dateStringGetter()的版本。
這不是好奇嗎?那C#不會重載基於返回類型的方法嗎?我想我已經完成了庫的重載,它會根據通話自動檢測我想要的返回類型 - 但我不確定。有些事情對此感覺不對。
所以我想C#不重載返回類型?
簡單 - 你_can't_有兩種方法相差僅返回類型。使用不同的名字。 –