string + operator vs integer + operator

// String + operator

string str = “123”;
Console.WriteLine(“str={0}”, str + 70); // 12370
Console.WriteLine(“str={0}”, str + “70”); // 12370

// Int + operator

int i = 123;
Console.WriteLine(“i={0}”, i + 70); // 193
Console.WriteLine(“i={0}”, i + 70.50); // 193.50 

ESCAPE 키가 눌린게 아니면 프로그램이 계속 실행되기

static double Add(double a, double b)
{

return (a + b);

}

static void Main(string[] args)
{

do
{

Console.Write(“a를 입력하세요: “);

string str = Console.ReadLine();
double a;
bool result = double.TryParse(str, out a);

Console.Write(“b를 입력하세요: “);
str = Console.ReadLine();
double b;
result = double.TryParse(str, out b);

double c = Add(a, b);
Console.WriteLine(“결과는 {0}”, c);

Console.WriteLine(“다시 하려면 ENTER 키를 누르시고 종료하려면 ESC 키를 누르세요”);


} while (Console.ReadKey().Key != ConsoleKey.Escape);

}

0부터 100까지 숫자만 입력받기

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();

}
int result = int.Parse(str);
Console.WriteLine(“입력된 숫자=” + result);

int => string vs string => int

// integer => string type conversion
int i = 10;                    // 10
string j = i.ToString(); // “10”
// string => integer type conversion
string x = “123”;          // “123”
int y = Convert.ToInt32(x); // 123 (integer로 변환이 가능한 경우만 변환 가능 그 외엔 run-time exception error)
int z = Int32.Parse(x); // 123 (integer로 변환이 가능한 경우만 변환 가능 그 외엔 run-time exception error)
int w;
bool success = Int32.TryParse(x, out w); // 123 (integer로 변환이 가능한 경우만 변환 가능 그 외엔 w=0)

Convert.ToInt32() vs Int32.Parse() vs Int32.TryParse()

http://www.codeproject.com/KB/cs/AgileWare_Convert_Int32.aspx

Convert.ToInt32(string s)는 내부적으로 Int32.Parse(string s)을 불러서 string을 32-bit signed integer로 변환시켜주는 메소드

string s1 = 1234″;
string s2 = 1234.65″;
string s3 = null;
string s4 = 123456789123456789123456789123456789123456789″; 
intresult;
bool success; result = Convert.ToInt32(s1); //— 1234
result = Convert.ToInt32(s2); //— FormatException 
result = Convert.ToInt32(s3); //— 0 
result = Convert.ToInt32(s4); //— OverflowException

Int32.Parse(string s)는 strng을 32-bit signed integer로 변환시켜주는 메소드
그러나 만약 s가 null일 경우 ArgumentNullException을 냄
또한 s가 integer가 아닐 경우 FormatException을 냄
또한 s가 integer의 MinValue또는 MaxVale를 넘칠 경우 OverflowException을 냄

result = Int32.Parse(s1); //— 1234 
result = Int32.Parse(s2); //— FormatException 
result = Int32.Parse(s3); //— ArgumentNullException 
result = Int32.Parse(s4); //— OverflowException



Int32.TryParse(string s, out int i)는 string을 32-bit signed integer로 변환하여 out 에 보내주는 메소드로 성공하면 true를 반환
따라서 만약 s가 null일 경우 ArgumentNullException을 내지않고 false와 out으로 0을 반환
또한 s가 integer가 아닐 경우 FormatException을 내지않고 false와 out으로 0을 반환
또한 s가 integer의 MinValue또는 MaxVale를 넘칠 경우 OverflowException을 내지않고 false와 out으로 0을 반환

success = Int32.TryParse(s1, out result); //— success => true; result => 1234 
success = Int32.TryParse(s2, out result); //— success => false; result => 0 
success = Int32.TryParse(s3, out result); //— success => false; result => 0 
success = Int32.TryParse(s4, out result); //— success => false; result => 0

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/

String.Substring Method

http://msdn.microsoft.com/ko-kr/library/system.string.aspx

Substring(Int32) 이 인스턴스에서 부분 문자열을 검색합니다. 부분 문자열은 지정된 문자 위치에서 시작됩니다.
Substring(Int32, Int32) 이 인스턴스에서 부분 문자열을 검색합니다. 부분 문자열은 지정된 문자 위치에서 시작하고 길이도 지정되어 있습니다.

string str = “Hi, Welcome to HCI Programming II! Hi”;
Console.WriteLine(“str의 substring(3) {0}”, str.Substring(3)); // ” Welcome to HCI Programming II! Hi” 3번째 위치에서 떼어냄

Console.WriteLine(“str의 substring(14, 20) {0}”, str.Substring(14,20)); // ” HCI Programming II!” 14번째 위치에서부터 20개 만큼 떼어냄

C# Struct

C++에서는 struct와 class간에 차이가 거의 없으며, 차이점은 아무런 명시를 하지 않았을 때 class는 멤버가 private 권한을 가지고, struct는 멤버가 public 권한을 가진다.

C#에서는 struct와 class가 유사하나 매우 다른 특징을 가진다.
-C# struct는 Value Type (값 형식)으로, 즉 stack영역에 데이터를 생성해서 사용함
-C# struct는 Default Constructor (기본생성자)나 Destructor(소멸자)선언할 수 없음
-C# struct는 다른 struct/class를 상속받을 수 없으며 파생시킬수도 없음 (따라서, protected는 선언할 수 없음)
-C# struct는 interface를 구현할 수 있음
-C# struct는 nullable type으로 사용할 수 있음
-C# struct는 일반적으로 new를 사용해서 객체를 생성하나 (예: Person p = new Person();),
stack영역에 데이터를 생성해서 사용함

public struct Point
{
int x = 1; //Illegal: cannot initialize field
int y;

public Point() { } //Illegal: cannot have parameterless constructor
public Point(int x) { this.x = x; } //Illegal: must assign field y
}
http://www.codeproject.com/Articles/8612/Structs-in-C