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
:)