【property】 프로퍼티

오브젝트 지향 프로그래밍에 쓰여지는 오브젝트가 보유하고 있는 성질을 나타낸 데이터이다.

예를 들어, 영상 데이터 오브젝트이면 높이나 폭 등의 데이터를 프로퍼티로서 가지고 있다.

구체적으로 어떠한 프로퍼티를 가지고 있는지는 오브젝트에 따라 다르며, 오브젝트의 개발자가 오브젝트의 성질에 따라서 설정한다. 프로퍼티 값에는 변경 할 수 없는 것과 변경 가능한 것이 있으며, 변경 가능한 프로퍼티는 같은 오브젝트에 포함되는 메소드를 사용하여 변경할 수 있다.

복사 생성자는 무엇인가?
말 그대로 복사가 일어날 때 호출되는 생성자이다.

일부 언어와는 달리 C#에서는 복사 생성자를 제공하지 않습니다. 새 개체를 만들고 기존 개체에서 값을 복사하려면 적절한 메서드를 직접 작성해야 합니다.

class Person

{

private string name;

private int age;

// Copy constructor.

public Person(Person previousPerson)

{

name = previousPerson.name;

age = previousPerson.age;

}

// Instance constructor.

public Person(string name, int age)

{

this.name = name;

this.age = age;

}

// Get accessor.

public string Details

{

get

{

return name + " is " + age.ToString();

}

}

}

class TestPerson

{

static void Main()

{

// Create a new person object.

Person person1 = new Person("George", 40);

// Create another new object, copying person.

Person person2 = new Person(person1);

Console.WriteLine(person2.Details);

// Keep the console window open in debug mode.

Console.WriteLine("Press any key to exit.");

Console.ReadKey();

}

}

// Output: George is 40

정적 생성자

전용 생성자는 특수 인스턴스 생성자입니다. 이것은 정적 멤버만 포함하는 클래스에서 일반적으로 사용됩니다. 클래스에 전용 생성자만 한 개 이상 있고 공용 생성자는 없을 경우 중첩 클래스를 제외한 다른 클래스는 이 클래스의 인스턴스를 만들 수 없습니다. 예를 들면 다음과 같습니다.

class SimpleClass

{

// Static variable that must be initialized at run time.

static readonly long baseline;

// Static constructor is called at most one time, before any

// instance constructor is invoked or member is accessed.

static SimpleClass()

{

baseline = DateTime.Now.Ticks; //초기에 세팅

}

}

인스턴스 생성자

인스턴스 생성자는 인스턴스를 만들고 초기화하는 데 사용됩니다. 클래스 생성자는 다음 예제처럼 새 개체를 만들 때 호출됩니다.

class CoOrds

{

public int x, y;

// constructor

public CoOrds()

{

x = 0;

y = 0;

}

}

전용 생성자

전용 생성자는 특수 인스턴스 생성자입니다. 이것은 정적 멤버만 포함하는 클래스에서 일반적으로 사용됩니다. 클래스에 전용 생성자만 한 개 이상 있고 공용 생성자는 없을 경우 중첩 클래스를 제외한 다른 클래스는 이 클래스의 인스턴스를 만들 수 없습니다. 예를 들면 다음과 같습니다.

public class Counter

{

private Counter() { }

public static int currentCount;

public static int IncrementCount()

{

return ++currentCount;

}

}

class TestCounter

{

static void Main()

{

// If you uncomment the following statement, it will generate

// an error because the constructor is inaccessible:

// Counter aCounter = new Counter(); // Error

Counter.currentCount = 100;

Counter.IncrementCount();

Console.WriteLine("New count: {0}", Counter.currentCount);

// Keep the console window open in debug mode.

Console.WriteLine("Press any key to exit.");

Console.ReadKey();

}

}

// Output: New count: 101

+ Recent posts