Q:

What is 'long?' data type?

I am going over some code written by another developer and am not sure what long? means:
protected string AccountToLogin(long? id)
{
   string loginName = "";
   if (id.HasValue)
   {
      try
      {....

A:

long is the same as Int64
long data type
The ? means it is nullable

A nullable type can represent the
  normal range of values for its
  underlying value type, plus an
  additional null value

Nullable Types
Nullable example:
int? num = null;
if (num.HasValue == true)
{
    System.Console.WriteLine("num = " + num.Value);
}
else
{
    System.Console.WriteLine("num = Null");
}

This allows you to actually check for a null value instead of trying to assign an arbitrary value to something to check to see if something failed.
I actually wrote a blog post about this here.

A:

long is an Int64, the ? makes it nullable.

A:

long? is a 64-bit, nullable integer.
To clarify, nullable means it can be null or an integer number ( 0, 1, etc.).

