首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >设置无反射的ReadOnly字符串

设置无反射的ReadOnly字符串
EN

Stack Overflow用户
提问于 2016-07-08 21:50:54
回答 4查看 117关注 0票数 0

我正在开发一个需要访问公共字符串的应用程序。然而,我也希望限制写访问。因为我有很多字符串,所以我想避免每个字符串都有一个getter和private setter。

请参阅以下代码:

代码语言:javascript
运行
复制
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);
        }

    }    

我知道有一些方法可以通过反射为只读字段赋值,但是我从其他几个堆栈溢出问题中发现这是一个糟糕的想法。

所以总结一下:

如何在没有反射的情况下为只读字符串赋值,或者不使用冗长的getter和setter是否存在更好的解决方案?

有没有一种方法可以声明一个变量,为它赋值,然后将它指定为只读?

EN

Stack Overflow用户

发布于 2016-07-08 22:05:39

代码语言:javascript
运行
复制
public string privateMem        { get; private set; }
public string peakVM            { get; private set; }
public string peakPaged         { get; private set; }
public string pagedSysMem       { get; private set; }
public string pagedMem          { get; private set; }
public string nonpagedSysMem    { get; private set; }

这花了大约20秒。这有什么好罗嗦的?

票数 -1
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38268379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档