在Winform中使用全局函数时出现CS0120错误(C#)

时间:2017-11-22 11:51:01

标签: c#

在我的winform应用程序中,我需要在整个项目中从timestamp值转换为DateTime对象。所以这就是我所做的:

public class UnixTool {
    public DateTime Unix2Time(Int64 timeStamp, TimeZoneInfo LocalTimeZone) {
        return TimeZoneInfo.ConvertTimeFromUtc(baseTime.AddSeconds(timeStamp), LocalTimeZone);
    }

    public Int64 Time2Unix(DateTime dateTime, TimeZoneInfo LocalTimeZone) {
        return (Int64)(TimeZoneInfo.ConvertTimeToUtc(dateTime, LocalTimeZone).Subtract(baseTime).TotalSeconds);
    }
}

在其他课程中,我尝试使用Unix2Time方法,如:

DateTime dt =  UnixTool.Unix2Time(localTimeStampValue, localTimeZone);

但它出现了错误:

CS0120:非静态字段,方法或属性'UnixTools.Unix2Time(long,TimeZoneInfo)'

需要对象引用

我该怎么做才能解决这个问题?是什么导致我的程序错误?

2 个答案:

答案 0 :(得分:1)

您应该使用静态类,如下所示:

public static class UnixTool {
    public static DateTime Unix2Time(Int64 timeStamp, TimeZoneInfo LocalTimeZone) {
        return TimeZoneInfo.ConvertTimeFromUtc(baseTime.AddSeconds(timeStamp), LocalTimeZone);
    }

    public static Int64 Time2Unix(DateTime dateTime, TimeZoneInfo LocalTimeZone) {
        return (Int64)(TimeZoneInfo.ConvertTimeToUtc(dateTime, LocalTimeZone).Subtract(baseTime).TotalSeconds);
    }
}

班级不一定是静态的。

答案 1 :(得分:0)

您必须将Unix2Time声明为static

public static DateTime Unix2Time(Int64 timeStamp, TimeZoneInfo LocalTimeZone) 

Time2Unix如果你想要有相同的行为。

默认情况下,C#中的方法需要周围类的实例。