Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将时间传递给C中的方法#_C#_Datetime_Methods - Fatal编程技术网

C# 将时间传递给C中的方法#

C# 将时间传递给C中的方法#,c#,datetime,methods,C#,Datetime,Methods,我有两个班:我的程序班和我的GetDateAndTime班。我在我的GetDateAndTime类中获取时间,我想把时间传递给我的main方法。我可以从我的GetDateAndTime中获得时间,没有问题,但是当我将时间传递回我的程序时,我得到的是00:00:00,而不是18:00:00。我从配置文件中获取时间 我的代码如下 配置文件 <appSettings> <add key="StartTime" value="18:00:00" /> </appSe

我有两个班:我的
程序
班和我的
GetDateAndTime
班。我在我的
GetDateAndTime
类中获取时间,我想把时间传递给我的main方法。我可以从我的
GetDateAndTime
中获得时间,没有问题,但是当我将时间传递回我的
程序时,我得到的是00:00:00,而不是18:00:00。我从配置文件中获取时间

我的代码如下

配置文件

<appSettings>
    <add key="StartTime" value="18:00:00" />
</appSettings>
GetDateAndTime类

private static DateTime t;
static void Main(string[] args)
{
    DateTime day=DateTime.Now;
    GetDateAndTime.CheckDays(day, t);
}
public static DateTime CheckDays(DateTime day, DateTime t)
{
    var startTimeString = ConfigurationSettings.AppSettings["StartTime"];
    t = DateTime.Parse(startTimeString);
    t.ToString("HH:mm:ss");
    Console.WriteLine(t.ToString("HH:mm:ss"));
    return day;
}
在通话中

GetDateAndTime.CheckDays(day, t);
您没有使用返回值。类型
DateTime
是一种值类型,除非使用
ref
关键字,否则不能就地修改

但是当我把时间花回到我的程序课上


此语句未在代码中表示。您永远不会将时间传递回您的程序,因此您的程序不知道它。

如果您希望更新
Main
中的
day
变量,您需要将
CheckDays
day
参数更改为
ref
。最好是前者。谢谢你的回答。您建议我怎么做?将返回值赋给一个变量,如
day=GetDateAndTime.CheckDays(day,t)
。或者,将返回类型更改为
void
(以避免混淆),并为参数
day
赋予
ref
关键字。即使使用
ref
也不能修改
DateTime
,因为它是不可变的。所有“修改”方法,如实际返回一个新的
DateTime
。如果使用
ref
则需要将新的日期时间重新分配给参数。非常感谢。这为我排序了我使用的
ref
:)