2014-10-29 120 views
0

我有我的類結構稱爲RangeName和一個方法,我設置了這樣的一個數組如下:結構數組作爲輸入參數

RangeName[] myNames = new RangeName[currWkb.Names.Count]; 

,後來我想myNames傳遞到另一個方法。我曾嘗試過:

public void TestRoutine(RangeName[] myNames) 

但我的代碼不會生成。我得到

可訪問性不一致:參數類型 'MyTools.clsTest.RangeName []' 比少的方法訪問 'MyTools.clsTest.TestRoutine(MyTools.clsTest.RangeName [])'

+0

請發送'RangeName'的代碼。 – abatishchev 2014-10-29 18:17:06

回答

4

你需要使您的RangeName結構public(至少)。結構和類別默認爲internal。或者當然,您可以通過將其設置爲internal來減少訪問方法的難度。

+0

非常感謝。加入公衆解決了它。 – crookie 2014-10-29 18:20:40

+2

「結構和類是默認的內部」:差不多。頂級類型(類,結構,接口)也是如此。但不適用於嵌套類型。一般來說,默認的可訪問性是最嚴格的可訪問性,但仍然使聲明的成員可用。對於嵌套成員,包括類型,可訪問性實際上是「私有」,而不是「內部」。 – 2014-10-29 18:22:43

2

當您獲得不一致的可訪問性錯誤時,這意味着具有較高可訪問性的方法(在此例中爲public)具有低可訪問性的參數類型。

您需要確保RangeName結構在其封閉上下文中具有公共可訪問性。找到聲明,並在struct前添加public

0

您的RangeName結構的可訪問性低於您的公共TestRoutine,它將RangeName []作爲參數。如果有人試圖調用TestRoutine,他們將永遠無法傳入參數,因爲該結構對調用者來說無法訪問。

您可以通過使您的TestRoutine對RangeName具有較低或相等的可訪問性或將RangeName增加爲public來解決此問題。