- 다음 내용은 Unity 퀘스트 모음집 \ C# 사전 문법 기초 \ 기타 페이지들을 학습하고 작성되었습니다.
스코프(Scope)
- 영역, {}(중괄호) 기준으로 정해짐- 중괄호는 반드시 한쌍을 이룸
(쌍을 이루지 않으면 에러 발생,
괄호가 어디에서 누락됐는지 모르겠으면 전체선택 후 Ctrl+K+F로 자동정렬 후 빠진 부분 찾기
, 좌측의 모든 점선이 중괄호로 이어져야함)
클래스 내부
- 가능한 활동 : 변수 만들기, 변수 선언과 동시에 초기화, 함수 만들기, 접근 제한자 설정
- 불가능한 활동 : 변수 선언 후 초기화, 로직 작성
public class MyClass // 클래스의 접근 제한자 설정
{
private int x; // 변수 생성
private int y = 10; // 변수 선언과 동시에 초기화
x = 1; // ERROR : 변수 선언 후 초기화 불가능
Console.WriteLine("Hello"); // ERROR : 로직 작성 불가능
public void PrintHello() // 함수 작성 가능
{
Console.WriteLine("Hello");
}
}
함수 내부
- 가능한 활동 : 변수 사용, 로직 작성
- 가능은 하지만 지양하는 활동 : 다른 함수 정의 (코드 구조가 복잡해지고 호출 스택에 의한 오버헤드 증가)
public class MyClass
{
public void PrintHello()
{
bool isValid = true; // 변수 사용 가능
if (isValid) // 로직 작성 가능
Console.WriteLine("Hello");
// 함수 내 함수 정의 가능
// 문법적으로는 가능하나 지양하기
void PrintWorld()
{
Console.WriteLine("World");
}
}
}
변수의 생명 주기
{} 내부의 변수는 {}를 벗어나면 사라짐
{
int x = 10;
}
x = 20;
// ERROR : x가 서로 다른 영역에 있으므로 인식 못함
클래스 내부의 변수
- 클래스 내부에 선언된 변수는 클래스 존재하는 동안 유지되며 접근 가능
class MyClass
{
int x = 10;
void Start()
{
AddNum();
SubNum();
}
void AddNum()
{
x++;
Console.WriteLine(x); // 11
}
void SubNum()
{
x--;
Console.WriteLine(x); // 10
}
}
접근 제한자 (Access Modifier)
- 변수, 함수, 클래스를 외부에서 접근할 수 있는 범위를 제한
| 접근 제한자 | 접근 범위 |
| public | 외부에서 접근 가능 |
| private | 외부에서 접근 불가, 기본 설정 |
| protected | 상속 관계에서 접근 가능 |
| internal | 동일한 프로젝트 내에서 접근 가능 |
- 변수, 함수, 클래스 정의의 가장 앞에 붙임
public
- 클래스 내부의 public 변수와 함수는 외부에서 접근 가능
class MyClass1
{
public int x = 10;
public void TestFunc()
{
Console.WriteLine(x);
}
}
class MyClass2
{
MyClass1 mc1;
void Start()
{
mc1.x = 20; // 외부에서 public 변수 접근 가능
mc1.TestFunc(); // 외부에서 public 함수 접근 가능
}
}
private
- 클래스 내부의 private 변수와 함수는 외부에서 접근 불가
class MyClass1
{
private int x = 10;
int y = 20; // private으로 기본 설정
private void TestFunc()
{
Console.WriteLine(x);
}
}
class MyClass2
{
MyClass1 mc1;
void Start()
{
mc1.x = 20; // ERR : 외부에서 private 변수 접근 불가
mc1.y = 30;
mc1.TestFunc(); // ERR : 외부에서 private 함수 접근 불가
}
}'내일배움캠프 > IL' 카테고리의 다른 글
| [내배캠][Unity_6기][IL] C# 기초 문법 톺아보기 (0) | 2024.08.31 |
|---|---|
| [내배캠][Unity_6기][IL] C# 클래스와 객체 (0) | 2024.08.31 |
| [내배캠][Unity_6기][IL] C# 함수 (0) | 2024.08.30 |
| [내배캠][Unity_6기][IL] C# 배열 (0) | 2024.08.30 |
| [내배캠][Unity_6기][IL] C# 제어문 (0) | 2024.08.30 |