繁体   English   中英

如何通过 Console.WriteLine() 从另一个方法输出一个整数?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM