Sorry for taking so long to get to this, I typed my initial reply before leaving for work this morning and only just got back to the PC. Let me try provide a little more detail.
As long as the expression assigned in the const declaration can be evaluated at compile time, which is the only legal declaration of a const in C#, the compiler will evaluate the expression and replace all references to the const with the actual value of the evaluated expression.
For example (This is just hand coded so excuse any typos, read it for what it is, an example to demonstrate the concept)
// Declare some constants
const int MillisecondsPerSecond = 1000;
const int MillisecondsPerMinute = 60 * MillisecondsPerSecond;
...
// Now use one of the constants, assume that totalMilliseconds is a value that came from some timing operation
var totalMinutes = totalMilliseconds / MillisecondsPerMinute;
When the above is compiled the compiler actually evaluates the expression 60 * MillisecondsPerSecond and gets the value 60000, the compiler can do this because the entire expression is made up of constants that cannot change at runtime therefore the compile time evaluation is safe. The compiler then replaces all references to MillisecondsPerMinute with the literal value 60000. So the above compiles as if you have typed the following:
var totalMinutes = totalMilliseconds / 60000;
From this you can see that using the constant or the literal value does not have any performance difference.
There is a serious consequence to this. If you are building a library and you define a const as Public, users of you library will use your that const which in their code will be replaced at compile time with the value of the const at the time you compiled the library. So it is as if the caller had just directly typed the resulting value into their own code.
Now at a later point, you release a new version of your library in which the value of the const has changed, external will not see the changed value it they just update your library assemblies without recompiling their code which references the const value within your library. This is because the const value was baked into their binary files at the time their compilation took place with the older version of the library.
So the golden rule, make sure that what you think is const today is truly constant. Otherwise you should consider using read only variable, which have the overhead of an additional level of indirection, but that might bring the required flexibility.
Few, sorry for the long post. I hope I have been able to help in some way.