21. 논리 연산자
using System;
namespace A021
{
class Program
{
static void Main(string[] args)
{
bool result;
int first = 10, second = 20;
result = (first == second) || (first > 5);
Console.WriteLine(result);
result = (first == second) && (first > 5);
Console.WriteLine(result);
result = (first == second) ^ (first > 5);
Console.WriteLine(result);
result = !(first > 5);
Console.WriteLine(result);
}
}
}
결과
True
False
True
False
코딩에 사용되는 논리 연산자를 사용해보는 코드이다
배타적 or(^)은 처음 보는데, 필요할때 사용하면 코드가 최적화 될 것 같다
22. 비트 연산자
using System;
namespace A022
{
class Program
{
static void Main(string[] args)
{
int x = 14, y = 11, result;
result = x | y;
Console.WriteLine(result);
result = x & y;
Console.WriteLine(result);
result = x ^ y;
Console.WriteLine(result);
result = ~x;
Console.WriteLine(result);
result = x << 2;
Console.WriteLine(result);
result = x >> 1;
Console.WriteLine(result);
}
}
}
결과
15
10
5
-15
56
7
비트 연산, 즉 0과 1로 쪼갠 값들을 and, or 같은 논리 연산을 하는 것이다.
근데 왜 쓰는지는 모르겠다...?
~ = not
& = and
| = or
^ = xor
<< = left shift
>> = right shift
유니티에서는 layer나 이런 key value가 비트로 되어 있다는? 이야기가 있다
이전에는 키보드 입력을 이런 비트 연산으로 했다는 이야기도??
23. 조건 연산자 ? :
using System;
namespace A023
{
class Program
{
static void Main(string[] args)
{
int input = Convert.ToInt32(Console.ReadLine());
string result = (input > 0) ? "양수" : "음수";
Console.WriteLine(result);
}
}
}
결과
5
양수
3항 연산자 코드이다. 여기서는 조건 연산자라고 하는 것 같다
24. 증가연산자, 감소연산자와 대입연산자의 압축
using System;
namespace A024
{
class Program
{
static void Main(string[] args)
{
int x = 32;
Console.WriteLine(x += 2);
Console.WriteLine(x -= 2);
Console.WriteLine(x++);
Console.WriteLine(--x);
}
}
}
결과
34
32
32
32
그냥 연산자= 의 복합 대입 연산자 코드이다. 이미 아는 이야기...
25. String class
using System;
namespace A025
{
class Program
{
static void Main(string[] args)
{
String s = " Hello, World! ";
string t;
Console.WriteLine(s.Length);
Console.WriteLine(s[8]);
Console.WriteLine(s.Insert(8, "C# "));
Console.WriteLine(s.PadLeft(20, '.'));
Console.WriteLine(s.PadRight(20, '.'));
Console.WriteLine(s.Remove(6));
Console.WriteLine(s.Remove(6, 7));
Console.WriteLine(s.Replace('1', 'm'));
Console.WriteLine(s.ToLower());
Console.WriteLine(s.ToUpper());
Console.WriteLine('/' + s.Trim() + '/');
Console.WriteLine('/' + s.TrimStart() + '/');
Console.WriteLine('/' + s.TrimEnd() + '/');
string[] a = s.Split(',');
foreach(var i in a)
Console.WriteLine('/' + i + '/');
char[] destination = new char[10];
s.CopyTo(8, destination, 0, 6);
Console.WriteLine(destination);
Console.WriteLine('/' + s.Substring(8) + '/');
Console.WriteLine('/' + s.Substring(8, 5) + '/');
Console.WriteLine(s.Contains("11"));
Console.WriteLine(s.IndexOf('o'));
Console.WriteLine(s.LastIndexOf('o'));
Console.WriteLine(s.CompareTo("abc"));
Console.WriteLine(String.Concat("hi~", s));
Console.WriteLine(String.Compare("abc", s));
Console.WriteLine(t = String.Copy(s));
string[] val = { "apple", "orenge", "grape", "pear" };
String result = String.Join(", ", val);
Console.WriteLine(result);
}
}
}
결과
15
W
Hello, C# World!
..... Hello, World!
Hello, World! .....
Hello
Hello!
Hello, World!
hello, world!
HELLO, WORLD!
/Hello, World!/
/Hello, World! /
/ Hello, World!/
/ Hello/
/ World! /
World!
/World! /
/World/
False
5
9
-1
hi~ Hello, World!
1
Hello, World!
apple, orenge, grape, pear
이 부분에서 처음 알았다. Int32나 int나 같은거다...
어쨋든, C#에서 사용되는 string 메소드를 확인해보는 코드이다.
꽤나 의미가 많은 코드인데, 유니티에서도 많이 사용되며, 유용하게 사용되기 때문이다.
특히 Trim, index(?)같은 부분이 많이 사용될 것 같다
26. String.Split() 메소드를 사용한 문자열 구문 분석
using System;
namespace A026
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("더하고자 하는 숫자들을 입력하세요: ");
string s = Console.ReadLine();
Console.WriteLine(s);
int sum = 0;
string[] v = s.Split();
foreach (var i in v)
{
sum += int.Parse(i);
}
Console.WriteLine(sum);
}
}
}
결과
더하고자 하는 숫자들을 입력하세요:
1 2 3 4 5
1 2 3 4 5
15
string에서 사용되는 split에 대한 코드이다
작성자의 경우 유니티에서 txt를 가져올때 많이 사용했다
27. 문자열을 연결하는 네 가지 방법
using System;
namespace A027
{
class Program
{
static void Main(string[] args)
{
string userName = "bikang";
string date = DateTime.Today.ToShortDateString();
string strPlus = "Hello " + userName + ". Today is " + date + ".";
Console.WriteLine(strPlus);
string strFormat = String.Format($"Hello {userName}. Today is {date}");
Console.WriteLine(strFormat);
string strInterpolation = $"Hello {userName}. Today is {date}";
Console.WriteLine(strInterpolation);
string strConcat = String.Concat("Hello ", userName, ". Today is ", date, ".");
Console.WriteLine(strConcat);
string[] animals = { "a", "b", "c", "d" };
string s = String.Concat(animals);
Console.WriteLine(s);
s = String.Join(", ", animals);
Console.WriteLine(s);
}
}
}
결과
Hello bikang. Today is 2024-08-22.
Hello bikang. Today is 2024-08-22
Hello bikang. Today is 2024-08-22
Hello bikang. Today is 2024-08-22.
abcd
a, b, c, d
C#에서 문자열을 합치는 여러가지 방법에 대해서 논하는 코드이다
Join의 특성이 눈에 돋보인다고 생각한다
28. 문자열의 검색
using System;
namespace A028
{
class Program
{
static void Main(string[] args)
{
string s1 = "mouse, cow, tiger, rabbit, dragom";
string s2 = "cow";
bool b = s1.Contains(s2);
Console.WriteLine(b);
if(b)
{
int index = s1.IndexOf(s2);
if(index >= 0)
{
Console.WriteLine($"{s2} begins at index{index}");
}
}
if(s1.IndexOf(s2, StringComparison.CurrentCultureIgnoreCase) >= 0)
{
Console.WriteLine($"{s2} is in the string {s1}");
}
}
}
}
결과
True
cow begins at index7
cow is in the string mouse, cow, tiger, rabbit, dragom
문자열 속에 특정 문자가 있는지 확인하는 방법에 대한 코드이다
29. String.Format의 날짜와 시간 형식 지정
using System;
namespace A029
{
class Program
{
static void Main(string[] args)
{
string max = String.Format("0x{0:X} {0:E} {0:N}", Int64.MaxValue);
Console.WriteLine(max);
Decimal exchangeRate = 1129.20m;
string s = String.Format($"현재 원달러 환율은 {exchangeRate}입니다.");
Console.WriteLine(s);
s = String.Format($"현재 원달러 환율은 {exchangeRate:C2}입니다.");
Console.WriteLine(s);
s = String.Format($"오늘 날짜는 {DateTime.Now:d}, 시간은 {DateTime.Now:t} 입니다.");
Console.WriteLine(s);
TimeSpan duration = new TimeSpan(1, 12, 23, 62);
string output = $"소요시간: {duration:c}";
Console.WriteLine(output);
}
}
}
결과
0x7FFFFFFFFFFFFFFF 9.223372E+018 9,223,372,036,854,775,807.00
현재 원달러 환율은 1129.20입니다.
현재 원달러 환율은 \1,129.20입니다.
오늘 날짜는 2024-08-22, 시간은 오후 2:34 입니다.
소요시간: 1.12:24:02
string에 날짜나 시간을 담는 방식에 대한 코드이다
30. 그룹 분리자를 넣는 방법
using System;
namespace A030
{
class Program
{
static void Main(string[] args)
{
while (true)
{
Console.Write("표시 숫자: ");
string s = Console.ReadLine();
double v = double.Parse(s);
if(v == -1)
break;
Console.WriteLine(Number(s));
}
}
private static string Number(string s)
{
int pos = 0;
double v = Double.Parse(s);
if (s.Contains("."))
{
pos = s.Length - s.IndexOf('.');
string formatStr = "{0:N" + (pos - 1) + "}";
s = string.Format(formatStr, v);
}
else
s = string.Format("{0:N0}", v);
return s;
}
}
}
결과
표시 숫자: 1234.56
1,234.56
표시 숫자: 1234567.89
1,234,567.89
표시 숫자: -1
사용자에게 받은 값을 천단위로 자르는 기능을 소수점을 살리면서 표시하는 코드
if (s.Contains("."))
{
pos = s.Length - s.IndexOf('.');
string formatStr = "{0:N" + (pos - 1) + "}";
s = string.Format(formatStr, v);
}
이부분이 핵심인데, formatStr가 겉보기에는 이상하지만, s에서 조립된걸 보면
pos가 4일시 s는 "{0:N3}, v"가 들어가게 된다
이딴게 왜 되는걸까
'공부 > C#' 카테고리의 다른 글
C# 공부(5) 51~56 (Part 1 End) (0) | 2024.08.24 |
---|---|
C# 공부(4) 41~50 (0) | 2024.08.24 |
C# 공부(3) 31~40 (0) | 2024.08.23 |
C# 공부(2) 11~20 (0) | 2024.08.21 |
C# 공부(1) 1~10 (1) | 2024.08.21 |