如何在我的c#项目中找到所有静态变量

本文关键字:静态 变量 我的 项目 | 更新日期: 2023-09-27 18:24:17

我想与多个线程并行运行我的命令行程序的某些部分,我担心可能还有一些静态变量需要修复(例如,使其成为[ThreadStatic])。有什么工具或简单的方法可以在我的项目中找到这些吗?

当然,简单地搜索"static"并没有多大帮助:我有很多静态方法,它们工作得很好,可以找到任意数量的线程

如何在我的c#项目中找到所有静态变量

注意:dasblinkenlight的答案仅适用于Visual Studio 2010及更早版本

以下是Visual Studio 2012及更新版本的翻译:

static(?([^'r'n])'s)+('b(_'w+|['w-[0-9_]]'w*)'b)(?([^'r'n])'s)+('b(_'w+|['w-[0-9_]]'w*)'b)(?([^'r'n])'s)*[=;]

翻译参考:http://msdn.microsoft.com/en-us/library/2k3te2cs(v=vs.110).aspx

在Visual Studio中使用regexp选项在文件中搜索static:b+:i:b+:i:b*[=;]应该会为您找到静态变量。它还将带来运算符==,但它们应该相对容易在视觉上过滤掉。

首先,您必须从Edit->Find and Replace->Find in Files菜单或Ctrl+Shift+F快捷键打开Find in Files窗口。

然后,您必须使用此正则表达式在Current ProjectEntire Solution:中搜索所有静态变量

static 'w*[ 't]*'b('w+|['w-[0-9]]'w)'b[ 't]+'b('w+|['w-[0-9]]'w*)'b[ 't]*[=;]

请注意检查Find options部分中的选项Use Regular Expressions

此正则表达式还支持只读、虚拟、。。。

除了IDE技巧之外,真正的战士的方法是使用Assembly.Load()将应用程序DLL加载到内存中,然后使用反射搜索所有类型的公共/私有/受保护静态字段。:)

在一个地方找到所有静态字段的最简单方法可能是通过Visual Studio中的"类视图"面板(默认情况下,在C#模式下为Ctrl + W, C,也在View菜单下)。

您可以设置一些基本过滤器。不幸的是,静态不是其中之一。但是,您可以根据您的编码风格,使用可用的过滤器来精简结果。

或者,您可以制作一个程序,使用反射来提取每个静态字段并检查其属性。如果ThreadStaticAttribute不在其中,让它吐出一条消息。(这是另一个答案,您可能可以从中获得更多详细信息。)