Advertisement
Guest User

Untitled

a guest
Apr 24th, 2015
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.63 KB | None | 0 0
  1. using System;
  2. using System.Collections.ObjectModel;
  3.  
  4. /// <summary>
  5. /// 配列の拡張メソッドを管理するクラス
  6. /// </summary>
  7. public static class ArrayExtensions
  8. {
  9. /// <summary>
  10. /// 指定した配列をラップする読み取り専用のラッパーを作成します
  11. /// </summary>
  12. public static ReadOnlyCollection<T> AsReadOnly<T>(this T[] array)
  13. {
  14. return Array.AsReadOnly(array);
  15. }
  16.  
  17. /// <summary>
  18. /// Array 内の要素の範囲を、要素の型に応じて、0 (ゼロ)、false、または null に設定します
  19. /// </summary>
  20. public static void Clear(this Array array)
  21. {
  22. Array.Clear(array, 0, array.Length);
  23. }
  24.  
  25. /// <summary>
  26. /// Array 内の要素の範囲を、要素の型に応じて、0 (ゼロ)、false、または null に設定します
  27. /// </summary>
  28. public static void Clear(this Array array, int index)
  29. {
  30. Array.Clear(array, index, array.Length);
  31. }
  32.  
  33. /// <summary>
  34. /// Array 内の要素の範囲を、要素の型に応じて、0 (ゼロ)、false、または null に設定します
  35. /// </summary>
  36. public static void Clear(this Array array, int index, int length)
  37. {
  38. Array.Clear(array, index, length);
  39. }
  40.  
  41. /// <summary>
  42. /// 指定された配列に、指定された述語によって定義された条件と一致する要素が含まれているかどうかを判断します
  43. /// </summary>
  44. public static bool Exists<T>(this T[] array, Predicate<T> match)
  45. {
  46. return Array.Exists(array, match);
  47. }
  48.  
  49. /// <summary>
  50. /// 指定された述語によって定義された条件と一致する要素を検索し、Array 全体の中で最もインデックス番号の小さい要素を返します
  51. /// </summary>
  52. public static T Find<T>(this T[] array, Predicate<T> match)
  53. {
  54. return Array.Find(array, match);
  55. }
  56.  
  57. /// <summary>
  58. /// 指定された述語によって定義された条件と一致するすべての要素を取得します
  59. /// </summary>
  60. public static T[] FindAll<T>(this T[] array, Predicate<T> match)
  61. {
  62. return Array.FindAll(array, match);
  63. }
  64.  
  65. /// <summary>
  66. /// 指定された述語によって定義された条件と一致する要素を、Array 全体を対象に検索し、最もインデックス番号の小さい要素の 0 から始まるインデックスを返します
  67. /// </summary>
  68. public static int FindIndex<T>(this T[] array, Predicate<T> match)
  69. {
  70. return Array.FindIndex(array, match);
  71. }
  72.  
  73. /// <summary>
  74. /// 指定された述語によって定義された条件と一致する要素を、Array の指定されたインデックスから、最後の要素までを範囲として検索し、最もインデックス番号の小さい要素の 0 から始まるインデックスを返します
  75. /// </summary>
  76. public static int FindIndex<T>(this T[] array, int startIndex, Predicate<T> match)
  77. {
  78. return Array.FindIndex(array, startIndex, match);
  79. }
  80.  
  81. /// <summary>
  82. /// 指定された述語によって定義された条件と一致する要素を、Array の指定されたインデックスから、指定された要素数を範囲として検索し、最もインデックス番号の小さい要素の 0 から始まるインデックスを返します
  83. /// </summary>
  84. public static int FindIndex<T>(this T[] array, int startIndex, int count, Predicate<T> match)
  85. {
  86. return Array.FindIndex(array, startIndex, count, match);
  87. }
  88.  
  89. /// <summary>
  90. /// 指定された述語によって定義された条件と一致する要素を、Array 全体を対象に検索し、最もインデックス番号の大きい要素を返します
  91. /// </summary>
  92. public static T FindLast<T>(this T[] array, Predicate<T> match)
  93. {
  94. return Array.FindLast(array, match);
  95. }
  96.  
  97. /// <summary>
  98. /// 指定された述語によって定義された条件と一致する要素を、Array 全体を対象に検索し、最もインデックス番号の大きい要素の 0 から始まるインデックスを返します
  99. /// </summary>
  100. public static int FindLastIndex<T>(this T[] array, Predicate<T> match)
  101. {
  102. return Array.FindLastIndex(array, match);
  103. }
  104.  
  105. /// <summary>
  106. /// 指定された述語によって定義された条件と一致する要素を、Array の先頭の要素から、指定されたインデックス位置までを範囲として検索し、最もインデックス番号の大きい要素の 0 から始まるインデックスを返します
  107. /// </summary>
  108. public static int FindLastIndex<T>(this T[] array, int startIndex, Predicate<T> match)
  109. {
  110. return Array.FindLastIndex(array, startIndex, match);
  111. }
  112.  
  113. /// <summary>
  114. /// 指定された述語によって定義された条件と一致する要素を、Array の指定されたインデックス位置から、指定された要素数までを範囲として検索し、最もインデックス番号の大きい要素の 0 から始まるインデックスを返します
  115. /// </summary>
  116. public static int FindLastIndex<T>(this T[] array, int startIndex, int count, Predicate<T> match)
  117. {
  118. return Array.FindLastIndex(array, startIndex, count, match);
  119. }
  120.  
  121. /// <summary>
  122. /// 指定された配列内の各要素に対して、指定された処理を実行します
  123. /// </summary>
  124. public static void ForEach<T>(this T[] array, Action<T> action)
  125. {
  126. Array.ForEach<T>(array, obj => action(obj));
  127. }
  128.  
  129. /// <summary>
  130. /// Array 全体を対象に指定したオブジェクトを検索し、インデックス番号の最も小さい要素のインデックスを返します
  131. /// </summary>
  132. public static int IndexOf<T>(this T[] array, T value)
  133. {
  134. return Array.IndexOf(array, value);
  135. }
  136.  
  137. /// <summary>
  138. /// 指定したオブジェクトを検索し、1 次元の Array 全体でそのオブジェクトが最初に見つかった位置のインデックス番号を返します
  139. /// </summary>
  140. public static int IndexOf(this Array array, Object value)
  141. {
  142. return Array.IndexOf(array, value);
  143. }
  144.  
  145. /// <summary>
  146. /// 指定したオブジェクトを、Array の指定したインデックス位置から最後の要素までを範囲として検索し、最もインデックス番号の小さい要素のインデックス番号を返します
  147. /// </summary>
  148. public static int IndexOf<T>(this T[] array, T value, int startIndex)
  149. {
  150. return Array.IndexOf(array, value, startIndex);
  151. }
  152.  
  153. /// <summary>
  154. /// 指定されたオブジェクトを、1 次元 Array の指定されたインデックスから最後の要素までを範囲として検索し、インデックス番号の最も小さい要素のインデックス番号を返します
  155. /// </summary>
  156. public static int IndexOf(this Array array, Object value, int startIndex)
  157. {
  158. return Array.IndexOf(array, value, startIndex);
  159. }
  160.  
  161. /// <summary>
  162. /// 指定したオブジェクトを、Array の指定したインデックスから指定した要素数を範囲として検索し、インデックス番号の最も小さい要素のインデックス番号を返します
  163. /// </summary>
  164. public static int IndexOf<T>(this T[] array, T value, int startIndex, int count)
  165. {
  166. return Array.IndexOf(array, value, startIndex, count);
  167. }
  168.  
  169. /// <summary>
  170. /// 指定したオブジェクトを、指定したインデックス位置から、指定した要素数を範囲とする 1 次元 Array 要素の範囲内で検索し、最もインデックス番号の小さい要素のインデックス番号を返します
  171. /// </summary>
  172. public static int IndexOf(this Array array, Object value, int startIndex, int count)
  173. {
  174. return Array.IndexOf(array, value, startIndex, count);
  175. }
  176.  
  177. /// <summary>
  178. /// 指定したオブジェクトを Array 全体を対象に検索し、インデックス番号の最も大きい要素のインデックスを返します
  179. /// </summary>
  180. public static int LastIndexOf<T>(this T[] array, T value)
  181. {
  182. return Array.LastIndexOf(array, value);
  183. }
  184.  
  185. /// <summary>
  186. /// 指定したオブジェクトを検索し、1 次元の Array 全体でそのオブジェクトが最後に見つかった位置のインデックス番号を返します
  187. /// </summary>
  188. public static int LastIndexOf(this Array array, Object value)
  189. {
  190. return Array.LastIndexOf(array, value);
  191. }
  192.  
  193. /// <summary>
  194. /// 指定したオブジェクトを、Array の先頭の要素から、指定されたインデックス位置までを範囲として検索し、インデックス番号の最も大きい要素のインデックス番号を返します
  195. /// </summary>
  196. public static int LastIndexOf<T>(this T[] array, T value, int startIndex)
  197. {
  198. return Array.LastIndexOf(array, value, startIndex);
  199. }
  200.  
  201. /// <summary>
  202. /// 1 次元 Array の先頭の要素から、指定したインデックスまでを対象に指定したオブジェクトを検索し、インデックス番号の最も大きい要素のインデックス番号を返します
  203. /// </summary>
  204. public static int LastIndexOf(this Array array, Object value, int startIndex)
  205. {
  206. return Array.LastIndexOf(array, value, startIndex);
  207. }
  208.  
  209. /// <summary>
  210. /// 指定したオブジェクトを、Array の指定したインデックス位置から、指定した要素数を範囲として検索し、インデックス番号の最も大きい要素のインデックス番号を返します
  211. /// </summary>
  212. public static int LastIndexOf<T>(this T[] array, T value, int startIndex, int count)
  213. {
  214. return Array.LastIndexOf(array, value, startIndex, count);
  215. }
  216.  
  217. /// <summary>
  218. /// 指定したオブジェクトを、1 次元 Array の指定したインデックス位置から、指定した要素数を範囲として検索し、インデックス番号の最も大きい要素のインデックス番号を返します
  219. /// </summary>
  220. public static int LastIndexOf(this Array array, Object value, int startIndex, int count)
  221. {
  222. return Array.LastIndexOf(array, value, startIndex, count);
  223. }
  224.  
  225. /// <summary>
  226. /// 1 次元の Array 内全体の要素のシーケンスを反転させます
  227. /// </summary>
  228. public static void Reverse(this Array array)
  229. {
  230. Array.Reverse(array);
  231. }
  232.  
  233. /// <summary>
  234. /// 1 次元 Array 内の要素範囲の並び順を反転させます
  235. /// </summary>
  236. public static void Reverse(this Array array, int index, int length)
  237. {
  238. Array.Reverse(array, index, length);
  239. }
  240.  
  241. /// <summary>
  242. /// 配列内のすべての要素が、指定された述語によって定義された条件と一致するかどうかを調べます
  243. /// </summary>
  244. public static bool TrueForAll<T>(this T[] array, Predicate<T> match)
  245. {
  246. return Array.TrueForAll(array, match);
  247. }
  248.  
  249. /// <summary>
  250. /// シーケンスの最初の要素を返します
  251. /// </summary>
  252. public static T First<T>(this T[] array)
  253. {
  254. return array[0];
  255. }
  256.  
  257. /// <summary>
  258. /// シーケンスの最後の要素を返します
  259. /// </summary>
  260. public static T Last<T>(this T[] array)
  261. {
  262. return array[array.Length - 1];
  263. }
  264.  
  265. /// <summary>
  266. /// シーケンス内の要素をランダムに返します
  267. /// </summary>
  268. public static T ElementAtRandom<T>(this T[] array)
  269. {
  270. return array[UnityEngine.Random.Range(0, array.Length)];
  271. }
  272. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement