Monthly Archives: October 2009
C# Generic Class vs. C++ Template Class
C#
http://msdn.microsoft.com/en-us/library/sz6zd40f(VS.80).aspx
C++ Standard Template Library
http://dis.dankook.ac.kr/lectures/hci07/entry/lecture2-template
FileIO
FileIO
http://support.microsoft.com/kb/304430
-한글 텍스트파일 읽기와 쓰기
-csv 파일 Parse 하기1159547285.cs
ArrayList
ArrayList예제 참고자료: http://dotnetperls.com/arraylist
ArrayList pArray = new ArrayList();
pArray.Add(person1);
pArray.Add(student1);
pArray.Add(faculty1);
// 마지막으로 입력된 데이터로 모든 데이터값이 치환됨
Person p = new Person();
for (int i = 0; i < 5; i++) {
p.Name = Console.ReadLine(); // 입력정보
p.ID = int.Parse(Console.ReadLine()); // 입력정보
p.Phone = Console.ReadLine(); // 입력정보
p.Address = Console.ReadLine(); // 입력정보
pArray.Add(p); // 리스트에 들어간 모든 원소는 동일한 p
}
// 각자 다르게 입력된 정보가 들어가게 됨
for (int i = 0; i < 5; i++) {
Person p = new Person();
p.Name = Console.ReadLine(); // 입력정보
p.ID = int.Parse(Console.ReadLine()); // 입력정보
p.Phone = Console.ReadLine(); // 입력정보
p.Address = Console.ReadLine(); // 입력정보
pArray.Add(p); // 이때 p는 새로운 Person객체
}
foreach (Object pt in pArray)
{
if (pt is Person)
{
((Person)pt).Print();
}
if (pt is Student)
{
((Student)pt).Print();
}
if (pt is Faculty)
{
((Faculty)pt).Print();
}
}
// 아래와 같이 pArray 원소를 Person형으로 받아서 처리할 경우 pt.Print()만 호출하면
// 복잡한 형변환 과정이 필요없이 객체 형에 따라서 재정의된 메소드가 자동호출
foreach (Person pt in pArray)
{
pt.Print();
}
C# Formatting Numeric String
Formatting Standard Numeric Format Strings
http://msdn.microsoft.com/en-us/library/s8s7t687(VS.80).aspx
Formatting Custom Numeric Format Strings
http://msdn.microsoft.com/en-us/library/0c899ak8.aspx
Formatting Numeric Format Strings (Alignment)
Integer http://www.csharp-examples.net/string-format-int/
Double http://www.csharp-examples.net/string-format-double/
DateTime http://www.csharp-examples.net/string-format-datetime/
Align String with Spaces http://www.csharp-examples.net/align-string-with-spaces/
Indent String with Spaces http://www.csharp-examples.net/indent-string-with-spaces/
IFormatProvider http://www.csharp-examples.net/iformatprovider-numbers/
Custom IFormatProvider http://www.csharp-examples.net/custom-iformatprovider/
Character | Description | Examples | Output |
C or c | Currency | Console.Write(“{0:C}”, 2.5); | $2.50 |
Console.Write(“{0:C}”, -2.5); | ($2.50) | ||
D or d | Decimal | Console.Write(“{0:D5}”, 25); | 25 |
E or e | Scientific | Console.Write(“{0:E}”, 250000); | 2.50E+05 |
F or f | Fixed-point | Console.Write(“{0:F2}”, 25); | 25 |
Console.Write(“{0:F0}”, 25); | 25 | ||
G or g | General | Console.Write(“{0:G}”, 2.5); | 2.5 |
N or n | Number | Console.Write(“{0:N}”, 2500000); | 2,500,000.00 |
X or x | Hexadecimal | Console.Write(“{0:X}”, 250); | FA |
Console.Write(“{0:X}”, 0xffff); | FFFF |
TryParse
{
Console.Write(“국어 점수를 입력하세요(0~100) : “);
string str = Console.ReadLine();
value = int.TryParse(str, out s.kor);
if (value == false || s.kor < 0 || s.kor > 100) {
Console.WriteLine(“범위에 벗어난 점수를 입력하셨습니다”);
continue;
}
else {
Console.WriteLine(“국어성적 : {0}”, s.kor);
break;
}
}
HW1에서 국어,영어,수학을 입력받는 부분에서 위의 유형이 가장 대표적이였다.
그러나 while을 사용하여 아래의 코드와 같이 간단히 구현할 수 있다.
int value; // needed for TryParse
string str; // needed for ReadLine
Console.Write(“국어성적을 입력하세요(0-100): “);
str = Console.ReadLine();
while ((!int.TryParse(str, out value))||(value<0 || value>100))
{
Console.Write(“다시 국어성적을 입력하세요 (0-100): “);
str = Console.ReadLine();
}
s.kor = int.Parse(str);
Generic List Class
<<List<T> 컬랙션 클래스의 메소드>>
public List<TOutput> ConvertAll<TOutput> (Converter<T, TOutput> converter)
-리스트 객체의 각 원소를 TOutput 형으로 변환하여 리스트로 반환
public bool Exists(Predicate<T> match)
-리스트에 있는 모든 원소 중 match 조건을 만족하는 원소가 있는지 여부를 반환
public T Find(Predicate<T> match)
-리스트에 있는 모든 원소 중 match 조건을 만족하는 첫번째 원소를 반환
public List<T> FindAll(Predicate<T> match)
-리스트에 있는 모든 원소 중 match 조건을 만족하는 모든 원소를 리스트로 반환
public int FindIndex(Predicate<T> match)
-리스트에 있는 모든 원소 중 match 조건을 만족하는 첫번째 원소의 인덱스를 반환
public int FindLastIndex(Predicate<T> match)
-리스트에 있는 모든 원소 중 match 조건을 만족하는 마지막 원소의 인덱스를 반환
public void ForEach(Action<T> action)
-리스트에 있는 모든 원소에 대해 action을 수행
public bool TrueForAll(Predicate<T> match)
-리스트에 있는 모든 원소가 match 조건을 만족하는 지 여부를 반환
<<대리자(Delegate)>>
public delegate void Action<T>(T object)
-T 형의 매개변수를 하나 받고 반환값이 없는 메소드
public delegate TOutput Converter<TInput, TOutput>(TInput input)
-TInput 형의 매개변수를 받고 이를 TOutput 형으로 변환하여 반환하는 메소드
public delegate bool Predicate<T>(T object)
-T 형의 매개변수를 받아 그것이 특정 조건을 만족하는지를 반환하는 메소드
public delegate int Comparison<T>(T x, T y)
-x, y 두 객체를 비교하는 메소드로 x가 y보다 작으면 음수, 같으면 0, 크면 양수를 반환하는 메소드