https://msdn.microsoft.com/en-us/library/yz2be5wk.aspx
int i = 123;
object o = i; // boxing (값 형식 -> 참조 형식)
int j = (int) o; // unboxing (참조 형식 -> 값 형식)
Just another Kyoung Shin Park's Lectures Sites site
https://msdn.microsoft.com/en-us/library/yz2be5wk.aspx
int i = 123;
object o = i; // boxing (값 형식 -> 참조 형식)
int j = (int) o; // unboxing (참조 형식 -> 값 형식)
과목코드 : 300890
강사 : 박경신
날짜: 2016년 9월 12 일
– 실습번호 : HW1 (Due by 9/26)
– 실습제목 : enum, if/switch, do/while, for, read/write, nullable
– 실습요약 : 도형의 겉넓이와 부피 구하기 (SurfaceAreaVolumeCalculator)
– 준비자료 :
http://math.about.com/od/formulas/ss/surfaceareavol.htm
– 실습문제
+ 예시: 선택한 도형 (e.g. SPHERE/CONE), 그에 따른 추가적인 입력을 받음. (e.g., 구의 반지름/radius, 원뿔의 반지름/radius와 높이/height)
+ while 문을 사용하여 잘못된 입력일 경우, 다시 사용자 입력을 받음.
+for(int i=1; i<=10; i++)를 사용하여 크기에 따른 각 도형의 넓이를 표로 출력함.
Enum.GetValues method returns an array that contains a value for each member of the enumType enumeration.
https://msdn.microsoft.com/en-us/library/system.enum.getvalues(v=vs.110).aspx
enum Gender { Male=100, Female=200 };
// PrintAllGender()는 Male=100, Female=200 출력
public void PrintAllGender ()
{
foreach (Gender g in Gender.GetValues(typeof(Gender)))
{
Console.WriteLine(“{0}={1}”, g, (int)g);
}
}
// PrintByGender(..) 는 Male이면 남자, Female이면 여자 출력
public void PrintByGender (Gender g)
{
switch (g)
{
case Gender.Male:
Console.WriteLine(“남자”);
break;
case Gender.Female:
Console.WriteLine(“여자”);
break;
default:
Console.WriteLine(“중성자??”);
break;
}
}
static Tuple<int, int> GetDivideQuotientRemainder(int a, int b)
{
return new Tuple<int, int>((a / b), (a % b));
}
static KeyValuePair<int, int> GetDivideQuotientRemainder2(int a, int b)
{
return new KeyValuePair<int, int>((a / b), (a % b));
}
static void GetDivideQuotientRemainder3(int a, int b, out int q, out int r)
{
q = (a / b);
r = (a % b);
}
static void Main(string[] args)
{
var value = GetDivideQuotientRemainder(23, 4);
Console.WriteLine(“q = {0} r = {1}”, value.Item1, value.Item2);
var value2 = GetDivideQuotientRemainder2(23, 4);
Console.WriteLine(“q = {0} r = {1}”, value2.Key, value2.Value);
int q = 0;
int r = 0;
GetDivideQuotientRemainder3(23, 4, out q, out r);
Console.WriteLine(“q = {0} r = {1}”, q, r);
}
튜플은 여러 개의 멤버를 가지는 데이터 구조임 (멤버는 8개까지 가능).
C++의 std::pair 형식과 비슷함.
C#의 KeyValuePair<Tkey, TValue>는 struct 이고, Tuple은 class 임.
var p = new Tuple<string, int>(“HCI”, 2015);
// Item1, Item2, …, Item7, Rest (the final property)
Console.WriteLine(“p={0} {1}”, p.Item1, p.Item2);
// Create() factory method can construct from a 1-tuple to an 8-tuple
var p1 = new Tuple<int, string, double>(1, “hello”, 3.14);
var p2 = Tuple.Create(2, “hci”, 0.001); // Tuple<int, string, double>
// For higher than 8 items, use nested tuple
var p3 = new Tuple<int, int, int, int, int, int, int, Tuple<int, int>>(1, 2, 3, 4, 5, 6, 7, Tuple.Create(8, 9));
Console.WriteLine(“8th={0} 9th={1}”, p3.Rest.Item1, p3.Rest.Item2);
// Use tuple for method return
Tuple<int, int>GetDivideQuotientRemainder(int a, int b)
{
return new Tuple<int, int>( (a/b), (a%b));
}
var value = GetDivideQuotientRemainder(23, 4)
Console.WriteLine(“q={0} r={1}”, value.Item1, value.Item2);
Arithmetic Operator ArithmeticOperator.cs
Temperature Converter TemperatureConverter.cs
Break Statement vs. Continue Statement BreakContinueTest.cs
Recursive Method RecursiveMethodTest.cs
http://www.codeproject.com/KB/cs/AgileWare_Convert_Int32.aspx
Convert.ToInt32(string s)는 내부적으로 Int32.Parse(string s)을 불러서 string을 32-bit signed integer로 변환시켜주는 메소드
Int32.Parse(string s)는 strng을 32-bit signed integer로 변환시켜주는 메소드
그러나 만약 s가 null일 경우 ArgumentNullException을 냄
또한 s가 integer가 아닐 경우 FormatException을 냄
또한 s가 integer의 MinValue또는 MaxVale를 넘칠 경우 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을 반환
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/