मैं एक भंडार क्लास और नीचे के रूप में एक सेवा वर्ग है:एक फ़ील्ड प्रारंभकर्ता गैर स्थैतिक फ़ील्ड, विधि या संपत्ति का संदर्भ नहीं दे सकता है?
public class DinnerRepository
{
DinnerDataContext db = new DinnerDataContext();
public Dinner GetDinner(int id)
{
return db.Dinners.SingleOrDefault(d => d.DinnerID == id);
}
// Others Code
}
public class Service
{
DinnerRepository repo = new DinnerRepository();
Dinner dinner = repo.GetDinner(5);
// Other Code
}
यह फेंकता त्रुटि:
A field initializer cannot reference the non-static field, method, or property.
हालांकि मैं DinnerRepository कक्षा intatiated है सेवा में अपनी विधि GetDinner() बेनकाब करने के लिए कक्षा। यह नीचे कोड के साथ ठीक काम करता है। क्या इसका कोई विकल्प है या क्या यह एक मानक अभ्यास है? मैं यहाँ स्थिर तरीकों का उपयोग नहीं कर सकते ..
public class Service
{
public Service()
{
DinnerRepository repo = new DinnerRepository();
Dinner dinner = repo.GetDinner(5);
}
}
हाँ, वर्तमान संस्करण इस तरह पढ़ता है "चूंकि हमारे पास 'सरल नाम' पर एक संकलन समय त्रुटि है, हम 'यह' एक त्रुटि का संदर्भ देते हैं, और दूसरी तरफ नहीं। – SWeko
@ जोनस्केट इस व्यवहार का कारण यह है कि क्षेत्र को कन्स्ट्रक्टर से पहले शुरू किया जाता है। इसलिए जब आप फ़ील्ड प्रारंभ करने का प्रयास करते हैं तो कोई इंस्टेंस सदस्य नहीं होता है। यही कारण है कि कक्षा को तुरंत चालू करने से पहले आप उनका उपयोग नहीं कर सकते हैं? – UfukSURMEN
@UfukSURMEN: वास्तव में नहीं ... ऑब्जेक्ट पहले से मौजूद है, लेकिन यह कुछ सुंदर हार्ड-टू-कारण-बग के बारे में आमंत्रित करेगा। (कभी-कभी यह बहुत परेशान होता है, स्वीकार्य रूप से ...) –