我们有一个完整性检查方法
void IsNotNull<T>(T obj){...}
Run Code Online (Sandbox Code Playgroud)
调用
IsNotNull(obj);
Run Code Online (Sandbox Code Playgroud)
我想替换它来调用另一个带有第二个类型字符串参数的重载(消息)
void IsNotNull<T>(T obj, string message){...}
Run Code Online (Sandbox Code Playgroud)
所以我想将调用更改为
IsNotNull(obj, "obj is null");
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用resharper的find模式来实现这一点并替换.
所以我的发现模式是:IsNotNull($args$)- 这很好,它找到方法调用
替换模式:IsNotNull($args$, "$args$ is null") - 这没有做任何事情
我也尝试过这个 IsNotNull($args$, """" + $args$ + """")
--Edited--显示正确措辞(对于参数和标识符)的建议框,但一旦应用它就不同了.我正在使用Resharper 6

应用建议后,我得到了这个

当我单击编辑模式

class Person
{
string Name;
int Age;
}
Run Code Online (Sandbox Code Playgroud)
我希望能够像下面一样隐式地将字符串转换为Person
var mrFoo = "Foo" as Person;
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过定义隐式转换来执行以下操作
Person mrFoo = "Foo";
Run Code Online (Sandbox Code Playgroud)
但我具体使用"as"运算符
var fooRef = new FooRef();
var fooRefEnumerable = Enumerable.Empty<FooRef>();
var fooRefEquality = (fooRef == fooRefEnumerable); //This compiles without any errors
var fooVal = new FooVal();
var fooValEnumerable = Enumerable.Empty<FooVal>();
//Compilation error : Error 1 Operator '==' cannot be applied to operands of type 'FooVal' and 'System.Collections.Generic.IEnumerable<FooVal>'
var fooValEquality = (fooVal == fooValEnumerable);
public class FooRef { }
public struct FooVal { }
Run Code Online (Sandbox Code Playgroud)
为什么比较单个对象和对RefTypes有效的IEnumerable?