可訪問性不一致的原因與解決方法


出現原因,其中一個是返回參數的訪問級別小於函數的訪問級別,也就是說當定義一個返回參數的方法的時候,如果返回參數的訪問級別低於方法的訪問級別,此時就會出現這樣的錯誤。如果返回的參數不能被訪問,那么定義的返回的方法也是錯誤的.

總結:當你在一個訪問性比較強(例如公共)的字段/屬性/方法里使用自定義類型,而這個類型訪問性比較低(例如保護/私有),此時就發生這個問題了 

解決方法:返回類型和方法的形參表中引用的各個類型必須至少具有和方法本身相同的可訪問性

案例1:

 public   class   ClassA

  {   

       private   class   SubclassB

      {   
          ...   
      }   
      public   SubclassB   InstanceOfB;   
  }   

這樣的話就發生訪問性不一致的錯誤了,當別人使用ClassA的時候,InstanceOfB字段因為是public的,所以應該可用,但是它的類型,SubclassB,卻沒有公開,導致沖突。

解決方法:在你定義的類型前面加上public 提高它的訪問度 

案例2:

public OpenNewMapDocument(ControlsSynchronizer controlsSynchronizer)
{}

class ControlsSynchronizer{}

錯誤 1 可訪問性不一致: 參數類型“##.ControlsSynchronizer”比方法“##.OpenNewMapDocument.OpenNewMapDocument(##.ControlsSynchronizer)”的可訪問性低

解決方法:修改參數類型的課訪問性,將其降低。具體在ControlsSynchronizer類添加修飾符public:Public class ControlsSynchronizer{}。 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM