我有一个简单的类,其方法返回当前周的数字。当我尝试将方法中的INT值设置为Controller中的INT变量weekNum时,我在类方法的调用下面得到一个红线,并且出现一条关于&#34的错误消息;无法隐式转换类型... .to 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;
}
}
答案 0 :(得分:7)
该类不返回该值,该方法执行:
var week = new Namespace.Helpers.Week();
int weekNum = week.WeekNum();
答案 1 :(得分:1)
您正在尝试将Week类实例分配给int变量。
你应该这样做:
Week week = new Week();
int weekNum = week.WeekNum();
或者将您的周课程更改为静态。
答案 2 :(得分:0)
您可以通过在类中实现implicit conversion来处理您的场景。只需将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;
}
}
请注意,这不是最佳做法,更好的方法是使用建议使用实例方法的其他答案之一。