public Regex rgDbType = new Regex("\\[XF:OutType\\]", RegexOptions.IgnoreCase); 
        public Regex rgKeyId = new Regex("\\[XF:KeyId\\]", RegexOptions.IgnoreCase);   //键值,ID号
        public Regex rgTitle = new Regex("\\[XF:Title\\]", RegexOptions.IgnoreCase);   //标题,另外表达方式:public Regex rg2Title = new Regex(@"\[XF:Title\]", RegexOptions.IgnoreCase);
        public Regex rgTitleTip = new Regex("\\[XF:TitleTip\\]", RegexOptions.IgnoreCase);   //此项为标题提示,一些被截断的标题,如果加提示的话,用此项,对SEO有帮助
        public Regex rgStitle = new Regex("\\[XF:sTitle\\]", RegexOptions.IgnoreCase);   //副标题
        public Regex rgFileLink = new Regex("\\[XF:FileLink\\]", RegexOptions.IgnoreCase);   //文件链接路径,原来为NewsPath
        public Regex rgPicPath = new Regex("\\[XF:PicPath\\]", RegexOptions.IgnoreCase);    //原始图片路径
        public Regex rgPicPathS = new Regex("\\[XF:PicPathS\\]", RegexOptions.IgnoreCase);   //小图片路径
        public Regex rgPicPathM = new Regex("\\[XF:PicPathM\\]", RegexOptions.IgnoreCase);   //中图片路径
        public Regex rgPicPathB = new Regex("\\[XF:PicPathB\\]", RegexOptions.IgnoreCase);   //大图片路径  
        public Regex rgDepict = new Regex("\\[XF:depict\\]", RegexOptions.IgnoreCase);   //简介
        public Regex rgYear = new Regex("\\[XF:Year\\]", RegexOptions.IgnoreCase);   //年
        public Regex rgMonth = new Regex("\\[XF:Month\\]", RegexOptions.IgnoreCase);   //月
        public Regex rgDay = new Regex("\\[XF:Day\\]", RegexOptions.IgnoreCase);   //日
        public Regex rgHour = new Regex("\\[XF:Hour\\]", RegexOptions.IgnoreCase);   //小时
        public Regex rgMinute = new Regex("\\[XF:Minute\\]", RegexOptions.IgnoreCase);   //分钟
        public Regex rgSecond = new Regex("\\[XF:Second\\]", RegexOptions.IgnoreCase);   //秒
        public Regex rgCategoryId = new Regex("\\[XF:CategoryId\\]", RegexOptions.IgnoreCase);   //分类ID值
        public Regex rgCategoryName = new Regex("\\[XF:CategoryName\\]", RegexOptions.IgnoreCase);   //分类名
        public Regex rgCategoryPath = new Regex("\\[XF:CategoryPath\\]", RegexOptions.IgnoreCase);   //栏目路径
        public Regex rgMore = new Regex("\\[XF:More\\]", RegexOptions.IgnoreCase);   //更多
我这是做的一个CMS的系统,里面先定义了这些标签,我看了全都用new来实例化了这些标签。只要在用到的地方将这个类继承或实例化下就可以了,用起来到是方便了,但是我觉得不大合理,因为new是需要分配内存空间的吧? 所以我想问下大家,是不是我这样做不合理呀?【因为很想自己的系统少分配内存,提高性能】 如果不合理的话,我应该怎样改进呢?非常感谢大家赐教。

解决方案 »

  1.   

      
     Dictionary<string, string> di = new Dictionary<string, string>();
     //public Regex rgDay = new Regex("\\[XF:Day\\]", RegexOptions.IgnoreCase);   //日
                di.Add("day","\\[XF:Day\\]");
      

  2.   

    现在除非你电脑很次,否则你new 1000个都没有影响。只不过这种写法的确很矬。using System.Collections.Generic;
    Dictionary<string, RegexOptions> d = new Dictionary<string, RegexOptions>();
    for(…………){
    d.add(xx,yy);
    }需要用到正则表达式验证的时候,才
    Regex reg = new Regex(str,d[str]);
      

  3.   

    谢谢楼上二位的建议,不过对Dictionary的用法我还是不是很熟悉,呵呵。我要去研究下,另外不知道还有没有其它的方法?
      

  4.   

    还有其它方法吗? 楼上的方法是存入到数据字典里面了,但是在用的时候始终还是要(new) Regex reg = new (str,d[str]);
    标签多了,还是要new很多啊。