티스토리 뷰

반응형



 

 메서드 사용시

 변수 사용시

 java

 final

 final

 C#

 sealed

 readonly, const



추가 1

자바에서는 모든 비정적 메소드가 가상으로 오버라이딩 될 수 있는데 C#에서는 override로 표현을 해야 오버라이딩이 가능

때문에 더이상 overriding  하지 않기 위해서 앞에 sealed 추가 해 줘야함.


ex :  public sealed override void Class() {....}




추가 2

readonly는 생성자에서 한 번 더 할당할 수 있고, const는 선언시 값이 할당되어야 함(자바의 final과 사용방법이 유사)



readonly ex : 

1. 생성자에서 값 입력시 정상

public class Hello1 {

public static void Main() {

//System.Console.WriteLine("Hello C#");

        Temp1 temp = new Temp1(3);

        

        temp.printInt();

}

}


public class Temp1{

    public readonly int i;

    public Temp1(int input){

        i = input;

    }


    public void printInt(){

        System.Console.WriteLine("int i : " + i);

    }

}


결과값 :>> int i : 3 출력됨




2. 생성자에서 값 입력 후 메서드로 값 변경을 시도할 경우

public class Hello1 {

public static void Main() {

        Temp1 temp = new Temp1(3);

        

        temp.printInt();

        

        temp.setInt(4);

        

        temp.printInt();

        

}

}


public class Temp1{

    public readonly int i;

    public Temp1(int input){

        i = input;

    }

    

    public void printInt(){

        System.Console.WriteLine("int i : " + i);

    }

    

    public void setInt(int localInput){

        i = localInput;

    }

}


결과값 :>> 빌드시 에러 발생

A readonly field `Temp1.i' cannot be assigned to (except in a constructor or a variable initializer)




반응형
공지사항