Vì vậy, theo tôi hiểu, đây { get; set; }
là một "tài sản tự động" giống như @Klaus và @Brandon nói là viết tắt cho việc viết một tài sản với "trường sao lưu". Vì vậy, trong trường hợp này:
public class Genre
{
private string name; // This is the backing field
public string Name // This is your property
{
get => name;
set => name = value;
}
}
Tuy nhiên nếu bạn đang như tôi - khoảng một giờ hoặc lâu hơn trước - bạn không thực sự hiểu những gì thuộc tính và accessors được, và bạn không có sự hiểu biết tốt nhất của một số thuật ngữ cơ bản trong hai. MSDN là một công cụ tuyệt vời để học những thứ như thế này nhưng không phải lúc nào cũng dễ hiểu cho người mới bắt đầu. Vì vậy, tôi sẽ cố gắng giải thích điều này sâu hơn ở đây.
get
và set
là bộ truy xuất , có nghĩa là họ có thể truy cập dữ liệu và thông tin trong tin lĩnh vực (thường là từ một lĩnh vực sao lưu ) và thường làm như vậy từ công thuộc tính (như bạn có thể thấy trong ví dụ trên).
Không thể phủ nhận rằng tuyên bố trên khá khó hiểu, vì vậy hãy đi vào một số ví dụ. Giả sử mã này đề cập đến các thể loại âm nhạc. Vì vậy, trong lớp Thể loại, chúng tôi sẽ muốn các thể loại âm nhạc khác nhau. Giả sử chúng ta muốn có 3 thể loại: Hip Hop, Rock và Country. Để làm điều này, chúng ta sẽ sử dụng tên của Class để tạo các thể hiện mới của lớp đó.
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)
Bây giờ chúng ta đã tạo các instance của lớp Thể loại chúng ta có thể thiết lập những cái tên thể loại bằng 'Tên' tài sản đó là cách thiết lập ở trên.
public string Name //Again, this is the 'Name' property
{ get; set; } //And this is the shorthand version the process we're doing right now
Chúng ta có thể đặt tên của 'g1' thành Hip Hop bằng cách viết như sau
g1.Name = "Hip Hop";
Những gì đang xảy ra ở đây là loại phức tạp. Như tôi đã nói trước đây get
và set
truy cập thông tin từ các lĩnh vực riêng tư mà bạn không thể truy cập. get
chỉ có thể đọc thông tin từ lĩnh vực riêng tư và trả lại. set
chỉ có thể viết thông tin trong lĩnh vực riêng tư đó. Nhưng bằng cách có một tài sản với cả hai get
và set
chúng tôi có thể thực hiện cả hai chức năng đó. Và bằng cách viết, g1.Name = "Hip Hop";
chúng tôi đặc biệt sử dụngset
chức năng từ thuộc tính Tên của chúng tôi
set
sử dụng một biến ẩn được gọi là value
. Về cơ bản điều này có nghĩa là bất cứ khi nào bạn thấy "giá trị" bên trong set
, nó đề cập đến một biến; biến "giá trị". Khi chúng ta viết, g1.Name =
chúng ta sử dụng biến =
để chuyển trong value
biến trong trường hợp này là "Hip Hop"
. Vì vậy, về cơ bản bạn có thể nghĩ về nó như thế này:
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"'
}
}
Điều quan trọng cần lưu ý là ví dụ trên không thực sự được viết trong mã. Đó là nhiều hơn một mã giả thuyết đại diện cho những gì đang diễn ra trong nền.
Vì vậy, bây giờ chúng ta đã đặt Tên của thể hiện g1 của Thể loại , tôi tin rằng chúng ta có thể lấy tên bằng cách viết
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"
và nếu chúng ta chạy nó, chúng ta sẽ nhận được "Hip Hop"
trong bảng điều khiển.
Vì vậy, với mục đích của lời giải thích này, tôi cũng sẽ hoàn thành ví dụ với kết quả đầu ra
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);
}
}
Đầu ra:
"Genres: Hip Hop, Rock, Country"