2020. 10. 6. 15:07ใ์ ๊ณต ๊ณผ๋ชฉ/์๋์ฐ ํ๋ก๊ทธ๋๋ฐ
C# - ์ฐ์ฐ์์ ๋ฐ์ฑ
์ฐ์ฐ์์ค์๋ ์ฐ์ ์ฐ์ฐ์, ๊ด๊ณ์ฐ์ฐ์ ๋ฑ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์์ง๋ง, ์ด ์ฅ์์๋ ๋นํธ ์ฐ์ฐ์, ์กฐ๊ฑด ์ฐ์ฐ์, ์ง์ ์ด ์ฐ์ฐ์์ ๋ํด์ ์์๋ณผ ๊ฒ์ด๋ค.
๋นํธ ์ฐ์ฐ์
- ๋นํธ ๋จ์๋ก ์ฐ์ฐ์ ์ํํ๋ ์ฐ์ฐ์
- ํผ์ฐ์ฐ์๋ ๋ฐ๋์ ์ ์ํ
- ์ผ์ชฝ ์ด๋(<<), ์ค๋ฅธ์ชฝ ์ด๋(>>), 1์ ๋ณด์(~)
๋นํธ ์ฐ์ฐ์์๋ ์ฐ์ ์์๊ฐ ์กด์ฌํ๋๋ฐ, ๋ ผ๋ฆฌ๊ณฑ(%), ๋ ผ๋ฆฌํฉ(|), ๋นํธ ๋ฐฐํ์ ๋ ผ๋ฆฌํฉ(^) ์์ผ๋ก ์ฐ์ ์์๊ฐ ๋๋ค.
์ฆ ๋ ผ๋ฆฌ๊ณฑ์ด ์ ์ผ ์ฐ์ ์ ์ํ๋๋ค.
ex)
class BitOperator{
public static void main() {
int x=9, y=3;
Console.WriteLine(x + "&" + y +"=" + (x&y));
Console.WriteLine(x + "^" + y +"=" + (x^y));
Console.WriteLine("~10 = " + (~10));
}
}
๊ฒฐ๊ณผ ๊ฐ :
9&3 = 1
9^3 = 10
~10 = -11
๋นํธ ์ฐ์ฐ์๋ 2๋นํธ๋ก ๋ฐ๊พผ๋ค ๊ณ์ฐํ๊ณ 10์ง์๋ก ์ถ๋ ฅ๊ฐ์ ๋ด๋๋๋ค.
9๋ 1001์ด๊ณ , 3์ 0011์ด๋ค. ์ด์ ๋ ผ๋ฆฌ๊ณฑ(&)์ ํ๋ค๋ฉด 0001์ด ๋๊ณ 10์ง์๋ก ๋ฐ๊พธ๋ฉด 1์ด ๋๋ค.
์กฐ๊ฑด ์ฐ์ฐ์
- if๋ฌธ์ฅ๊ณผ ๊ฐ์ ์ผํญ ์ฐ์ฐ์
- ํํ : max = x > y ? x: y;
x๊ฐ y๋ณด๋ค ํฌ๋ค๋ฉด x๋ฅผ max์ ์ ์ฅํ๊ณ ๊ทธ๋ ์ง ์๋ค๋ฉด y์ ์ ์ฅํ๋ ๋ฐฉ์์ด๋ค.
ex)
class Operator {
public static void main() {
int a, b, c;
int m;
Console.Write("Enter Three number :");
a = Console.Read() - '0';
b = Console.Read() - '0';
c = Console.Read() - '0';
m = (a>b) ? a: b;
m = (m>c) ? m : c;
Console.WriteLine("The largest number = " +m);
}
}
Console.Read()๋ ์ ๋ ฅํจ์์ด๋ค. '0'์ ๋นผ์ฃผ๋ ์ด์ ๋ ์ ๋ ฅ๋ฐ์ ๋ ๋ฌธ์๋ก ์ ๋ ฅ๋ฐ๊ธฐ ๋๋ฌธ์ ์์คํค์ฝ๋๋ผ๋ฆฌ ๋นผ์ค๋ค๋ฉด ์ค์ ์ซ์๊ฐ ๋จ๊ธฐ ๋๋ฌธ์ด๋ค.
์์ ์ผํญ์ฐ์ฐ์๋ฅผ ํตํด m๊ฐ์ด ๊ฐ์ฅ ํฐ ๊ฐ์ด ์ ์ฅ๋ ๊ฒ์ ์ ์ ์๋ค.
์ง์ ์ด ์ฐ์ฐ์
- ์ฐ์ฐ์ ์๋ฏธ๋ฅผ C# ์ง์ ์ด๋ก ๋ํ๋ธ ์ฐ์ฐ์
์ฆ is๋ as๊ฐ์ C#์ง์ ์ด๋ก ๋ํ๋ธ ๊ฒ์ ์๋ฏธํ๋ค.
๋ฐ๋ก ์์ ๋ฅผ ํตํด ํ์ธํด๋ณด์.
ex)
public class Operator{
static void IsOperator(object obj) {
Console.WriteLine(obj + "is int :" + (obj is int));
Console.WriteLine(obj + "is string: " + (obj is string));
}
static void AsOperator(object obj) {
Console.WriteLine(obj + "as string == null :" + (obj as string == null));
}
public static void Main() {
IsOperator(10);
IsOperator("ABC");
AsOpertaor(10);
AsOperator("ABC);
}
}
is๋ as๋ boolํ์ ์ผ๋ก ๋ฆฌํดํด์ค๋ค.
10์ int๊ฐ ๋ง์ผ๋ฏ๋ก True๊ฐ string์ ์๋๋ฏ๋ก False๊ฐ ๋์จ๋ค.
ABC๋ ์์ ๊ฐ์ด int๊ฐ ์๋๋ฏ๋ก False string์ ์๋๋ฏ๋ก True๊ฐ ๋์จ๋ค.
๋ฌธ์ ๋ as์ด๋ค.
10์ stringํด๋์ค ๊ฐ์ฒด๊ฐ ์๋ฌด๊ฒ๋ ์ฐธ์กฐํ๊ณ ์์ง ์๊ธฐ๋๋ฌธ์ nullํ์ ๋ True๊ฐ ๋ง๋ค. 10์ ๋ฌธ์์ด์ด ์๋ ๊ทธ์ "๊ฐ"์ด๊ธฐ ๋๋ฌธ์ด๋ค.
ํ์ง๋ง "ABC"๋ ""๊ฐ ๋ค์ด๊ฐ๋ฏ๋ก ๋ฌธ์์ด์ด ๋๊ณ , ์ด๋ stringํด๋์ค ๊ฐ์ฒด๊ฐ ๋๋ค. ์ฆ null๊ฐ์ด ์๋๊ธฐ ๋๋ฌธ์ False๊ฐ ๋๋ค.
๋ฐ์ฑ๊ณผ ์ธ๋ฐ์ฑ
๋ฐ์ฑ
- ๊ฐํ์ ๋ฐ์ดํฐ๋ฅผ ์ฐธ์กฐํ์ผ๋ก ๋ณํํ๋ ๊ฒ
- ์ปดํ์ผ๋ฌ์ ์ํด ๋ฌต์์ ์ผ๋ก ํํด์ง
์ธ๋ฐ์ฑ
- ์ฐธ์กฐํ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐํ์ผ๋ก ๋ณํํ๋ ๊ฒ
- ๋ฐ๋์ ์บ์คํ ์ ํตํ์ฌ ๋ช ์์ ์ผ๋ก ํํด์ง
- ๋ฐ๋์ ๋ฐ์ฑ๋ ๋ ํ์ผ๋ก ์ธ๋ฐ์ฑ์ ํด์ฃผ์ด์ผ ํจ.
ex)
class Boxing{
public static void Main() {
int foo = 526;
object bar = foo; //๋ฐ์ฑ
Console.WriteLine(bar);
try{
double d = (short)bar; //์๋ ๊ฐํ์ ์๋ฃํ x --> ์ค๋ฅ
Console.WriteLine(d);
}catch (InvalidCastException e) {
Console.WriteLine(e + "Error");
}
}
}
์คํ ๊ฒฐ๊ณผ:
526
System.InvalidCastException:
at Boxing.Main() Error
์ธ๋ฐ์ฑ์ ํ ๋์๋ ๋ฐ์ฑ๋ ๋ ํ์ผ๋ก ์ธ๋ฐ์ฑ์ ํด์ฃผ์ด์ผ ์ ์์ ์ผ๋ก ์ฒ๋ฆฌ๊ฐ ๋๋ค.
'์ ๊ณต ๊ณผ๋ชฉ > ์๋์ฐ ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
C# - ํ์ ํด๋์ค์ ์ธํฐํ์ด์ค (0) | 2020.11.19 |
---|---|
C# - ์ปจํธ๋กค (2) | 2020.10.06 |
C# - ๋ฒํผ๊ธฐ๋ฐ ์ปจํธ๋กค(์ฒดํฌ๋ฐ์ค์ ๋ผ๋์ค) (1) | 2020.09.29 |
C# - ๋ฒํผ๊ธฐ๋ฐ ์ปจํธ๋กค(์ฒดํฌ๋ฐ์ค์ ๋ผ๋์ค) (2) | 2020.09.24 |
C# - ์ธ์ด ๊ตฌ์กฐ (0) | 2020.09.24 |