If the symbol that you wish to behave as a constant is a field you could use the readonly modifier instead of constant. This will allow you to assign a value to the symbol either in the field initializer or the (static/non-static) constructor.
From MSDN:
The readonly keyword differs from the
const keyword. A const field can only
be initialized at the declaration of
the field. A readonly field can be
initialized either at the declaration
or in a constructor. Therefore,
readonly fields can have different
values depending on the constructor
used. Also, although a const field is
a compile-time constant, the readonly
field can be used for run-time
constants, as in this line: public
static readonly uint l1 =
(uint)DateTime.Now.Ticks;
Example:
class A
{
readonly double d;
public A()
{
double w = -21.0;
d = w;
}
}