C#報錯可訪問性不一致

分析:

出現的原因,一般是返回參數的訪問級別小於函數的訪問級別,這樣聽起來可能有點模糊,下面我們舉例子來說明。

 

也就是說當定義一個返回參數的方法的時候,如果返回參數的訪問級別低於方法的訪問級別就會出現這樣的錯誤。這個是可以理解的,如果返回的參數不能被訪問,那麼定義的返回的方法也是錯誤的。(當你在一個訪問性比較強(例如公共)的字段/屬性/方法裏使用自定義類型,而這個類型訪問性比較低(例如保護/私有)的時候就發生這個問題了) 

 

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

例子:

        public static ResultAmount AccumulatedAmount()
        {
            return new ResultAmount(0, 0);
        }

        /// <summary>
        /// 返回的金額類
        /// </summary>
        class ResultAmount
        {
            /// <summary>
            /// 未覈銷金額
            /// </summary>
            public decimal new_sinosure_insure_apply { get; set; }

            /// <summary>
            /// 投保金額
            /// </summary>
            public decimal new_insure_amount { get; set; }

            public ResultAmount(decimal new_sinosure_insure_apply, decimal new_insure_amount)
            {
                this.new_sinosure_insure_apply = new_sinosure_insure_apply;
                this.new_insure_amount = new_insure_amount;
            }
        }

 我在AccumulatedAmount方法裏新建一個ResultAmount實例,就會提示可訪問性不一致。因爲AccumulatedAmount是被public修飾的,而ResultAmount被默認修飾符修飾,它們的訪問修飾符不一致。

解決:

在你定義的類前面加上public提高它的訪問度 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章