C#语言中的可访问性约束
??? C#語(yǔ)言中的許多結(jié)構(gòu)需要一種至少和一個(gè)成員或其它類型相同可訪問(wèn)的類型。如果T 是M 可訪問(wèn)性域的一個(gè)超集,那么類型T 就要求至少可和成員或類型M 一樣可訪問(wèn)。換句話說(shuō),如果T 在所有M 可訪問(wèn)的上下文中都可訪問(wèn),那么T 至少和M 一樣可訪問(wèn)。
下面是一些可訪問(wèn)性的約束:
一個(gè)類類型的直接基類必須至少同類類型本身同樣可訪問(wèn)。
一個(gè)接口類型的外部基本接口必須至少同接口類型本身同樣可訪問(wèn)。
代表類型的返回類型和參數(shù)類型必須至少同代表類型本身同樣可訪問(wèn)。
常數(shù)的類型必須至少同常數(shù)本身同樣可訪問(wèn)。
域的類型必須至少同域本身同樣可訪問(wèn)。
一個(gè)方法的返回類型和參數(shù)類型必須至少同方法本身同樣可訪問(wèn)。
屬性的類型必須至少同屬性本身同樣可訪問(wèn)。
事件的類型必須至少同事件本身同樣可訪問(wèn)。
參數(shù)的類型必須至少同索引本身同樣可訪問(wèn)。
一個(gè)操作符的返回類型和參數(shù)類型必須至少同操作符本身同樣可訪問(wèn)。
構(gòu)造函數(shù)的參數(shù)類型必須至少同構(gòu)造函數(shù)本身同樣可訪問(wèn)。
看看這個(gè)例子:
????? class A {...}
????? public class B: A {...}
因?yàn)锳 不能與B 一樣可訪問(wèn),所以類比是有錯(cuò)誤的。
??? 同樣,在例子中
????? class A {...}
????? public class B
????? {
??????? A F() {...}
???????? internal A G() {...}
???????? public A H() {...}
????? }
??? 因?yàn)锳 不能與B 一樣可訪問(wèn),所以B 中的方法H 也是有錯(cuò)誤的。
轉(zhuǎn)載于:https://blog.51cto.com/5257890/902584
總結(jié)
以上是生活随笔為你收集整理的C#语言中的可访问性约束的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 史上最纯洁的女孩,看到我实在被雷到了。
- 下一篇: 如何控制C#Socket的连接超时时间