小编Nas*_*eer的帖子

Resharper查找模式并替换 - 如何插入字符串

我们有一个完整性检查方法

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

在此输入图像描述

应用建议后,我得到了这个 在此输入图像描述

当我单击编辑模式 在此输入图像描述

c# resharper refactoring automated-refactoring

10
推荐指数
1
解决办法
1975
查看次数

'as'的重载/隐式运算符

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"运算符

c# operator-overloading

7
推荐指数
2
解决办法
4424
查看次数

为什么将单个元素与IEnumerable进行比较不是编译错误

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?

c# ienumerable

7
推荐指数
1
解决办法
157
查看次数