C# में फ़ील्ड (field) और प्रॉपर्टी (property) में क्या अंतर है?
नमस्ते साथियों! मैं एक शुरुआती C# डेवलपर हूँ और मुझे फ़ील्ड और प्रॉपर्टी के बीच अंतर समझ नहीं आ रहा है। दोनों ही डेटा स्टोर करते हैं, तो प्रॉपर्टीज़ क्यों बनाई गईं?
मेरे पास एक `Person` क्लास है। मैं इसे ऐसे लिख सकता हूँ:
```csharp
public class Person
{
public string Name;
}
```
यह एक फ़ील्ड है। लेकिन मैं देखता हूँ कि कई लोग इसे ऐसे लिखते हैं:
```csharp
public class Person
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}
```
यह एक प्रॉपर्टी है। दोनों तरीके एक जैसे काम करते हैं: मैं वैल्यू असाइन कर सकता हूँ और पढ़ सकता हूँ। उदाहरण के लिए:
```csharp
Person p = new Person();
p.Name = "Alexey";
Console.WriteLine(p.Name);
```
रिज़ल्ट एक जैसा होगा। तो फिर `get` और `set` के साथ झंझट क्यों? हमेशा पब्लिक फ़ील्ड का उपयोग क्यों न करें? मैंने सुना है कि यह एनकैप्सुलेशन से संबंधित है, लेकिन मुझे समझ नहीं आता कि प्रॉपर्टी इसे कैसे बेहतर बनाती है, जब मैं फिर भी कोई भी वैल्यू सेट कर सकता हूँ।
कृपया समझाएँ।