C#固定字符串长度 - 编译时检查

The*_*dge 2 c# string-length compile-time

我想声明一个C#值类型,它只允许特定长度的字符串.所述长度应在编译时验证.这在Delphi中是可行的:

type
  TString10 = string[10];
Run Code Online (Sandbox Code Playgroud)

如果我使用所说的tyoe:

var
  sTen : TString10;

sTen := '0123456789A';   //This generates a compile time error
Run Code Online (Sandbox Code Playgroud)

现在据我所知,你不能在C#中声明一个固定长度的字符串类型.我见过的各种解决方案都不提供C#的编译时检查.因为我准备声明我自己的C#值类型结构这是我可以实现的东西.Format()吗?

所有帮助和指示非常感谢.

PS.我真的想实现字符串长度分配的编译时间检查,所以请不要"你为什么......?"

Mar*_*ann 5

鉴于System.String具有此构造函数重载:

public String(char[] value)
Run Code Online (Sandbox Code Playgroud)

你可以像这样创建自己的值类型:

public struct FixedLengthString
{
    private readonly string s;

    public FixedLengthString(char c1, char c2, char c3)
    {
        this.s = new string(new [] { c1, c2, c3 });
    }
}
Run Code Online (Sandbox Code Playgroud)

这个特殊的例子会给你一个正好三个字符的字符串,初始化如下:

var fls = new FixedLengthString('f', 'o', 'o');
Run Code Online (Sandbox Code Playgroud)