.NET의 상수 필드 const 응용 프로그램 소개

2081 단어
C#에서 상수 기호const를 사용할 때 컴파일러는 상수를 정의하는 모듈의 메타데이터에서 이 기호를 찾아내고 상수의 값을 직접 꺼내 컴파일된 IL 코드에 삽입하기 때문에 상수는 실행할 때 메모리를 분배할 필요가 없고 상수의 주소도 얻을 수 없고 인용도 사용할 수 없다.다음 코드:
 
  
public class ConstTest
{
public const int ConstInt = 1000;
}

ConstTest로 컴파일합니다.dll 파일 및 다음 코드에서 이 ConstTest를 참조합니다.dll 파일.
 
  
using System;
class Program
{
public static void Main(string[] args)
{
Console.WriteLine(ConstTest.ConstInt);// 1000;
}
}

컴파일이 Main을 실행합니다.exe 프로그램, 결과는 1000입니다.그런 다음 bin 폴더의 ConstTest.dll 참조 파일 삭제,Main을 직접 실행합니다.exe 파일, 프로그램이 정상적으로 실행되고 결과는 1000을 출력합니다.
ConstTest를 로 재정의하는 경우
 
  
public class ConstTest
{
//
public const int ConstInt = 1000;
public readonly int ReadOnlyInt = 100;
public static int StaticInt = 150;
public ConstTest()
{
ReadOnlyInt = 101;
StaticInt = 151;
}
//static
static ConstTest()
{
// static
StaticInt = 152;
}
}

ConstTest로 다시 컴파일합니다.dll 및 호출기Main에 이 인용을 추가한 후 호출기를 컴파일하여 새로운Main을 생성합니다.exe, ConstTest를 다시 삭제해도.dll 파일 뒤, Main.exe가 정상적으로 작동하여 결과는 1000을 출력합니다.
Main 프로그램을 다음과 같이 변경합니다.
 
  
class Program
{
public static void Main(string[] args)
{
Console.WriteLine(ConstTest.ConstInt);// 1000
Console.WriteLine(ConstTest.StaticInt);// 152
ConstTest mc = new ConstTest();
Console.WriteLine(ConstTest.StaticInt);// 151
}
}

Main 프로그램을 다시 컴파일합니다. 이 때 ConstTest를 다시 컴파일합니다.dll을 삭제하면 오류가 발생합니다.
이렇게 보면 일부 프로젝트가 ConstTest에 인용되었다는 것을 알 수 있다.나중에 변동으로 인해ConstInt 상수의 값이 바뀌면 다시 컴파일된ConstTest를 인용해도 dll.dll, Main을 변경할 수 없습니다.exe의 데이터 (ConstInt 값을 다른 값으로 바꾸고 컴파일된 ConstTest.dll를Main.exe의bin 폴더 아래로 복사해 볼 수 있음), ConstTest만 추가할 수 있습니다.dll에서 참조하고 Main 프로그램을 다시 컴파일해야 합니다.

좋은 웹페이지 즐겨찾기