C# int.MaxValue

Maximum and minimum values

An int has a maximum value it can represent. This value is found with int.MaxValue. The minimum value too can be determined with int.MinValue. Every integer or typed number in the C# language has a specific max value. That number is different for int, uint, short and ushort.

This C# article shows the int.MaxValue and int.MinValue constants. It displays other constants.

Values

First, here we look at MSDN to see what Microsoft says. It states that MaxValue is a "public const int". With a bit of exploration, I found this information about the MaxValue and MinValue constants.

.NET Framework information

short.MaxValue 32767

short.MinValue -32768

ushort.MaxValue 65535

ushort.MinValue 0

int.MaxValue 2,147,483,647

int.MinValue -2,147,483,648

uint.MaxValue 4,294,967,295

uint.MinValue 0

long.MaxValue 9,223,372,036,854,775,807

long.MinValue -9,223,372,036,854,775,808

double.MinValue Really small

double.MaxValue Really big

Numbers. The above fields are constants and can be accessed anywhere with the composite name. By using these constants, you can avoid typing out 10-digit numbers in your programs. However, they are not equivalent to infinity.

Example

Here we clarify the logic in loops. One problem I have dealt with is keeping track of the lowest number found. You can use int.MaxValue to start the value really high, and then any lower number will be valid.

Program that uses int.MaxValue [C#]

using System;

class Program
{
    static void Main()
    {
	int[] integerArray = new int[]
	{
	    10000,
	    600,
	    1,
	    5,
	    7,
	    3,
	    1492
	};

	// This will track the lowest number found
	int lowestFound = int.MaxValue;

	foreach (int i in integerArray)
	{
	    // By using int.MaxValue as the initial value,
	    // this check will succeed (almost) always.
	    if (lowestFound > i)
	    {
		lowestFound = i;
		Console.WriteLine(lowestFound);
	    }
	}
    }
}

Output
    (All values are lower than int.MaxValue)

10000
600
1

Beware edges. When you start your variable at MaxValue, you will want to know the constraints in your program. If the MaxValue can occur, then you will need to be careful with the logic. It would work correctly here though.

Optimization notes

Performance optimization

In C# and Windows, there is no performance boost in using smaller data types in loops. Using ushort instead of int just creates unclear code. However, always prefer ushort and short, also byte, for data structures, because that reduces memory use.

Constant ints

Const keyword

When you have other constants to define, follow Microsoft's example and declare them as "public const int ValueName". This has great performance and is standard, and also clear for other developers to read. It works well with IntelliSense. Instead of using int.MaxValue and int.MinValue, consider nullable types, used with Nullable<int> or 'int?'. But the public constants are simpler.

Nullable Int

Summary

The C# programming language

Here we saw values and examples for the max and min constants on number types in the C# programming language. I suggest that you avoid typing out numbers like -2,147,483,648 unless you have to—and here you don't have to. Use Microsoft's public constants for fast and clear code. Sometimes it's effective to start an int at int.MaxValue when you are looking for the lowest value in a loop.

Int Type
.NET