Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.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# 为什么System.Text.RegularExpressions.Group没有Name属性?_C#_Regex_Regex Group - Fatal编程技术网

C# 为什么System.Text.RegularExpressions.Group没有Name属性?

C# 为什么System.Text.RegularExpressions.Group没有Name属性?,c#,regex,regex-group,C#,Regex,Regex Group,在c#的正则表达式中,我们可以编写一个正则表达式并为一个组指定一个名称,例如 (?<One>abc) 为什么他们不能在Group类中为名称添加属性?有没有一个特殊的原因不这样做的设计 编辑: 我在尝试使用以下函数时遇到了这个问题: Regex.Replace(string input, string pattern, MatchEvaluator evaluator ) 我想使用同一个计算器来处理基于不同正则表达式的多个替换。如果有一个组的name属性,在evaluator中,我

在c#的正则表达式中,我们可以编写一个正则表达式并为一个组指定一个名称,例如

(?<One>abc)
为什么他们不能在Group类中为名称添加属性?有没有一个特殊的原因不这样做的设计

编辑: 我在尝试使用以下函数时遇到了这个问题:

Regex.Replace(string input,
string pattern,
MatchEvaluator evaluator
)
我想使用同一个计算器来处理基于不同正则表达式的多个替换。如果有一个组的name属性,在evaluator中,我可以通过查看它的名称来判断它是哪个正则表达式。然而,没有这样的财产


我最终使用了闭包和GetGroupNames,但我仍然认为它应该有name属性。如果组没有名称,则属性可以为空。

在API中不提供
a
名称
的逻辑是,如果您通过采用
int
的索引器从
组集合
检索了
,则该组可能不是命名组;否则,您可能更希望通过索引器获取
字符串


另一方面,如果您已通过索引器以
字符串
检索组,则您已经知道该组的名称。

处的文档表明该类的最新版本确实具有name属性。我的经验是,这在运行时可用,但在编译时不可用(!!)我在MSDN论坛上问了一个关于这方面的问题

您的问题不是很清楚。如果你发布了一个你希望工作的代码示例,这将有助于澄清你的问题。如果你创建了正则表达式,你不应该知道组名是什么吗?除非设计团队的人看到这一点,否则我们所能做的就是猜测。我的猜测是,它从未被视为足够重要以保证开发和测试时间。不幸的是,这种逻辑是有缺陷的,因为在现实世界中,您需要一个
名称
属性。例如,我正在运行从应用程序的另一个组件传递的正则表达式。在设计时,我不知道正则表达式中的命名组是什么,但我仍然需要将它们提取出来以形成名称-值对。@MgSam方法在这种情况下很有用。不幸的是,该方法不是特别有用。如果您想知道一个给定的
组的
名称是什么,那么从
正则表达式中获得一个名称数组(没有保证顺序)对您没有多大好处。特别是考虑在
Regex
上使用静态方法比实例化它更好(出于缓存原因)。可以提供
名称
属性,因为我可以通过反射检索信息。请阅读。
Regex.Replace(string input,
string pattern,
MatchEvaluator evaluator
)