가장 상단에 using을 통해 외부 라이브러리(dll)를 import 가능
- 익명함수 처럼 영역을 정의할 때만 사용하고 그 영역을 벗어나면 dispose됨
- file , DB의 경우 리소스를 획득하면 다시 닫아주는 작업이 필요한데 닫는 작업은 using 바운더리를 벗어나면 자동 리소스 종료되므로 코드가 간결해짐
using(SqlConnection con = new SqlConnection(conString))
{
SqlCommand command = new SqlCommand(queryString , con);
command.Connection.Open();
command.ExecuteNonQuery();
}
Java의 try-with-resources와 비슷함, 닫는 작업을 별도로 해주지 않아도 됨
Java의 패키지처럼 해당 클래스가 어떤 위치에 있는지 지정
for(int i=0 ; i<5 ; i++){
Console.WriteLine(i);
}
foreach(int i in list){
Console.WriteLine(i);
}
string? name = kim;
int? age = 23;
double? grade = 4.5;
public record Address(string JibunAddress, string RoadNameAddress, string ZipCode);
var address1 = new Address("행복동 173-3", "행복로 23", "12345");
var address2 = new Address("낭만동 283-3", "낭만로 94", "67891");
string.IsNullOfEmpty(str1)
- Java의 default 접근제어자랑 비슷함, 아무 접근 제어자도 선언 안 하면 default
- 같은 패키지 내에서만 접근 가능한 접근 제어자
Java의 abstract와 비슷하게 해당 키워드가 선언된 메서드를 자식에서 재정의할 수 있는데 필수적으로 재정의할 필요는 없음, 또한 객체 생성도 가능 즉 러프한 추상 메서드
public class Animal{
public virtual void cry(){
Console.WriteLine("crying!!");
}
}
public class Dog : Animal{
public override void cry(){
Console.WriteLine("bark!!");
}
}
Java의 abstract와 동일
public abstract class Animal{
public abstract void cry();
}
public class Dog : Animal{
public override void cry(){
Console.WriteLine("bark!!");
}
}