2012-03-15 1 views
14

से पैरामीटर कम पहुंच योग्य है, मैं एक फॉर्म क्लास से दूसरी सूची में एक सूची उत्तीर्ण करने की कोशिश कर रहा हूं।पैरामीटर

List<Branch> myArgus = new List<Branch>(); 

private void btnLogin_Click(object sender, EventArgs e) 
{ 
    // Get the selected branch name 
    string selectedBranch = lbBranches.SelectedItem.ToString(); 
    for (int i = 0; i < myArgus.Count; i++) 
    { 
     if (myArgus[i]._branchName == selectedBranch) 
     { 
      // Open the BranchOverview form 
      BranchOverview branchOverview = new BranchOverview(myArgus[i]); 
      branchOverview.Show(); 
     } 
     else 
     { 
      // Branch doesn't exist for some reason 
     } 
    } 
} 

और फिर मेरी BranchOverview कक्षा में: कोड यह

Inconsistent accessibility: parameter type 'System.Collections.Generic.List<Argus.Branch>' is less accessible than method 'Argus.BranchOverview.BranchOverview(System.Collections.Generic.List<Argus.Branch>)' 
+0

हाँ, ठीक है। तो आपका सवाल क्या विशेष रूप से है? क्या आप समझ नहीं पाएंगे कि त्रुटि संदेश का क्या अर्थ है? या आप इसे समझते हैं लेकिन आप नहीं जानते कि इसे कैसे ठीक किया जाए? या आप समझते हैं कि इसे कैसे ठीक किया जाए, लेकिन आप दो अलग-अलग दृष्टिकोणों के बीच निर्णय ले रहे हैं? –

+1

संभावित असंगतता का संभावित डुप्लिकेट: पैरामीटर प्रकार विधि से कम सुलभ है] (http://stackoverflow.com/questions/6229504/inconsistent-accessibility-parameter-type-is-less-accessible-than-method) – user

उत्तर

40

आप Branch घोषित करने के लिए सार्वजनिक होना चाहिए।

+0

आह, यह उस तरह का था, धन्यवाद। 'शाखा' वर्ग के भीतर मैं कक्षाओं से अन्य वस्तुओं का निर्माण कर रहा था जो सार्वजनिक नहीं थे, जहां वह मुझे प्राप्त कर रहा था। चीयर्स! –

+0

बहुत बहुत धन्यवाद, मैंने पहले ओओपी सीखा लेकिन मैं अभी भी इसे भूल गया। – duykhoa

+0

@ डुयखोआ: आपका बहुत स्वागत है – MiMo

1

डिफ़ॉल्ट रूप से, एक वर्ग के क्षेत्र:

List<Branch> branch = new List<Branch>(); 

public BranchOverview(List<Branch> myArgus) 
{ 
    InitializeComponent(); 

    branch = myArgus; 
} 

जब मैं कोड चलाने के लिए, मैं इस त्रुटि मिलती है private हैं यदि access modifier मौजूद है ...

8

त्रुटि संदेश के रूप में ays, विधि के सभी पैरामीटर का प्रकार कम से कम विधि के रूप में सुलभ होना चाहिए।

यदि आप इसे सार्वजनिक विधि में पैरामीटर के रूप में उपयोग कर रहे हैं तो आपको Branch क्लास सार्वजनिक बनाना होगा।

public class Branch { .... } 
^^^^^^ 

वैकल्पिक रूप से आप अपने पद्धति को बदलने internal बजाय public हो सकती है।

internal BranchOverview(List<Branch> myArgus) 
^^^^^^^^ 
+0

धन्यवाद, मुझे "आंतरिक" के बारे में पता नहीं था। इसने मुझे बहुत समय बिताया और सभी को सार्वजनिक करने के लिए कंपाउंडिंग कक्षाओं को बदल दिया (एक को सार्वजनिक में बदलें, और अधिक त्रुटियां हुईं।) रुचि रखने वाले किसी भी व्यक्ति के लिए, http://msdn.microsoft.com/en-us/ पर अधिक जानकारी उपलब्ध है लाइब्रेरी/7 सी 5ka91 बी (वी = वीएस.80) .aspx। – joshhendo

1

BranchOverview के निर्माता public जिसका मतलब है कि सभी प्रकार इसकी औपचारिक पैरामीटर सूची में शामिल भी public होना चाहिए है। अधिकांश शायद आप से, यानी Branch के लिए एक पहुँच विनिर्देश प्रदान नहीं किया है आप

class Branch { ... } 

जिसका अर्थ है कि Branchinternal है लिखा है।

public class Branch { 
    . . . 
} 
0

बदलें:

List<Branch> myArgus = new List<Branch>(); 

सार्वजनिक होने के लिए