c#中将字符串赋值给常量字符串的一种方法

本文关键字:字符串 一种 方法 常量 赋值 | 更新日期: 2023-09-27 18:07:51

这是一个场景,我正在制作一个基于用户指定的设置/类属性进行正则表达式的类。

我创建了公共字符串KeyWords,以便最初能够从用户那里获得信息,我不能将其定义为常量,因为值会根据用户输入而变化。

然后我需要将KeyWords中的值赋给一个常量,因为我需要基于这些关键字创建一个新的正则表达式。我该怎么做呢?

c#中将字符串赋值给常量字符串的一种方法

理想情况下,对于在类对象的生命周期中只应该分配一次的变量,您可以考虑使用只读字段(更好的属性)。

这样,在你的Settings类的构造函数中,你就可以给它们分配匹配的值。

在构造函数代码执行后,属性/字段将不可用于赋值。

只读vs静态:http://weblogs.asp.net/psteele/archive/2004/01/27/63416.aspx

Readonly (MSDN): http://msdn.microsoft.com/en-us/library/acdd6hb7(v=VS.100).aspx

希望这对你有帮助!

它要么是常量,要么不是,没有中间值

为什么你认为你需要使KeyWords在某一点恒定?在c#中,你不能强制要求参数是常量,所以我不明白你为什么需要这个。

Regex类的构造函数和方法可以接受任何字符串,只需传递正则表达式来匹配。

例如,如果您有一些关键字,并希望匹配其中的任何一个,请使用:

keyWords = new List<string> { /* some number of keywords to match */ };
var bldr = new StringBuilder();
// loop through all but the last string to avoid
// a trailing '|' character.
foreach( var s in keyWords.Take( keyWords.Count - 1 ) )
{
    bldr.AppendFormat( "{0}|", s );
}
// get the last one, don't add a '|'
bldr.Append( keyWords.Last() );
var reg = new RegEx( bldr.ToString() );

我有点猜你在这里想要什么,因为你没有告诉我们你想要解决的问题,而是告诉我们一个你认为可以解决的奇怪的解决方案。

然后我需要以某种方式将KeyWords中的值赋给一个常量值,因为我需要基于这些关键字创建一个新的正则表达式。

这没有意义。为什么需要它们是常数来生成Regex ?显然,它们不是常量,因为它们不能保持不变。

听起来不像是const。你应该只对那些永远不会改变的东西使用常量。例如,const decimal Pi = 3.14;是有意义的。每次应用程序运行时,关键字都会发生变化,所以它们不应该是恒定的。

您仍然可以根据用户的输入关键字创建正则表达式,如下所示:

var keyword = "MatchMe";
var regex = new Regex(keyword);
var isMatch = regex.IsMatch("My MatchMe string");
相关文章: