我想尝试将a解析string为a DateTime?,如果失败则将值设置为null.我能想到的唯一方法就是如下,但它看起来并不是很整洁.
DateTime temp;
DateTime? whatIActuallyWant = null;
if (DateTime.TryParse(txtDate.Text, out temp)) whatIActuallyWant = temp;
Run Code Online (Sandbox Code Playgroud)
这是唯一的方法吗?
如果无法将字符串解析为int,是否有一些返回null的方法?
有:
public .... , string? categoryID)
{
int.TryParse(categoryID, out categoryID);
Run Code Online (Sandbox Code Playgroud)
得到"无法从'输出字符串'转换为'输出int'
该怎么办?
编辑:
由于asp.net约束不再相关是解决问题的方法
/ M
使用以下任一方法从对象中拉出双精度的优缺点是什么?除了个人偏好之外,我正在寻找反馈的问题包括易于调试,性能,可维护性等.
public static double GetDouble(object input, double defaultVal)
{
try
{
return Convert.ToDouble(input);
}
catch
{
return defaultVal;
}
}
public static double GetDouble(object input, double defaultVal)
{
double returnVal;
if (double.TryParse(input.ToString(), out returnVal))
{
return returnVal;
}
else
{
return defaultVal;
}
}
Run Code Online (Sandbox Code Playgroud) 任何人都可以解释为什么以下片段返回true?
根据"d"自定义格式说明符的文档,"一位数字日的格式没有前导零." 那么为什么当我给一个前导零的一位数日时,TryParseExact不会失败?
DateTime x;
return DateTime.TryParseExact
(
"01/01/2001",
@"d\/MM\/yyyy",
null,
System.Globalization.DateTimeStyles.None,
out x
);
Run Code Online (Sandbox Code Playgroud)
UPDATE
我想也许我原本不清楚.我真正想要的是:为什么TryParseExact接受一些不完全匹配的值?从我看到的所有文档中,'d'匹配'01'和'1'就像'MM'匹配'March'和'03'一样.这里的问题不是值是等价的,它们与格式不匹配.
相关的文档片段是:
来自TryParseExact:字符串表示的格式必须与指定的格式完全匹配.
来自'd'说明符:一位数字日的格式没有前导零.
我似乎非常清楚'01'有一个前导0,因此不完全匹配'd'.
我正在尝试将PowerShell脚本的参数转换为布尔值.这条线
[System.Convert]::ToBoolean($a)
Run Code Online (Sandbox Code Playgroud)
只要我使用诸如"true"或"false"的有效值,就可以正常工作,但是当传递无效值(例如"bla"或"")时,将返回错误.我需要类似于TryParse的东西,如果输入值无效则将值设置为false并返回指示转换成功或失败的布尔值.为了记录,我尝试了[boolean] :: TryParse和[bool] :: TryParse,PowerShell似乎没有认出它.
现在我不得不通过两个额外的if语句来笨拙地处理这个问题.
让我感到惊讶的是,到目前为止我发现的任何方法和博客文章都没有处理无效的值.我是否遗漏了一些东西,或者PowerShell孩子对于输入验证来说太酷了?
我正在使用Datetime.TryParse方法来检查有效的日期时间.输入日期字符串将是任何字符串数据.但是返回false作为指定日期无效.
DateTime fromDateValue;
if (DateTime.TryParse("15/07/2012", out fromDateValue))
{
//do for valid date
}
else
{
//do for in-valid date
}
Run Code Online (Sandbox Code Playgroud)
编辑:我错过了.我需要将有效日期和时间一起检查为"15/07/2012 12:00:00".
欢迎任何建议......
我正在Visual Basic.net中编写一些代码并有一个问题.
如果我有一个长数,大于1000,我怎么能将这个值格式化为1,000(用逗号)并将其存储在字符串中?
例如
1234将被存储为1,234 12345将被存储为12,345 123456将被存储为123,456
这是用TryParse语句完成的吗?
我可以帮忙吗?
在C#中有什么方法可以创建内联变量吗?像这样的东西:
int x = int.TryParse("5", out new int intOutParameter) ? intOutParameter : 0;
Run Code Online (Sandbox Code Playgroud)
你不认为这比在外面创建变量更有用,然后再也不用它吗?
请参阅以下代码:
string test = "";
int output = -1;
if (int.TryParse(test, out output))
{
Console.WriteLine("Parsed");
}
Console.WriteLine(output);
Run Code Online (Sandbox Code Playgroud)
当TryParse()失败时,不应该跳过块,Console.WriteLine("Parsed")不调用和值output相同(-1)?
它正在回归 0
我有以下内容:
string outOfRange = "2147483648"; // +1 over int.MaxValue
Run Code Online (Sandbox Code Playgroud)
显然,如果你有一个数字以外的东西,这将失败:
var defaultValue = 0;
int.TryParse(outOfRange, out defaultValue);
Run Code Online (Sandbox Code Playgroud)
我的问题是,因为这是一个数字,并且它会失败,你int.TryParse()怎么知道它失败了,因为字符串超出了它存储在容器的范围内?