I'm working on an application that requires access to public strings. However, I also wish to restrict write access. Since I have many strings, I want to avoid having a getter and private setter for each.
See code below:
public readonly string privateMem, peakVM, peakPaged, pagedSysMem, pagedMem, nonpagedSysMem;
public override void Capture()
{
using (Process p = Process.GetCurrentProcess())
{
// Throws error as privateMem can't be assigned a value
privateMem = string.Format("{0:N0} K", p.PrivateMemorySize64 / 1024);
peakVM = string.Format("{0:N0} K", p.PeakVirtualMemorySize64 / 1024);
peakPaged = string.Format("{0:N0} K", p.PeakPagedMemorySize64 / 1024);
pagedSysMem = string.Format("{0:N0} K", p.PagedSystemMemorySize64 / 1024);
pagedMem = string.Format("{0:N0} K", p.PagedMemorySize64 / 1024);
nonpagedSysMem = string.Format("{0:N0} K", p.NonpagedSystemMemorySize64 / 1024);
}
}
I know there are ways to assign a value to readonly fields with reflection, however I've gathered from several other stackoverflow questions that this is a terrible idea.
So in conclusion:
1. How can I assign a value to readonly strings without reflection, or does a better solution exist without using verbose getters and setters?
2. Is there a way to declare a variable, assign it a value, and then designate it as readonly?
Aucun commentaire:
Enregistrer un commentaire