C# 类返回INT,但变量抱怨

C# 类返回INT,但变量抱怨,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个简单的类,它有一个返回当前周数的方法。当我尝试将该方法中的INT值设置为控制器中的INT变量weekNum时,在调用该类方法的下方会出现一条红线,并显示一条错误消息,其中包含“无法隐式地将type….转换为INT”。为什么?两者都是INT,不是吗!?方法的返回类型为INT。我错过什么了吗?我想这只是我犯的一个小错误吧 控制器内部: int weekNum = new Namespace.Helpers.Week(); 我的课堂教学方法: public class Week {

我有一个简单的类,它有一个返回当前周数的方法。当我尝试将该方法中的INT值设置为控制器中的INT变量weekNum时,在调用该类方法的下方会出现一条红线,并显示一条错误消息,其中包含“无法隐式地将type….转换为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;
    }
}

该类不返回值,该方法执行以下操作:

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

int weekNum = week.WeekNum();

您正在尝试将Week类实例分配给int变量

你应该这样做:

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

或者将Week类更改为static。

您可以通过在类中实现int来处理场景。只需将
WeekNum()
更改为
隐式运算符

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

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

您不是在调用该方法,而是在调用构造函数。查看您的调用代码-您没有提到
WeekNum
anywhere.int WeekNum=new Namespace.Helpers.Week().WeekNum()@不,代码正在创建一个实例,但没有调用一个方法。我明白了!我自己应该看到的,但是我累了,我已经坐在电脑前好几个小时了!请停止投票!什么意思!?