type[] variableName
= new type[N]
= { data1, data2, ... }
= new [N] { data1, data2, ..., dataN } // 개수가 일치해야 함
System.Array 상속
IndexOutOfRangeException 발생할 수 있음
type[,] variable
= a[N, M]
= a[N][M] // 가변배열 가능, 가변배열 시 M 없음
heap에 잡히는 가변배열의 크기는 아마 N * M이 아닐까?
Random r = new Random();
r.Next();
r.Next(N);
r.Next(N, M);
r.NextDouble();
r.NextBytes(array); // 배열 전체를 채워줌, 0 ~ 255
Person p;
Person q = p;
Class는 Reference type, Struct는 Value type
Person이 class라면 q와 p는 같은 객체를 가리킴
Person이 struct이라면 q와 p는 다른 객체
p가 new로 생성된 struct 객체라도 q와 p는 다른 객체
c#의 const는 bool, int, double같은 기본형만 사용 가능
class, struct, array는 const선언 불가능
대신 readonly를 사용해야 할 듯
static처럼 ClassName.VariableName으로 접근
const field는 compile time에 결정되므로 실제로 literal하게 판정된다. static으로 생각해도 큰 문제는 없을 듯
그래서 아마 Data 영역에 저장될 것으로 생각됨
C++의 const variable의 역할은 readonly가 담당
Getter(), Setter()를 손쉽게 생성 가능
get, set, value를 키워드로 사용
class RectWithProp
{
public double Width { get; set; }
public double Height { get; set; }
}
class RectWithPropFull
{
private double width;
public double Width
{
get { return width; }
set { if(value >= 0) width = value; }
}
private double height;
public double Height
{
get { return height; }
set { if(value >= 0) height = value; }
}
}
visual studio에서는 prop, propfull을 통해 빠르게 생성 가능
Expression Body Definition을 이용해 함수 정의 가능
Property는 뒤에 ()가 없는 함수로 생각하면 될 듯. 꼭 변수와 이름을 일치시킬 필요도 없음. 예제에서 일반 변수처럼 접근한 것들이 전부 Property를 통해 접근하는 방식이었음
DateTime.Add(TimeSpan)
DateTime.ToLocalTime()
DateTime.ToUniversalTime()
DateTime.Compare()
DateTime.CompareTo()
DateTime.Equals()
DateTime.Today // 오늘 정시를 나타내는 Property
DateTime.Now // 지금을 나타내는 Property
DateTime.ToString(string DateTimeFormat)
String.Format(string DateTimeFormat, DateTime)
서기 1년 1월 1일 자정부터 tick(100 nano, 0.1ms) 계산
TimeSpan : 시간 간격을 나타내는 데이터
국가별 다른 날짜, Locale에 따른 출력
표준 형식 지정자를 사용할 수도 있음
지역별 언어, 특정 문화권 정보
생성자, CultureInfo.CreateSpecificCulture(string)을 통해 생성
value, ref, out keyword를 통해 전달
사용 시 ref, out 명시 필수
params keyword 사용
가변길이 사용 시 추가 매개변수 불가능
array로 접근
Object type으로 매개변수를 받으면 모두 받을 수 있을거라 생각했지만 그냥 Object Array type 매개변수 1개로 판단
선택적 인수 : 매개변수 값 미리 지정
명명된 인수 : 매개변수를 지정