zoukankan      html  css  js  c++  java
  • C#之可访问性约束(可访问性不一致)

    C# 语言中的有些构造要求某个类型至少与某个成员或其他类型具有同样的可访问性 (at least as accessible as)。如果 T 的可访问域是 M 可访问域的超集,我们就说类型 T 至少与成员或类型 M 具有同样的可访问性。换言之,如果 T 在可访问 M 的所有上下文中都是可访问的,则 T 至少与 M 具有同样的可访问性。

    存在下列可访问性约束:

    · 类类型的直接基类必须至少与类类型本身具有同样的可访问性。

    · 接口类型的显式基接口必须至少与接口类型本身具有同样的可访问性。

    · 委托类型的返回类型和参数类型必须至少与委托类型本身具有同样的可访问性。

    · 常量的类型必须至少与常量本身具有同样的可访问性。

    · 字段的类型必须至少与字段本身具有同样的可访问性。

    · 方法的返回类型和参数类型必须至少与方法本身具有同样的可访问性。

    · 属性的类型必须至少与属性本身具有同样的可访问性。

    · 事件的类型必须至少与事件本身具有同样的可访问性。

    · 索引器的类型和参数类型必须至少与索引器本身具有同样的可访问性。

    · 运算符的返回类型和参数类型必须至少与运算符本身具有同样的可访问性。

    · 实例构造函数的参数类型必须至少与实例构造函数本身具有同样的可访问性。

    在下面的示例中

    class A {...}

    public class B: A {...}

    B 类导致编译时错误,因为 A 并不具有至少与 B 相同的可访问性。

    例如:

    using System;
    using System.Collections.Generic;
    
    namespace LearningCSharp
    {
        class MyClass
        {
            int a;
        }
        public class Test
        {
            public List<MyClass> mcList;
            public MyClass[] mc;
        }
    
        public class MyDerived : MyClass
        {
    
        }
    
        class Program
        {
            public static void Main()
            {
    
            }
        }
    }
    

    image-20210902000220980

    ##### 愿你一寸一寸地攻城略地,一点一点地焕然一新 #####
  • 相关阅读:
    Codeforces Gym
    洛谷试炼场一句话题解
    优先队列板子
    BZOJ 3524 [POI2014] Couriers/洛谷3567(可持久化线段树)
    hdu 4417 Super Mario(可持久化线段树)
    poj 2559 Largest Rectangle in a Histogram (单调栈)
    zoj 4019 Schrödinger's Knapsack
    hdu 1521 排列组合(指数型生成函数板子)
    hdu 2072 单词数(普通型生成函数板子)
    RabbitMQ广播:direct模式
  • 原文地址:https://www.cnblogs.com/johnyang/p/15216971.html
Copyright © 2011-2022 走看看