有没有一种方法可以制定一个重拍规则来阻止裁判&;out参数

本文关键字:参数 out 规则 amp 一个 方法 一种 有没有 | 更新日期: 2023-09-27 18:06:27

我的观点ref&out参数损害了代码的可读性。在大多数情况下,它们可以使用泛型&可为null的类型。

当有人试图定义一个具有ref或out参数的函数时,我希望有resharper警告。然而,我所能找到的只是一种重构声明为使用out参数的方法的方法。似乎没有任何现有的检查或编写针对ref&out参数。

以下是out参数的常见用法:

int i;
if(!int.TryParse(str, out i))
{
    i = -1;
}

将其与此进行比较:

var i = str.TryParse<int>() ?? -1;

TryParse只是字符串上的一个扩展方法。我有一个自定义的重拍规则,它会在任何ValueType.TryParse((调用下面加下划线请注意,现在可以将字符串解析为linq表达式的一部分

T? TryParse<T>(this string str) 
{
   //magic
}

有没有一种方法可以制定一个重拍规则来阻止裁判&;out参数

令我惊讶的是,以下自定义模式实际上有效:

$type$ $X2$($pb$, ref $pt$ $i$, $pa$)
{
$stmts$;
}

何处

X2是一个标识符
我是一个标识符
type是对象的类型或派生的
stmts是任意数量的语句
pt是任何类型的对象或派生的
pa是任意数量的参数
pb是任意数量的参数

这与public int X(ref int y)以及private int X2(string j, ref int i, DateTime k)相匹配。

我还没有找到匹配void方法的方法。

这是Visual Studio 2012上的ReSharper 7.1.1。