int vs float
int (정수)
int는 정수를 나타내며, 컴퓨터 메모리에 정확한 정수 값으로 저장.
대부분의 프로그래밍 언어에서 int는 고정된 크기를 가짐.
int는 정수 값에 대한 정확한 표현이 필요한 경우에 사용되며, 오차가 발생하지 않습니다.
float (부동 소수점)
float는 부동 소수점 수를 나타내며, 이진 부동 소수점 형식을 사용하여 숫자를 저장.
부동 소수점 숫자는 가수와 지수로 표현되며, 이로 인해 고정된 범위가 아니라 과학적 기수법(10진법 또는 2진법)으로 수를 나타냄.
float은 더 큰 범위를 표현할 수 있지만, 정밀도 손실과 반올림 오차가 발생할 수 있으며, 따라서 정확성이 떨어질 수 있음.
ref vs out
ref와 out은 C# 프로그래밍 언어에서 매개변수 전달 방식을 지정하는 데 사용되는 키워드.
ref 키워드
'ref' 키워드를 사용하면 메서드에 전달한 변수의 값을 변경하고, 해당 변경 내용이 호출자에게 다시 반환됨.
'ref' 매개변수는 호출자에서 반드시 초기화되어야 함.
이는 메서드가 호출자에게 변경 내용을 반환할 것이므로 초기값이 필요.
예시
void ModifyValue(ref int x) { x = x * 2; } int value = 5; ModifyValue(ref value); // 여기에서 value는 10으로 변경됨.
out 키워드
'out' 키워드를 사용하면 메서드에 전달한 변수를 변경하고, 해당 변수의 초기값이 필요하지 않음.
메서드가 호출될 때 'out' 매개변수는 호출자로부터 초기화되지 않아도 됨.
'out' 매개변수는 메서드에서 변경되고, 해당 변경 내용이 호출자에게 반환.
예시
void InitializeAndSetOut(out int x) { x = 42; } int result; InitializeAndSetOut(out result); // 여기에서 result는 42로 설정됨.
C#에서 접근 제한자
클래스의 멤버(필드, 메서드, 속성 등)나 타입(클래스, 구조체, 인터페이스 등)이 외부에서 접근 가능한지 여부를 지정하는 키워드.
public
가장 넓은 범위의 접근 제한자로, 해당 멤버나 타입은 어떤 어셈블리에서든 접근 가능.
public class MyClass { public int MyField; public void MyMethod() { } }
private
가장 제한적인 범위의 접근 제한자로, 해당 멤버는 같은 클래스 내에서만 접근 가능. 다른 클래스나 어셈블리에서는 접근할 수 없음.
public class MyClass { private int myField; private void MyMethod() { } }
protected
해당 멤버는 같은 클래스 내에서 또는 해당 클래스를 상속하는 파생 클래스에서만 접근 가능.
public class MyBaseClass { protected int myField; } public class MyDerivedClass : MyBaseClass { public void MyMethod() { // myField는 MyBaseClass에서 상속되어 접근 가능 int x = myField; } }
internal
"internal"로 지정된 멤버는 같은 어셈블리 내에서만 접근 가능.
다른 어셈블리에서는 접근할 수 없음.
// 같은 어셈블리 내의 클래스 internal class MyInternalClass { internal int MyField; internal void MyMethod() { } }