질문
358
投稿した質問数 1
namespace 예제3{ internal class Program { static int a = 3; // -> static 이아니면 아래 함수 호출시 오류가 나는 이유?? static void Main(string[] args) { int a; a = 1; char c = 'A'; string str = "abcd"; bool con = true; Console.WriteLine("a = " + a); Console.WriteLine("c = " + c); Console.WriteLine("str = " + str); Console.WriteLine("con = " + con); } static private void Func1() { Console.WriteLine("a = "+a); } }}Q static int a = 3; 에서 static이 아니면 아래 함수 호출시 오류가 나는 이유가 뭘까요?
回答 1
0
Program.cs의 main() 함수부터 프로그램은 시작하도록 설계되어 있습니다. 그런데 main()함수가 static이죠. 즉, 프로그램 실행 시 할당되고 종료할때까지 없어지지 않는 영역이 static 메모리 영역인데 여기서부터 프로그램을 시작시킵니다.
static은 특수한 메모리 영역으로 반드시 static끼리만 호출이 되는 제약점을 가지고 있죠. 즉, 일반적으로 사용하는 heap 메모리 영역의 공유가 안되는 제한된 영역입니다.
그래서 이런 프로그램에서는
public static main()
{
MyApp app = new MyApp();
app.Run(); // 이렇게 static이 아닌 인스턴스의 Run()함수를 호출하고 거기서부터 프로그램을 짜는 것이 일반적입니다.
}
public class MyApp
{
public void Run()
{
}
}
visual studio 2022 로 수업 들어도 되나요?
0
200
1
저는 왜 영상과 다르게 Hello World만 나올까요?
0
418
3
getter setter 질문입니다.
0
424
2
교수님 C#의 Property에서 setter를 이용한 입력 제한은 어떻게 구현하나요?
0
643
3
IEnumerable 강의 따라하는 중 질문합니다.
0
570
3
메서드 Override1
0
449
3
혹시 이 강의랑 같이 볼만한 책 추천해주실 수 있으실까요?
0
493
2
디렉토리를 처음부터 잘못해서 쭉 잘못 해오고 있었습니다.
0
502
3
빌드되는 경로를 사용자가 지정할 수는 없나요?
0
846
2
수업 중 질문은 어떻게 쓰나요?
0
381
2
지금 4분~8분 내용 보는 중입니다.
0
554
2
기본타입 강의 중 질문입니다.
0
294
1
19:14 실행이 안되고 꺼집니다.
0
1238
1
프레임워크 4.6.1이 없습니다.
0
380
1
람다는 수업 강의에서 안배우는건가요??
0
420
1
Student.cs에서 생성자 질문
0
423
1
교수님이 강의에서 설명하신 내용 중 이해가 가지 않는게 있습니다.
0
318
2
교수님 혹시 강의 때 사용하시는 ppt도 공유해주실 수 있는지요?
0
526
2
double 소문자와 대문자 차이가 뭔가요?
0
514
1
FOREACH문은 다른 회차에 알려주시나요?
0
220
0
동영상 소리가 너무 작아요…
0
581
1
[질문] C# 프로그램 구조2 강의가 누락된 건가요?
0
318
1
MenuArgs를 왜 상속하나요?
0
261
4
인터페이스 질문입니다.
0
357
3

