X hits on this document

1063 views

0 shares

0 downloads

0 comments

75 / 396

C# LANGUAGE SPECIFICATION

Several constructs in the C# language require a type to be at least as accessible as a member or another type. A type T is said to be at least as accessible as a member or type M if the accessibility domain of T is a superset of the accessibility domain of M. In other words, T is at least as accessible as M if T is accessible in all contexts in which M is accessible.

The following accessibility constraints exist:

The direct base class of a class type must be at least as accessible as the class type itself.

The explicit base interfaces of an interface type must be at least as accessible as the interface type itself.

The return type and parameter types of a delegate type must be at least as accessible as the delegate type itself.

The type of a constant must be at least as accessible as the constant itself.

The type of a field must be at least as accessible as the field itself.

The return type and parameter types of a method must be at least as accessible as the method itself.

The type of a property must be at least as accessible as the property itself.

The type of an event must be at least as accessible as the event itself.

The type and parameter types of an indexer must be at least as accessible as the indexer itself.

The return type and parameter types of an operator must be at least as accessible as the operator itself.

The parameter types of an instance constructor must be at least as accessible as the instance constructor itself.

In the example

class A {...}

public class B: A {...}

the B class results in a compile-time error because A is not at least as accessible as B.

Likewise, in the example

class A {...}

public class B { A F() {...}

internal A G() {...}

public A H() {...} }

the H method in B results in a compile-time error because the return type A is not at least as accessible as the method.

3.6 Signatures and overloading

Methods, instance constructors, indexers, and operators are characterized by their signatures:

The signature of a method consists of the name of the method and the type and kind (value, reference, or output) of each of its formal parameters, considered in the order left to right. The signature of a method specifically does not include the return type, nor does it include the params modifier that may be specified for the right-most parameter.

62Copyright Microsoft Corporation 1999-2003. All Rights Reserved.

Document info
Document views1063
Page views1063
Page last viewedSat Dec 10 18:56:28 UTC 2016
Pages396
Paragraphs9401
Words133190

Comments