인텔리센스와 코드 조각
코드 편집기에서 제공하는 기능 중 인텔리센스는 자동으로 코드를 입력하게 도와주고 가이드해줌
비주얼 스튜디오에서 Ctrl + Space를 누르면 명령어 관련 가이드를 받아볼 수 있음
cla를 입혁한 후 Tab을 두 번 누르거나 class를 입력한 후 Tab을 두 번 누르면 자동으로 클래스 코드 작성
인텔리코드란?
인텔리센스 기능에서 가장 많이 사용하는 API는 별표로 표기되는데, 이를 인텔리코드라고 함
자리 표시자 주요 서식
- D : 십진수 표시
- X : 16진수 표시
- C : 통화량 표시
- E : 부동소수점(지수) 표시
- F : 부동소수점(기본) 표시
- G : 부동소수점(E, F와 비슷) 표시
- N : 콤마 구분 표시
using System;
class PlaceHolderEtc
{
static void Main()
{
Console.WriteLine("자리" + "표시자");
Console.WriteLine("{0} {1} {2}", "안녕", "방가", "또봐");
Console.WriteLine("{0} {1} {0}", "안녕", "또봐");
Console.WriteLine("[{0,-10:C}]", 1234);// 왼쪽 원 표시
Console.WriteLine("{0,10}", 1234); // 10칸 잡고 오른쪽 정렬
Console.WriteLine("{0,-10}", 1234); // 10칸 잡고 왼쪽 정렬
Console.WriteLine("{0,10:D}", 16); // 10진수: 16
Console.WriteLine("{0,10:X}", 16); // 16진수: 10
Console.WriteLine("{0,10:N}", 1234); // 콤마구분: 1,234.00
Console.WriteLine("{0,10:C}", 1234); // 통화량: \1,234
Console.WriteLine("{0,10:E}", 1234.5678); // 1.234568E+003
Console.WriteLine("{0,10:F}", 1234.5678); // 1234.57
Console.WriteLine("{0,10:G}", 1234.5678); // 1234.5678
}
}
checked와 unchecked
산술 연산 구문을 checked {} 구문으로 묶어 주면 오버플로 오류가 생기지 않게 알려주는 오류를 발생시킬 수 있음
using System;
public class HelloWorld
{
public static void Main(string[] args)
{
byte b = 255;
checked
{
b++;
}
}
}
반대로 unchecked는 오버플로 예외를 발생시키지 않음
전처리기 지시문과 조건부 컴파일
#define, #if, #else, #endif 등을 사용하여 조건부 컴파일 가능
#define YES // #define NO
using System;
class DefineDemo
{
static void Main()
{
#if YES
// #define YES가 정의되어 있으면 현재 구문 실행
Console.WriteLine("YES");
#else
Console.WriteLine("NO");
#endif
}
}
C# 코드 외부에서 컴파일러 설정 값으로 들어오는 조건에 따라 다르게 컴파일할 때 사용 가능
암호화 연습 : 초간단 문자열 인코딩 및 디코딩
String을 Byte로 변경하는 것을 인코드(encode)
Byte를 String으로 변경하는 것을 디코드(decode)
Base64 방식을 사용하면 문자열을 암호화 가능
//[!] 초간단 문자열 인코딩 및 디코딩
using System;
namespace StringConverterDemo
{
/// <summary>
/// 문자열 변환기
/// </summary>
public class StringConverter
{
/// <summary>
/// 초간단 문자열 인코딩
/// </summary>
public static string ConvertToSimpleEncoding(string original)
{
byte[] byt = System.Text.Encoding.UTF8.GetBytes(original);
return System.Convert.ToBase64String(byt); // 암호화
}
/// <summary>
/// 초간단 문자열 디코딩
/// </summary>
public static string ConvertToSimpleDecoding(string modified)
{
byte[] byt = System.Convert.FromBase64String(modified);
return System.Text.Encoding.UTF8.GetString(byt); // 복호화
}
}
class StringConverterDemo
{
static void Main()
{
string s = "안녕하세요.";
Console.WriteLine("[1] 원본: {0}", s);
s = StringConverter.ConvertToSimpleEncoding(s); // 인코딩
Console.WriteLine("[2] 인코딩: {0}", s);
s = StringConverter.ConvertToSimpleDecoding(s); // 디코딩
Console.WriteLine("[3] 디코딩: {0}", s);
}
}
}
C#에서 이메일 보내기
C# 고유의 기능이라기보다는 이메일 서버의 SMTP 서비스를 닷넷에서 사용하는 외부 서비스 개념
그렇기에 이메일을 전송하는 방법은 정형화되지 않아 여러 가지가 있으며, 다양한 외부 패키지 사용 가능
System.Net.Mail 네임 스페이스
클래스 이름 | 설명 |
SmtpClient | SMTP 메일 서비스를 이용하여 이메일을 전송하는 부분을 담당 |
MailMessage | 이메일의 주요 항목을 구성하는 개체를 생성한 후 SmtpClient 클래스에 전달 |
Attachment | 이메일을 전송할 때 파일 첨부와 관련된 부분을 담당 |
MailAddress | 전송할 이메일 주소를 저장할 개체를 생성 |
C#에서 MS 계정을 사용하여 이메일 보내기
using System.Net;
using System.Net.Mail;
class SendMailTest
{
static void Main()
{
SmtpClient SmtpServer = new SmtpClient("smtp.live.com");
var mail = new MailMessage();
// [1] 보내는 이메일 넣는 곳
mail.From = new MailAddress("youremail@yourdomain");
// [2] 받는 이메일 넣는 곳
mail.To.Add("youremail@yourdomain");
mail.Subject = "메일 보내기 테스트";
mail.IsBodyHtml = true;
string htmlBody;
htmlBody = "안녕하세요. <em>아웃룩</em> 메일 보내기 테스트입니다.";
mail.Body = htmlBody;
SmtpServer.Port = 587;
SmtpServer.UseDefaultCredentials = false;
// [3] outlook.com 이메일 계정 정보
SmtpServer.Credentials =
new NetworkCredential("youremail@yourdomain", "password");
SmtpServer.EnableSsl = true;
SmtpServer.Send(mail);
}
}
'C# > C# 교과서' 카테고리의 다른 글
[C# 교과서] A. 디버거 사용하기 (0) | 2023.02.11 |
---|---|
[C# 교과서] 62. 모던 C# (0) | 2023.02.11 |
[C# 교과서] 61. 함수와 함수형 프로그래밍 소개하기 (0) | 2023.02.11 |
[C# 교과서] 60. 네트워크 프로그래밍 맛보기 (0) | 2023.02.11 |
[C# 교과서] 59. XML과 JSON 맛보기 (0) | 2023.02.11 |