a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C# > 正文

不能在子類或外部類發布C#事件代碼分析

2020-01-24 03:04:10
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EventStudy
{
    class Program
    {
        static void Main(string[] args)
        {
        }
    }

    class Base
    {
        private Action _testEventB;

        public event Action TestEventA;

        public event Action TestEventB
        {
            add
            {
                _testEventB += value;
            }
            remove
            {
                _testEventB -= value;
            }
        }

        protected void OnTestEventA()
        {
            var testEventA = this.TestEventA;

            testEventA();
        }

        protected void OnTestEventB()
        {
            var testEventB = _testEventB;

            testEventB();
        }
    }

    class Child : Base
    {
        public void Do()
        {
            //this.TestEventA();不能這樣訪問
        }
    }
}



分析

1、TestEventA和TestEventB最終生成的代碼結構基本一樣,可以知道C#編譯器幫我們做了一些工作。
2、其實C#編譯器應該可以做到允許我們直接調用的,比如:生成的字段為protected類型,考慮到封裝性,編譯器沒這么做,我覺得是合理的。

為什么一定要這么發布事件(引入一個局部變量):

復制代碼 代碼如下:

protected void OnTestEventA()
        {
            var testEventA = this.TestEventA;

            testEventA();
        }


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲精品三级 | 亚洲成人久久久 | 精品三级在线观看 | 亚洲免费网| 亚洲+变态+欧美+另类+精品 | 天天干狠狠干 | 中文字幕精品一区二区三区精品 | 欧美精品一区二区三区一线天视频 | 不卡视频一区二区 | 久久99精品久久久久久琪琪 | 欧美黄视频在线观看 | 亚洲国产欧美一区二区三区久久 | 久久成人综合 | 亚洲欧美一区二区三区在线 | jizz在线播放 | 久久精品视频免费观看 | 精品欧美一区二区三区精品久久 | 草逼视频免费观看 | 中文字幕亚洲欧美日韩在线不卡 | 国产成人精品在线观看 | 成人aaaa | 99视频精品| 精品国产一区二区三区久久久 | 亚洲精品日韩激情在线电影 | 久久精品免费观看 | 亚洲精品无遮挡 | 天天操夜夜干 | 欧美一性一交 | 日韩视频久久 | 久久成人免费视频 | 中文字幕在线观看2021 | 欧美精品二区 | 国产激情在线视频 | 欧美一级一区 | 国产精品久久久久久久久 | 亚洲精区 | 亚洲无限资源 | 午夜精品久久久久久久久 | 色综合久久久久 | 国产精品久久嫩一区二区 免费 | 国产乱码精品一区二区三区中文 |