Bri*_*van 110 c# datetime nullable
我想使用DateTime.TryParse方法将字符串的datetime值变为Nullable.但是,当我尝试这个:
DateTime? d;
bool success = DateTime.TryParse("some date text", out (DateTime)d);
Run Code Online (Sandbox Code Playgroud)
编译告诉我
'out'参数未被归类为变量
不知道我需要做什么.我也尝试过:
out (DateTime)d.Value
Run Code Online (Sandbox Code Playgroud)
这也不起作用.有任何想法吗?
Jon*_*eet 155
正如Jason所说,你可以创建一个正确类型的变量并传递它.您可能希望将其封装在您自己的方法中:
public static DateTime? TryParse(string text)
{
DateTime date;
if (DateTime.TryParse(text, out date))
{
return date;
}
else
{
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
...或者如果您喜欢条件运算符:
public static DateTime? TryParse(string text)
{
DateTime date;
return DateTime.TryParse(text, out date) ? date : (DateTime?) null;
}
Run Code Online (Sandbox Code Playgroud)
或者在C#7中:
public static DateTime? TryParse(string text) =>
DateTime.TryParse(text, out var date) ? date : (DateTime?) null;
Run Code Online (Sandbox Code Playgroud)
Jas*_*ley 120
DateTime? d=null;
DateTime d2;
bool success = DateTime.TryParse("some date text", out d2);
if (success) d=d2;
Run Code Online (Sandbox Code Playgroud)
(可能有更优雅的解决方案,但你为什么不简单地做上面的事情?)
小智 20
这是Jason建议的一个稍微简洁的版本:
DateTime? d; DateTime dt;
d = DateTime.TryParse(DateTime.Now.ToString(), out dt)? dt : (DateTime?)null;
Run Code Online (Sandbox Code Playgroud)
Bin*_*ier 19
你不能因为Nullable<DateTime>是不同的类型DateTime.你需要编写自己的函数来做到这一点,
public bool TryParse(string text, out Nullable<DateTime> nDate)
{
DateTime date;
bool isParsed = DateTime.TryParse(text, out date);
if (isParsed)
nDate = new Nullable<DateTime>(date);
else
nDate = new Nullable<DateTime>();
return isParsed;
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助 :)
编辑: 删除(显然)不正确测试的扩展方法,因为(由一些不好的囤积指出)尝试更改"this"参数的扩展方法将无法使用值类型.
PS Bad Hoor有问题是老朋友:)
这是您正在寻找的一款内衬:
DateTime? d = DateTime.TryParse("some date text", out DateTime dt) ? dt : null;
Run Code Online (Sandbox Code Playgroud)
如果你想让它成为一个合适的 TryParse 伪扩展方法,你可以这样做:
public static bool TryParse(string text, out DateTime? dt)
{
if (DateTime.TryParse(text, out DateTime date))
{
dt = date;
return true;
}
else
{
dt = null;
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
93748 次 |
| 最近记录: |