Your code is using what's called a nullable type. An enum, much like an int or a DateTime, is what is known as a "value type", which is required to always have some value. Nullable types allow you to treat value types as if they do allow null values.
For example, this code is invalid and won't compile because enums cannot be null:
E_Week week = null;
But this code is valid:
E_Week? week = null;
And it's exactly the same as this:
Nullable<E_Week> week = null;
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…