알 { get; set; }
다시피 @Klaus와 @Brandon이 말한 것처럼 "자동 속성"은 "백킹 필드"가있는 속성을 작성하는 데 사용되는 약어입니다. 따라서이 경우 :
public class Genre
{
private string name; // This is the backing field
public string Name // This is your property
{
get => name;
set => name = value;
}
}
그러나 한 시간 정도 전에 나와 같은 사람이라면 속성 과 접근 자가 무엇인지 실제로 이해 하지 못하며 기본 용어를 가장 잘 이해하지 못합니다. MSDN은 이와 같은 학습을위한 훌륭한 도구이지만 초보자에게는 항상 이해하기 쉽지 않습니다. 그래서 여기서 더 깊이 설명하려고합니다.
get
하고 set
있는 접근은 에서 데이터에 액세스하고 정보를 그들에게있는 거 수를 의미하는 개인 (보통의 필드 백업 필드 ) 보통에서 그렇게 대중 특성 (위의 예에서 볼 수 있듯이).
위의 진술이 매우 혼란 스럽다는 것을 부인할 수는 없습니다. 이 코드가 음악 장르를 의미한다고 가정 해 봅시다. 그래서 장르 수업 내에서 우리는 다른 장르의 음악을 원할 것입니다. 힙합, 록 및 컨트리의 3 가지 장르를 원한다고 가정 해 봅시다. 이를 위해 클래스 이름을 사용하여 해당 클래스의 새 인스턴스 를 만듭니다 .
Genre g1 = new Genre(); //Here we're creating a new instance of the class "Genre"
//called g1. We'll create as many as we need (3)
Genre g2 = new Genre();
Genre g3 = new Genre();
//Note the () following new Genre. I believe that's essential since we're creating a
//new instance of a class (Like I said, I'm a beginner so I can't tell you exactly why
//it's there but I do know it's essential)
Genre 클래스의 인스턴스를 만들었으므로 위에서 설정 한 'Name' 속성 을 사용하여 장르 이름을 설정할 수 있습니다 .
public string Name //Again, this is the 'Name' property
{ get; set; } //And this is the shorthand version the process we're doing right now
다음을 작성하여 'g1'이라는 이름을 힙합으로 설정할 수 있습니다
g1.Name = "Hip Hop";
여기서 일어나는 일은 복잡한 것입니다. 마찬가지로 내가 전에 말했듯이, get
그리고 set
당신이 그렇지 않으면 액세스 할 수 없습니다 것을 민간 분야의 정보에 액세스. 개인 필드 get
에서만 정보를 읽고 반환 할 수 있습니다. 해당 개인 필드 set
에만 정보를 쓸 수 있습니다 . 그러나 모두 속성을함으로써 get
그리고 set
우리가 할 수있어 이러한 기능을 모두 수행합니다. 그리고 g1.Name = "Hip Hop";
우리는 구체적으로 set
Name 속성 의 함수를 사용합니다
set
라는 암시 적 변수를 사용합니다 value
. 기본적으로 이것이 의미하는 것은 안에 "value"가 표시 될 때마다 set
변수를 참조하는 것입니다. "value"변수 우리가 쓸 때이 경우 변수 를 전달 g1.Name =
하기 =
위해를 사용하고 있습니다. 따라서 본질적으로 다음과 같이 생각할 수 있습니다.value
"Hip Hop"
public class g1 //We've created an instance of the Genre Class called "g1"
{
private string name;
public string Name
{
get => name;
set => name = "Hip Hop"; //instead of 'value', "Hip Hop" is written because
//'value' in 'g1' was set to "Hip Hop" by previously
//writing 'g1.Name = "Hip Hop"'
}
}
위의 예제는 실제로 코드로 작성되지 않았습니다. 백그라운드에서 진행되는 작업을 나타내는 가상의 코드에 가깝습니다.
이제 장르 의 g1 인스턴스 이름을 설정 했으므로 다음 을 작성하여 이름을 얻을 수 있다고 생각합니다.
console.WriteLine (g1.Name); //This uses the 'get' function from our 'Name' Property
//and returns the field 'name' which we just set to
//"Hip Hop"
우리가 이것을 실행하면 "Hip Hop"
콘솔에 들어갑니다.
이 설명의 목적을 위해 출력으로 예제를 완성하겠습니다.
using System;
public class Genre
{
public string Name { get; set; }
}
public class MainClass
{
public static void Main()
{
Genre g1 = new Genre();
Genre g2 = new Genre();
Genre g3 = new Genre();
g1.Name = "Hip Hop";
g2.Name = "Rock";
g3.Name = "Country";
Console.WriteLine ("Genres: {0}, {1}, {2}", g1.Name, g2.Name, g3.Name);
}
}
산출:
"Genres: Hip Hop, Rock, Country"