diff --git a/Apewer/TextUtility.cs b/Apewer/TextUtility.cs
index aa41f64..5dd5fca 100644
--- a/Apewer/TextUtility.cs
+++ b/Apewer/TextUtility.cs
@@ -2,6 +2,7 @@
 using System;
 using System.Collections;
 using System.Collections.Generic;
+using System.Runtime.InteropServices;
 using System.Text;
 using System.Text.RegularExpressions;
 
@@ -657,18 +658,18 @@ namespace Apewer
         }
 
         /// 对字符串列表去重。指定 valid 参数时将去除无效字符串。
-        public static List Distinct(IEnumerable strings, bool valid = false)
+        /// 
+        /// 
+        public static string[] Distinct(IEnumerable strings, bool valid = false)
         {
-            if (strings == null) return new List();
+            if (strings == null) return new string[0];
 
             const string space = " ";
-
-            var count = strings.Count();
-            var array = new string[count];
-            var added = 0;
             var hasNull = false;
             var hasEmpty = false;
             var hasSpace = false;
+
+            var array = new ArrayBuilder();
             foreach (var s in strings)
             {
                 if (s == null)
@@ -676,8 +677,7 @@ namespace Apewer
                     if (valid) continue;
                     if (hasNull) continue;
                     hasNull = true;
-                    array[added] = s;
-                    added += 1;
+                    array.Add(s);
                     continue;
                 }
                 if (s == Empty)
@@ -685,8 +685,7 @@ namespace Apewer
                     if (valid) continue;
                     if (hasEmpty) continue;
                     hasEmpty = true;
-                    array[added] = s;
-                    added += 1;
+                    array.Add(s);
                     continue;
                 }
                 if (s == space)
@@ -694,13 +693,12 @@ namespace Apewer
                     if (valid) continue;
                     if (hasSpace) continue;
                     hasSpace = true;
-                    array[added] = s;
-                    added += 1;
+                    array.Add(s);
                     continue;
                 }
 
                 var exist = false;
-                for (var i = 0; i < added; i++)
+                for (var i = 0; i < array.Length; i++)
                 {
                     if (array[i] == s)
                     {
@@ -710,14 +708,10 @@ namespace Apewer
                 }
                 if (exist) continue;
 
-                array[added] = s;
-                added += 1;
+                array.Add(s);
             }
 
-            if (added < 1) return new List();
-            var list = new List(added);
-            for (var i = 0; i < added; i++) list.Add(array[i]);
-            return list;
+            return array.Export();
         }
 
         /// 约束字符串中的字符,只包含指定的字符。