类返回INT但变量抱怨

时间:2016-04-12 12:40:34

标签: c# asp.net-mvc

我有一个简单的类,其方法返回当前周的数字。当我尝试将方法中的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;
    }
}

3 个答案:

答案 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;
    }
}

请注意,这不是最佳做法,更好的方法是使用建议使用实例方法的其他答案之一。