Sunday, December 26, 2010

Partial Keyeword and C#

Partial Keyeword and C#
  • Partial keyword can be used with  class, struct, or interface
  • The partial keyword indicates that other parts of the class, struct, or interface can be defined in the namespace
  • All the parts must use the partial keyword.
  • All the parts must have the same accessibility, such as public, private, and so on.
  • If any part is declared abstract, then the whole type is considered abstract.
  • If any part is declared sealed, then the whole type is considered sealed.
  • If any part declares a base type, then the whole type inherits that class.
  • All the parts that specify a base class must agree, but parts that omit a base class still inherit the base type.
  • Parts can specify different base interfaces, and the final type implements all the interfaces listed by all the partial declarations.
  • Any class, struct, or interface members declared in a partial definition are available to all the other parts. The final type is the combination of all the parts at compile time.
  • At compile time, attributes of partial-type definitions are merged.
  • The following are merged from all the partial-type definitions:
    • XML comments
    • interfaces
    • generic-type parameter attributes
    • class attributes
    • member
Restrictions
  • All partial-type definitions meant to be parts of the same type must be modified with partial.
  • The partial modifier can only appear immediately before the keywords class, struct, or interface.
  • All partial-type definitions meant to be parts of the same type must be defined in the same assembly and the same module (.exe or .dll file). Partial definitions cannot span multiple modules.
  • The class name and generic-type parameters must match on all partial-type definitions. Generic types can be partial. Each partial declaration must use the same parameter names in the same order.
  • The following keywords on a partial-type definition are optional, but if present on one partial-type definition, cannot conflict with the keywords specified on another partial definition for the same type:
    • public
    • private
    • protected
    • internal
    • abstract
    • sealed
    • base class
    • new modifier (nested parts)
    • generic constraints

No comments:

Post a Comment