2016-04-12 60 views
-4

我有一個簡單的類與返回當前星期的數字的方法。當我嘗試將方法中的INT值設置爲控制器中的INT變量weekNum時,我在調用類方法的下方出現紅線,並顯示一條錯誤消息,其中包含有關「無法將類型...隱式轉換爲int 」。爲什麼?兩個都是INT,他們不是!?該方法的返回類型是INT。我在這裏錯過了什麼嗎?我想這只是我做過的一個小錯誤?類返回INT但可變投訴

內置控制器:

int weekNum = new Namespace.Helpers.Week(); 

我的類方法:

public class Week 
{ 
    public int WeekNum() 
    { 
     var culture = CultureInfo.GetCultureInfo("se-SE"); 
     var dateTimeInfo = DateTimeFormatInfo.GetInstance(culture); 
     var dateTime = DateTime.Today; 
     int weekNumber = culture.Calendar.GetWeekOfYear(dateTime, dateTimeInfo.CalendarWeekRule, dateTimeInfo.FirstDayOfWeek); 

     return weekNumber; 
    } 
} 
+6

你沒有調用方法 - 你只是調用構造函數。看看你的調用代碼 - 你不會在任何地方提到「WeekNum」。 –

+1

int weekNum = new Namespace.Helpers.Week()。WeekNum(); – user469104

+1

@EhsanSajjad:不,代碼創建一個實例,但不調用方法。 –

回答

7

類不返回值,該方法的作用:

var week = new Namespace.Helpers.Week(); 

int weekNum = week.WeekNum(); 
1

您正在嘗試將Week類實例分配給int變量。

你應該做這樣的事情:

Week week = new Week(); 
int weekNum = week.WeekNum(); 

或更改週刊類的靜態。

0

您可以通過執行implicit conversion來處理您的場景,以便在您的班級中使用int。只要改變WeekNum()implicit operator

public class Week 
{ 
    public static implicit operator int(Week d) 
    { 
     var culture = CultureInfo.GetCultureInfo("se-SE"); 
     var dateTimeInfo = DateTimeFormatInfo.GetInstance(culture); 
     var dateTime = DateTime.Today; 
     int weekNumber = culture.Calendar.GetWeekOfYear(dateTime, dateTimeInfo.CalendarWeekRule, dateTimeInfo.FirstDayOfWeek); 

     return weekNumber; 
    } 
} 

請注意,這不是最好的做法,更好的辦法是使用建議使用實例方法其他答案之一。