gpt4 book ai didi

c# - 固定长度的字符串对象 C#

转载 作者:可可西里 更新时间:2023-11-01 03:05:58 26 4
gpt4 key购买 nike

我有一个类,其中我想使用固定大小的字符串。固定大小的原因是该类“序列化”为文本文件具有固定长度的值。我想避免为 foreach 值编写保护子句,而是让类处理它。

所以我有大约 30 个属性,它们看起来像这样

    public String CompanyNumber
{
get
{
return m_CompanyNumber.PadLeft(5, ' ');
}
set
{
if (value.Length > 5)
{
throw new StringToLongException("The CompanyNumber may only have 5 characters", "CompanyNumber");
}
m_CompanyNumber = value;
}
}

我想要一个可以自行处理的字符串。目前我有以下内容:

public class FixedString
{
String m_FixedString;

public FixedString(String value)
{
if (value.Length > 5)
{
throw new StringToLongException("The FixedString value may consist of 5 characters", "value");
}
m_FixedString= value;
}

public static implicit operator FixedString(String value)
{
FixedString fsv = new FixedString(value);
return fsv;
}

public override string ToString()
{
return m_FixedString.PadLeft(5,' ');
}
}

这个解决方案的问题是我无法在“编译时”设置字符串长度。

如果最后能变成这样就好了

public FixedString<5> CompanyNumber { get; set; }

最佳答案

我会回过头来质疑设计。该解决方案将两个问题融合在一起——内部应用程序状态和存储格式——这两个问题应该保持独立。

您可以使用 MaxLengthAttribute 修饰每个字符串属性,然后对其进行验证,但是用于(反)序列化存储格式的代码应该完全独立。它可以使用相同的属性来收集字段长度以进行存储(如果这个巧合成立的话),但您的内部表示不应该“知道”存储详细信息。

关于c# - 固定长度的字符串对象 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37189640/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com