Identifiers should not contain type names







Breaking Change


The name of a parameter in an externally visible member contains a type name.

Each concatenated word in the parameter name is checked against the following type names, in a case-insensitive manner:

  • bool

  • boolean

  • byte

  • char

  • double

  • float

  • float32

  • float64

  • int

  • int8

  • int16

  • int32

  • int64

  • integer

  • long

  • object

  • sbyte

  • short

  • single

  • string

  • uint

  • uint16

  • uint32

  • uint64

  • ulong

  • unsigned

  • ushort

  • wchar

Parameter names are better used to convey a parameter's meaning than to describe a parameter's type, which is expected to be provided by development tools. If a type name must be used, use a universal type name instead of a language-specific type name. For example, instead of the C# type name 'ushort', use the universal type name, UInt16.

Select a parameter name that does not contain one of the previously listed type names.

Occasional use of type-based parameter names might be appropriate. However, for new development, there are no known scenarios where it is necessary to suppress a warning from this rule. For shipping libraries, you might have to suppress a warning from this rule.