在我的应用程序中,我需要一个大的常量(实际上是静态只读)对象数组.数组在类型的静态构造函数中初始化.
该数组包含超过一千个项目,当首次使用该类型时,我的程序经历了严重的减速.我想知道是否有办法在C#中快速初始化大型数组.
public static class XSampa { public class XSampaPair : IComparable<XSampaPair> { public XSampaPair GetReverse() { return new XSampaPair(Key,Target); } public string Key { get; private set; } public string Target { get; private set; } internal XSampaPair(string key,string target) { Key = key; Target = target; } public int Compareto(XSampaPair other) { if (other == null) throw new ArgumentNullException("other","Cannot compare with Null."); if (Key == null) throw new NullReferenceException("Key is null!"); if (other.Key == null) throw new NullReferenceException("Key is null!"); if (Key.Length == other.Key.Length) return string.Compare(Key,other.Key,StringComparison.InvariantCulture); return other.Key.Length - other.Key; } } private static readonly XSampaPair[] pairs,reversedPairs; public static string ParseXSampaToIpa(this string xsampa) { // Parsing code here... } public static string ParseIpaToXSampa(this string ipa) { // reverse code here... } static XSampa() { pairs = new [] { new XSampaPair("a","\u0061"),new XSampaPair("b","\u0062"),new XSampaPair("b_<","\u0253"),new XSampaPair("c","\u0063"),// And many more pairs initialized here... }; var temp = pairs.Select(x => x.GetReversed()); reversedPairs = temp.ToArray(); Array.sort(pairs); Array.sort(reversedPairs); } }
PS:我使用数组将X-SAMPA语音转录转换为带有相应IPA字符的Unicode字符串.
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。