亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#中在構造函數中訪問虛成員時會出現什么問題

發布時間:2020-07-11 13:51:17 來源:億速云 閱讀:156 作者:Leah 欄目:編程語言

C#中在構造函數中訪問虛成員時會出現什么問題?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

                                                           C#中在構造函數中訪問虛成員時會出現什么問題

如果在一個類中定義了虛屬性或者虛方法,又在構造函數中訪問了這個虛屬性或方法,此時VisualStudio是不會給出警告,并且編譯也沒有問題,但是如果安裝了Resharper插件則會給出警告提示:“在構造函數中訪問了虛成員”,那么,這為何是一個安全隱患,下面給出一個例子說明:

using System;

namespace VirtualDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var test = new SubClass();
            Console.ReadKey();
        }
    }

    class BaseClass
    {
        protected virtual string VirtualProperty { get; set; }

        public BaseClass()
        {
            var p = VirtualProperty;
            VirtualMethod();
        }

        protected virtual void VirtualMethod()
        {

        }
    }

    class SubClass : BaseClass
    {
        private MockClass _mockClass;

        public SubClass()
        {
            _mockClass = new MockClass();
        }

        protected override string VirtualProperty
        {
            get { return _mockClass.MockProperty; }
            set { _mockClass.MockProperty = value; }
        }

        protected override void VirtualMethod()
        {
            var p = _mockClass.MockProperty;
        }
    }

    class MockClass
    {
        public string MockProperty { get; set; }
    }
}

該示例很簡單,在構造SubClass時出現了空引用報錯,因為基類構造函數先于子類構造函數運行,而子類構造函數中初始化了一個成員類,但是基類構造函數訪問虛成員時子類還沒構造,所以出現了空引用報錯。有多種方式可以避免這一情況,可以通過子類字段初始化的方式來構造成員類,這個語法糖可避免構造函數的時序問題,第二個是可定義一個虛的Initialize方法在子類構造函數第一步調用,子類在繼承這個方法時初始化需要的依賴。

看完上述內容,你們掌握C#中在構造函數中訪問虛成員時會出現什么問題的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乐都县| 临泽县| 邵东县| 壤塘县| 四会市| 山东| 鹤峰县| 班玛县| 鹤岗市| 荔浦县| 江达县| 敦煌市| 行唐县| 天镇县| 柏乡县| 桐乡市| 商城县| 信阳市| 福清市| 大安市| 湖北省| 高阳县| 贵德县| 乐安县| 惠安县| 石河子市| 探索| 会理县| 沂水县| 阿鲁科尔沁旗| 铁力市| 凯里市| 乐清市| 青海省| 巢湖市| 黄平县| 迁安市| 龙井市| 定陶县| 修水县| 珠海市|