블로그 이미지
Every unexpected event is a path to learning for you.

카테고리

분류 전체보기 (2328)N
Unity3D (572)N
Programming (472)
Unreal (4)
Gamebryo (56)
Tip & Tech (185)
협업 (34)
3DS Max (3)
Game (12)
Utility (116)
Etc (92)
Link (31)
Portfolio (19)
Subject (90)
iOS,OSX (38)
Android (13)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (1)
Memories (19)
Interest (37)
Thinking (36)
한글 (26)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (19)
Exercise (3)
나만의 맛집 (2)
냥이 (9)
육아 (9)
Total1,346,328
Today134
Yesterday132
Statistics Graph

달력

« » 2019.12
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

공지사항

태그목록

[펌] 반복문 유틸

Programming/C# / 2016. 12. 7. 17:54
// 반복문 관련
    // For Array
    public static void ForToArray

(T[] pArray, Action pCallback) { if (null == pArray) return; if (null == pCallback) return; int iMaxCount = pArray.Length; for (int iLoop=0; iLoop < iMaxCount; ++iLoop) { pCallback(pArray[iLoop]); } } // For Enum public static void ForToEnum(Action pCallback) { var pEnumerator = Enum.GetValues(typeof(T)).GetEnumerator(); while (pEnumerator.MoveNext()) { pCallback((T)pEnumerator.Current); } } // For List public static void ForToList(List pList, Action pCallback) { if (null == pList) return; if (null == pCallback) return; int iMaxCount = pList.Count; for (int iLoop = 0; iLoop < iMaxCount; ++iLoop) { pCallback(pList[iLoop]); } } public static void ForToList(List pList, Func pCallback) { if (null == pList) return; if (null == pCallback) return; int iMaxCount = pList.Count; for (int iLoop = 0; iLoop < iMaxCount; ++iLoop) { if (true == pCallback(pList[iLoop])) break; } } // For Dictionary public static void ForToDic(Dictionary pDic, Action pCallback) { if (null == pDic) return; if (null == pCallback) return; var pEnumerator = pDic.GetEnumerator(); while (pEnumerator.MoveNext()) { var kvp = pEnumerator.Current; pCallback(kvp.Key, kvp.Value); } } public static void ForToDic(Dictionary pDic, Func pCallback) { if (null == pDic) return; if (null == pCallback) return; var pEnumerator = pDic.GetEnumerator(); while (pEnumerator.MoveNext()) { var kvp = pEnumerator.Current; if (true == pCallback(kvp.Key, kvp.Value)) break; } } // For One public static void For(int iStartIndex, int iMaxIndex, Action pCallback) { for (int iLoop = iStartIndex; iLoop pCallback) { for (int iLoop = iStartIndex; iLoop < iMaxIndex; ++iLoop) { if (true == pCallback(iLoop)) break; } } // For Double public static void ForToDouble(int iMaxToFirst, int iMaxToSecond, Action pCallback) { for (int iLoop1 = 0; iLoop1 < iMaxToFirst; ++iLoop1) { for (int iLoop2 = 0; iLoop2 < iMaxToSecond; ++iLoop2) pCallback(iLoop1, iLoop2); } } public static void ForToDouble(int iMaxToFirst, int iMaxToSecond, Func pCallback) { for (int iLoop1 = 0; iLoop1 < iMaxToFirst; ++iLoop1) { for (int iLoop2 = 0; iLoop2 < iMaxToSecond; ++iLoop2) { if (true == pCallback(iLoop1, iLoop2)) return; } } } // Inverse For Double public static void ForInverseToDouble(int iMaxToFirst, int iMaxToSecond, Action pCallback) { for (int iLoop1 = iMaxToFirst; iLoop1 >= 0; --iLoop1) { for (int iLoop2 = iMaxToSecond; iLoop2 >= 0; --iLoop2) pCallback(iLoop1, iLoop2); } } public static void ForInverseToDouble(int iMaxToFirst, int iMaxToSecond, Func pCallback) { for (int iLoop1 = iMaxToFirst; iLoop1 >= 0; --iLoop1) { for (int iLoop2 = iMaxToSecond; iLoop2 >= 0; --iLoop2) { if (true == pCallback(iLoop1, iLoop2)) return; } } }


[출처] 이상호

Posted by blueasa

댓글을 달아 주세요