I have three properties as follow:-
public Nullable<double> SPEED { get; set; }
public Nullable<Int64> PROCESSORCOUNT { get; set; }
public string CPUNAME { get; set; }
now inside my asp.net mvc5 web application's controller class, if i pass null for the above three variables, as follow:-
query["proSpeed"] = sj.SPEED.ToString();
query["proCores"] = sj.PROCESSORCOUNT.ToString();
query["proType"] = sj.CPUNAME.ToString();
then the toString() will only raise an exception on the null string mainly sj.CPUNAME.ToString();, so can anyone adivce why ToString() will not raise an exception if i try to convert double? or long? that contain null values to string, but it will raise a null reference exception only if the string is null ?

To simplify it:
int? x = null;
string result = x.ToString(); // No exception
Here null isn't a null reference. It's just a null value of the type int?, i.e. a value of type Nullable<int> where HasValue is false.
You're just invoking the Nullable<T>.ToString() method on that value. No null references are involved, so there's no NullReferenceException. The behaviour is documented as:
The text representation of the value of the current
Nullable<T>object if theHasValueproperty is true, or an empty string ("") if theHasValueproperty is false.
In other words, it's effectively implemented as:
return HasValue ? Value.ToString() : "";
Note that this only works if the compile-time type is the nullable type.
If you end up boxing a null value, you'll end up with a null reference:
object y = x; // Oh noes, now y is a null reference...
string bang = y.ToString(); // so this throws!
See more on this question at Stackoverflow