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

    ##### 愿你一寸一寸地攻城略地,一点一点地焕然一新 #####
  • 相关阅读:
    jar包和war包的介绍和区别
    Oracle中rownum的基本用法
    深入理解JVM—JVM内存模型
    Oracle数据库中序列(SEQUENCE)的用法详解
    jvm主内存与工作内存
    jvm虚拟机
    java 冒泡排序
    java二分查找
    java中split()特殊符号"." "|" "*" "" "]"
    java map的实现原理
  • 原文地址:https://www.cnblogs.com/johnyang/p/15216971.html
Copyright © 2011-2022 走看看