[英]How to output an integer from another method via Console.WriteLine()?
所以,我有一个方法,我可以设置一个日期并将其存储在一个名为 gameTime 的变量中。 那个有效。 但是现在我创建了另一种方法,我想在控制台中显示该变量并编写Console.WriteLine(gameTime); 但这不被接受。 它说,它在当前上下文中不存在。 我需要做什么才能在其他方法中访问它? 这是代码...
public class TimeSimulation
{
public int Second { get; set; }
public int Minute { get; set; }
public int Hour { get; set; }
public int Day { get; set; }
public int Month { get; set; }
public int Year { get; set; }
public static void TimeSettings()
{
TimeSimulation startTime = new TimeSimulation();
startTime.Second = 1;
startTime.Minute = 1;
startTime.Hour = 1;
startTime.Day = 1;
startTime.Month = 1;
startTime.Year = 2000;
DateTime gameTime = new DateTime(startTime.Year, startTime.Month, startTime.Day, startTime.Hour, startTime.Minute, startTime.Second);
}
public static void ShowTime()
{
//DateTime gameTime = new DateTime(startTime.Year, startTime.Month, startTime.Day, startTime.Hour, startTime.Minute, startTime.Second);
Console.WriteLine(gameTime);
}
public class TimeSimulation
{
public int Second { get; set; }
public int Minute { get; set; }
public int Hour { get; set; }
public int Day { get; set; }
public int Month { get; set; }
public int Year { get; set; }
private static DateTime gameTime;
public static void TimeSettings()
{
TimeSimulation startTime = new TimeSimulation();
startTime.Second = 1;
startTime.Minute = 1;
startTime.Hour = 1;
startTime.Day = 1;
startTime.Month = 1;
startTime.Year = 2000;
gameTime = new DateTime(startTime.Year, startTime.Month, startTime.Day, startTime.Hour, startTime.Minute, startTime.Second);
}
public static void ShowTime()
{
//DateTime gameTime = new DateTime(startTime.Year, startTime.Month, startTime.Day, startTime.Hour, startTime.Minute, startTime.Second);
Console.WriteLine(gameTime);
}
}
这现在应该可以工作,因为“gameTime”现在是一个类级别的变量,而不是在 TimeSettings 方法中创建。
希望您确保在 TimeSettings 方法之后调用 ShowTime。
仅供参考 - 这与问题的概念无关,但想说明 TimeSettings 方法的命名约定不正确。 我更喜欢将其更改为“SetTimings()”或“InitializeTimings()”。
因为你的变量gameTime
只存在于TimeSettings
方法中。
尝试将其带出方法并将其声明为这样的字段:
DateTime gameTime;
public static void TimeSettings()
{
TimeSimulation startTime = new TimeSimulation();
startTime.Second = 1;
startTime.Minute = 1;
startTime.Hour = 1;
startTime.Day = 1;
startTime.Month = 1;
startTime.Year = 2000;
DateTime gameTime = new DateTime(startTime.Year, startTime.Month, startTime.Day, startTime.Hour, startTime.Minute, startTime.Second);
}
public static void ShowTime()
{
//DateTime gameTime = new DateTime(startTime.Year, startTime.Month,
if(gameTime != null)
{
startTime.Day, startTime.Hour, startTime.Minute, startTime.Second);
Console.WriteLine(gameTime);
}
}
编辑:我的猜测是某处有一个错位的括号,因为您正在从自身内部创建TimeSimulation
类的另一个实例..
public class TimeSimulation
{
public int Second { get; set; }
public int Minute { get; set; }
public int Hour { get; set; }
public int Day { get; set; }
public int Month { get; set; }
public int Year { get; set; }
} // I think this bracket was missing..
static DateTime gameTime;
public static void TimeSettings()
{
TimeSimulation startTime = new TimeSimulation();
startTime.Second = 1;
startTime.Minute = 1;
startTime.Hour = 1;
startTime.Day = 1;
startTime.Month = 1;
startTime.Year = 2000;
gameTime = new DateTime(startTime.Year, startTime.Month, startTime.Day, startTime.Hour, startTime.Minute, startTime.Second);
}
public static void ShowTime()
{
//DateTime gameTime = new DateTime(startTime.Year, startTime.Month,
if(gameTime != null)
{
startTime.Day, startTime.Hour, startTime.Minute, startTime.Second);
Console.WriteLine(gameTime);
}
}
这是因为您在第一个方法中创建了gameTime
,因此它只能在这些范围( {
和}
)内访问。 如果你想从ShowTime()
访问它,你必须把它放在范围之外。 你可以这样做:
public static DateTime gameTime { get; set; }
public void TimeSettings()
{
TimeSimulation startTime = new TimeSimulation();
startTime.Second = 1;
startTime.Minute = 1;
startTime.Hour = 1;
startTime.Day = 1;
startTime.Month = 1;
startTime.Year = 2000;
gameTime = new DateTime(startTime.Year, startTime.Month, startTime.Day, startTime.Hour, startTime.Minute, startTime.Second);
}
public void ShowTime()
{
//DateTime gameTime = new DateTime(startTime.Year, startTime.Month, startTime.Day, startTime.Hour, startTime.Minute, startTime.Second);
Console.WriteLine(gameTime);
}
请注意,您的方法不能以这种方式保持静态。 如果必须这样做,您可以像这样调用 gameTime:
CLASSNAME.gameTime
当你想在另一个函数中使用它时,你必须在你的函数中返回值
public static DateTime TimeSettings()
{
TimeSimulation startTime = new TimeSimulation();
startTime.Second = 1;
startTime.Minute = 1;
startTime.Hour = 1;
startTime.Day = 1;
startTime.Month = 1;
startTime.Year = 2000;
return gameTime = new DateTime(startTime.Year, startTime.Month, startTime.Day, startTime.Hour, startTime.Minute, startTime.Second);
}
public static void ShowTime()
{
DateTime gameTime = TimeSettings()
Console.WriteLine(gameTime);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.