c# - C# 中的不可变本地值 - 一个特定的用例

标签 c# constants immutability

我知道这个一般话题以前在这里讨论过。我感兴趣的是我的具体情况是否有好的解决方案:

我有一个像这样的命令行工具(简化版):

static void Main(string[] args)
{
    if (args.Length < 2)
    {
        Console.WriteLine("Usage: MyTool <InputFolder> <OutputFolder>");
        return;
    }

    string inputFolder = args[0];
    string outputFolder = args[1];

    // ...
}

我为参数值分配名称以使代码更具可读性。还要声明,这些值以后不会修改。

constreadonly 都不能在这里使用,因为这些值在编译时是未知的,而且它们是局部“变量”而不是类成员。

那么我怎样才能使这段代码更具表现力和可读性呢?

最佳答案

我的建议是创建一个包含变量的类

public class Immutable
{
    public Immutable(string[] args)
    {
         InputFolder = args[0];
         OutputFolder = args[1];
    }
    public readonly string InputFolder;
    public readonly string OutputFolder;
}

然后

var m = new Immutable(args)

关于c# - C# 中的不可变本地值 - 一个特定的用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53226428/

相关文章:

cocoa - NSString 赋值和保留

c# - Entity Framework 6. 禁用模型缓存

c# - 如何在 .NET Core 的主布局 View 中呈现特定 Controller 的 Action ?

python - python中的类常量

java - Java中可变对象的封装

python - 在什么情况下相等的字符串共享相同的引用?

objective-c - let/var 如何解决可变性?

c# - .asax.cs 页面附加 :443 to URLs

c# - 使用 WiX 创建现有文件夹的桌面快捷方式

C中双向链表中的const结构正在被修改