짧은 대답은 당신이 설명하는 방법으로이 작업을 수행 할 수 없다, 당신이 할 수있는 가장 가까운 것은 읽기 전용 필드와 당신이 절대적으로 필요한 경우는 다음과 같은 작업을 수행 할 수
public class Foo
{
public readonly int myInt;
public Foo()
{
myInt = 1;
}
public void doBad()
{
myInt = 1213; // Not allowed
}
}
생성자를 사용하는 것입니다, 그러나이 패턴은 불안정한 패턴이며 시작에 의해서만 설정되었음을 보증하지 않습니다. 너는 이것을하지 말아야한다 !!!!!
public class Foo2{
private bool calledOnce = false;
private int _myInt;
public readonly int myInt{
get {return _myInt;}
set {
if (calledOnce){
throw new Exception("Not allowed");
}else{
_myInt = value;
calledOnce = true;
}
}
}
public void start()
{
myInt = 1213;
}
public void doBad()
{
myInt = 1213; // will throw
}
는 경우에는 큰 대문자는 두 번째 것은 매우 가난한 생각하고, 명확하지 있었고, 코드에 많은 문제를 반영하고, 가능성이 이상한 버그의 원천이 될 것이다, 그러나 한 번 파란 달에는 아주 이상한 문제를 다루는 끔찍한 이상한 코드가 필요하지만, 나는 이것이 그 경우가 아닌 것으로 짐작하고있다. 전체 문제를 재고하고 실제 요구 사항이 무엇인지 더 잘 이해하는 것이 가장 좋습니다.
.aspx) 필드. –
질문에 약간의 결함이 있습니다. 메서드 "Awake"또는 "Start"를 사용하여 메서드로 설정할 수없는 필드를 설정하려고합니다. 생성자에서 설정하고자한다면, readonly를 사용하거나, 빌드 타임에 정의하고 싶다면 const로 만들 수있다. 그러나 메소드에서 설정하려는 경우 일반 쓰기 가능 필드 여야합니다. – jt000