में काम नहीं कर रहे हैं दोस्तों के नमस्ते दोस्तों। मुझे ऑटो गुणों के साथ एक छोटी सी समस्या है। मैं सामान्य रूप से प्रोग्रामिंग के लिए नया हूं और मैंने केवल कक्षाओं और वस्तुओं के बारे में सीखना शुरू कर दिया है। जब मैं ऑटो गुणों का उपयोग करने की कोशिश करता हूं, तो फ़ील्ड का खुलासा नहीं होता है। (सुनिश्चित नहीं है कि इसे डालने का सही तरीका है) जानवरों की कक्षाओं में गुणों के टिप्पणी किए गए हिस्सों पर एक नज़र डालें, यह समझने के लिए कि मैं किस बारे में बात कर रहा हूं।ऑटो गुण C#
अभी मैं इस पशु कक्षा
public class Animals
{
//fields
private string name;
public Animals(string name)
{
this.name = name;
}
// default constructor
public Animals()
{ }
//This is the problematic portion
public string Name { get; set; }
public void Bark()
{
Console.WriteLine("{0} said WoWOW", name);
}
}
यह मेरा मुख्य प्रोग्राम वर्ग है
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Enter name: ");
string name = Console.ReadLine();
Animals dog = new Animals(name);
dog.Bark();
Animals cat = new Animals();
Console.WriteLine("Enter second name: ");
cat.Name = Console.ReadLine();
cat.Bark();
}
}
उत्पादन इस प्रकार है। अंतिम पंक्ति मेरी समस्या
Enter name:
bob
bob said WoWOW
Enter second name:
sarah
said WoWOW //sarah is missing here
है हालांकि जब मैं से गुणों में परिवर्तन {मिल; सेट} कक्षा में अपने पूर्ण संस्करण के लिए। यह सही आउटपुट आउटपुट करता है।
संपादित कोड
public class Animals
{
//fields
private string name;
public Animals(string name)
{
this.name = name;
}
public Animals()
{ }
//apparently this is the correct way of making properties
public string Name
{
get { return name; }
set { name = value; }
}
public void Bark()
{
Console.WriteLine("{0} said WoWOW", name);
}
}
उत्पादन: // सारा अंतिम पंक्ति
Enter name:
bob
bob said WoWOW
Enter second name:
sarah
sarah said WoWOW
मेरा प्रश्न है में मौजूद है: ऐसा क्यों है जब ऑटो गुण प्रयोग किया जाता है मैं नहीं मिलता है मेरी वांछित आउटपुट लेकिन जब मैं पूरी तरह से गुण लिखता हूं तो मुझे अपना वांछित परिणाम मिलता है। मेरे प्रश्न पर एक नज़र डालने के लिए धन्यवाद। उम्मीद है कि यह बहुत लंबा नहीं था! ;]
पहला उदाहरण सही नहीं है। आपको ऑटो-प्रॉपर्टी (जिसे सही ढंग से परिभाषित किया गया है) के साथ बैकिंग फ़ील्ड की आवश्यकता नहीं है, इसलिए 'name' को हटाएं और' नाम 'का उपयोग करें। दूसरा काम करता है क्योंकि यह एक पुरानी शैली की संपत्ति है जिसके लिए मैन्युअल रूप से परिभाषित बैकिंग फ़ील्ड की आवश्यकता होती है। ऑटो-गुण आपके लिए बैकिंग फ़ील्ड उत्पन्न करने के लिए कंपाइलर का कारण बनते हैं, लेकिन आप इसे कभी नहीं देखते हैं और इसका उपयोग सीधे नहीं कर सकते हैं। –