Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于类型的搜索和替换_C#_Search_Visual Studio 2013_Replace_Resharper - Fatal编程技术网

C# 基于类型的搜索和替换

C# 基于类型的搜索和替换,c#,search,visual-studio-2013,replace,resharper,C#,Search,Visual Studio 2013,Replace,Resharper,我希望这里有人知道如何使用visual studio 2013按类型查找文本并替换它们。例如,我有一个使用运算符重载进行乘法的结构。因此,在我的整个程序中,我有一些语句/表达式,比如struct*struct 我想改变这一切,用一种方法;例如,我想更改以下内容: Vectro3 a; Vector3 b; Vector3 c = a * b; 致: 是否有一种方法可以搜索类型Vector3仅乘以Vector3的位置,而不是类型float乘以float的位置,然后用其他内容替换它 我需要将其更

我希望这里有人知道如何使用visual studio 2013按类型查找文本并替换它们。例如,我有一个使用运算符重载进行乘法的结构。因此,在我的整个程序中,我有一些语句/表达式,比如struct*struct

我想改变这一切,用一种方法;例如,我想更改以下内容:

Vectro3 a;
Vector3 b;

Vector3 c = a * b;
致:

是否有一种方法可以搜索类型Vector3仅乘以Vector3的位置,而不是类型float乘以float的位置,然后用其他内容替换它

我需要将其更改为方法的原因是,我将使用程序内联计算,而不是使用运算符或方法。我有大约8000多个病例,所以手动操作会很痛苦

我真的希望这里有人知道一种技术或程序可以做到这一点。我在Resharper的重构中尝试了搜索模式,但那个插件弄乱了我的整个代码。我可能用错了,如果有人知道如何在重构中使用搜索模式进行上述操作,请也告诉我


提前谢谢

一种可能性:中断Vector3上的
*
运算符重载,然后重新生成。无论您在哪里使用重载的
*
,这都会给您带来错误。修好那些。这不像一次修复所有问题那么好,但至少它能很快找到所有问题


另一种可能性。当我在解决方案资源管理器中下拉一个类时,我可以下拉到一个点,在那里我可以得到它的方法列表。然后我可以右键单击一个方法并选择“被调用者”或“被使用者”。同样,这不会对您进行替换,但它应该有助于找到所有的用法,这仍然是一个帮助。

您应该能够使用in-ReSharper。比如:

Vector3 $id$ = $exp1$ * $exp2$
其中,
$id$
是一个标识符占位符,您几乎可以忽略它
$exp1$
$exp2$
将是表达式占位符,其类型为
矢量3
(但具有完全限定的类型名)。这应该足以找到所有乘法实例

然后可以创建替换模式:

Vector3 $id$ = Vector3.Mul($exp1$, $exp2$)

ReSharper将用这个替换匹配find模式的代码,将原始标识符以及原始表达式(这些可以是表达式,例如方法调用的返回值,而不仅仅是局部变量)。

这是什么意思“使用程序内联计算,而不是使用运算符或方法”?ReSharper的Refactor能够通过将方法调用替换为方法体来内联方法调用。例如:“c=a*b”将内联,如下所示:“Vector3 tmp;tmp.x=a.x*b.x;tmp.y=a.y*b.y;tmp.z=z.y*b.y;c=tmp;“出于我的目的,内联计算给了我巨大的性能提升。我正在使用物理引擎的固定数学来确保跨所有平台的确定性。这就是我要建议的,但asker说,“我在Resharper的重构中尝试了搜索模式,但那个附加模块弄乱了我的整个代码。”不知道为什么这个问题被标记为:(我试过这么做,但是resharper没有做它应该做的。它把我的代码变成了一个奇怪的东西。然而,我有了另一个想法,我要尝试一下你说的“奇怪的东西”是什么意思?发生了什么?
Vector3 $id$ = Vector3.Mul($exp1$, $exp2$)