这不是一个紧迫的问题,但我想知道是否有办法初始化像这样的Guid:
string input = "example text...";
Guid? outputGuid;
outputGuid = new Guid( ExampleMethodToGetString(input) ?? null );
虽然这不会出错,但它不会运行,这显然是因为重载不能以这种方式工作,只是想知道是否有比下面更短的内容。目前的工作解决方案是:
string input = "example text...";
Guid? outputGuid;
input = ExampleMethodToGetString( input );
outputGuid = input == null ? (Guid?) null : new Guid( input );
答案 0 :(得分:2)
这是另一种方式
string input = "example text...";
Guid? outputGuid = null;
input = ExampleMethodToGetString( input );
if(input != null)
{
outputGuid = new Guid( input );
}
答案 1 :(得分:1)
没有预先构建的解决方案。
扩展方法怎么样?
public static Guid? ToGuidOrNull(this string str)
{
Guid guid = default(Guid);
if (Guid.TryParse(str, out guid))
{
return (Guid?)guid;
}
else
{
return null;
}
}
编辑感谢 @Matthew Watson 建议
public static Guid? ParseToNullableGuid(string str)
{
if (string.IsNullOrEmpty(str)) return null;
Guid guid = Guid.Parse(str); // Will throw if not a valid Guid
return (Guid?)guid;
}
答案 2 :(得分:1)
为什么不从最后一行开出静态方法:
public static Guid? GetGuidOrNull(string str)
{
return str == null ? (Guid?)null : new Guid(str);
}
甚至:
public static Guid? GetGuidOrNull(string str)
{
str = MethodToGetString(str);
return str == null ? (Guid?)null : new Guid(str);
}
然后你可以做(第一种情况):
string input = "example text...";
Guid? outputGuid = GetGuidOrNull(MethodToGetString(input));
或(第二种情况):
string input = "example text...";
Guid? outputGuid = GetGuidOrNull(input);