string-Concat

          public static String Concat(params Object[] args) {
            if (args==null) {
                throw new ArgumentNullException("args");
            }
            Contract.Ensures(Contract.Result<String>() != null);
            Contract.EndContractBlock();
    
            String[] sArgs = new String[args.Length];
            int totalLength=0;
            
            for (int i=0; i<args.Length; i++) {
                object value = args[i];
                sArgs[i] = ((value==null)?(String.Empty):(value.ToString()));
                if (sArgs[i] == null) sArgs[i] = String.Empty; // value.ToString() above could have returned null
                totalLength += sArgs[i].Length;
                // check for overflow
                if (totalLength < 0) {
                    throw new OutOfMemoryException();
                }
            }
            return ConcatArray(sArgs, totalLength);
        }
        [System.Security.SecuritySafeCritical]  // auto-generated
        private static String ConcatArray(String[] values, int totalLength) {
            String result =  FastAllocateString(totalLength);
            int currPos=0;
 
            for (int i=0; i<values.Length; i++) {
                Contract.Assert((currPos <= totalLength - values[i].Length), 
                                "[String.ConcatArray](currPos <= totalLength - values[i].Length)");
 
                FillStringChecked(result, currPos, values[i]);
                currPos+=values[i].Length;
            }
 
            return result;
        }

1>固定数量的字符串连接+的效率是最高的;

2>当字符串的数量不固定,并且子串的长度小于8,用StringBuiler的效率高些。

3>当字符串的数量不固定,并且子串的长度大于8,用List<string>的效率高些。

posted @ 2021-11-19 13:11  vba是最好的语言  阅读(142)  评论(0编辑  收藏  举报