我正在寻找返回null值的替代方法。前面的#7常见模式是
public bool TryParseInt(string data, out int result);
但是现在我们也可以使用值元组和解构器来做这样的事情
public (bool parsed, int result) TryParseInt(string data){}
var (parsed, result) = TryParseInt("0");
if(parsed == false)
return;
是否值得编写这样的函数?我强烈不喜欢所有'out'的东西,因为在寻找bug时很容易错过。
作为使用值元组而不是在错误时返回空值的加号:你可以处理函数内部的错误。
作为减号,每次都会创建新的附加变量,并且当您一直使用此模式时代码看起来很邋..
发布于 2019-05-16 07:39:06
问问自己'我会做这样的事吗?':
public Tuple<bool, int> TryParseInt(string data)
{
...
}
如果答案是“是”,那么继续使用ValueTuples
:
public (bool parsed, int result) TryParseInt
据我所知,标准编码惯例说的是:
如果方法的名称以单词“Try”开头,则应返回nullable类型或bool + out参数。
以下是我们提供的两个选项:
public int? TryParseInt(string data) // or
public bool TryParseInt(string data, out int number)
我将使用第一个选项并null
在解析操作失败时返回。
发布于 2019-05-16 09:00:35
我认为这是基于意见的。如上所述,选择你喜欢的更多:)
但对于您提供的用例,我建议使用out
参数和第一个模式,这样您就可以编写干净的代码,例如:
if(TryParseInt("123", out int parsed))
{
//use parsed variable
}
要么
var i = TryParseInt("123", out int parsed) ? parsed : -1; // -1 is just example
使用元组,此代码将变得不那么可读恕我直言。
https://stackoverflow.com/questions/-100006731
复制相似问题