| TypeName | SA1121UseBuiltInTypeAlias |
| CheckId | SA1121 |
| Category | Readability Rules |
The code uses one of the basic C# types, but does not use the built-in alias for the type.
A violation of this rule occurs when one of the following types are used anywhere in the code: Boolean, Byte, Char, Decimal, Double, Int16, Int32, Int64, Object, SByte, Single, String, UInt16, UInt32, UInt64.
A violation also occurs when any of these types are represented in the code using the full namespace for the type: System.Boolean, System.Byte, System.Char, System.Decimal, System.Double, System.Int16, System.Int32, System.Int64, System.Object, System.SByte, System.Single, System.String, System.UInt16, System.UInt32, System.UInt64.
Rather than using the type name or the fully-qualified type name, the built-in aliases for these types should always be used: bool, byte, char, decimal, double, short, int, long, object, sbyte, float, string, ushort, uint, ulong.
The following table lists each of these types in all three formats:
| Type Alias | Type | Fully Qualified Type |
|---|---|---|
| bool | Boolean | System.Boolean |
| byte | Byte | System.Byte |
| char | Char | System.Char |
| decimal | Decimal | System.Decimal |
| double | Double | System.Double |
| short | Int16 | System.Int16 |
| int | Int32 | System.Int32 |
| long | Int64 | System.Int64 |
| object | Object | System.Object |
| sbyte | SByte | System.SByte |
| float | Single | System.Single |
| string | String | System.String |
| ushort | UInt16 | System.UInt16 |
| uint | UInt32 | System.UInt32 |
| ulong | UInt64 | System.UInt64 |
The native-sized integer aliases nint and nuint were introduced in C# 9. SA1121 considers IntPtr/UIntPtr and their aliases starting in C# 11 when targeting .NET 7 or later (detected via System.Runtime.CompilerServices.RuntimeFeature.NumericIntPtr). In earlier language versions or runtimes, including C# 9, these types do not trigger SA1121 diagnostics.
To fix a violation of this rule, replace the type with the built-in alias for the type.
[SuppressMessage("StyleCop.CSharp.ReadabilityRules", "SA1121:UseBuiltInTypeAlias", Justification = "Reviewed.")]#pragma warning disable SA1121 // UseBuiltInTypeAlias
#pragma warning restore SA1121 // UseBuiltInTypeAlias