C# 如何使用c在类中使用具有常量值的子属性创建属性#

C# 如何使用c在类中使用具有常量值的子属性创建属性#,c#,stringbuilder,C#,Stringbuilder,我想使用StringBuilder()类创建一个字符串。我收集了一些员工的记录。员工的每个记录都有诸如名字、姓氏、城市等列。 我要创建的字符串将分别具有上述列的值。 为此,我需要创建一个类 class Columns { string Firstname { startPosition = 1; length = 32; } string LastName { startPosition = 33;

我想使用StringBuilder()类创建一个字符串。我收集了一些员工的记录。员工的每个记录都有诸如名字、姓氏、城市等列。 我要创建的字符串将分别具有上述列的值。 为此,我需要创建一个类

class Columns
{
    string Firstname
    {
        startPosition = 1;
        length = 32;
    }

    string LastName
    {
        startPosition = 33;
        length = 32;
    }
}

在我正在构建的字符串中,我需要在前面提到的各个起始位置插入Firstname和Lastname的值。我是新手,我需要帮助创建上述类。上面指定的代码只是类应该是什么样的原型,但我不知道如何确切地创建它。我需要属性startPosition和length出现在所有列中,并且这些值需要硬编码。对不起,我的问题含糊不清。请帮忙。

让我先告诉你,没有“子属性”这样的东西。您可以做的是让一个类的属性/字段公开属性本身

因此,您可能希望为一个
创建一个
,然后创建一个
列表
,以跟踪列,如以下示例所示

public class Column
{
    public string Name { get; set; }
    public int StartPos { get; set; }
    public int Length { get; set; }
}

public class Test
{
    private List<Column> Columns = new List<Column>();

    public Test()
    {
        this.Columns.Add(new Column { Name = "FirstName", StartPos = 1, Length = 32 });
        this.Columns.Add(new Column { Name = "LastName", StartPos = 33, Length = 32 });
    }

    public string GetThatString(string str)
    {
        foreach (var col in this.Columns)
        {
            // Do what you need. Sample:
            var item = str.Substring(col.StartPos, col.Length);
            Console.WriteLine("{0}: {1}", col.Name, item);
        }
    }
}
公共类列
{
公共字符串名称{get;set;}
public int StartPos{get;set;}
公共整数长度{get;set;}
}
公开课考试
{
私有列表列=新列表();
公开考试()
{
Add(新列{Name=“FirstName”,StartPos=1,Length=32});
Add(新列{Name=“LastName”,StartPos=33,Length=32});
}
公共字符串GetHatString(字符串str)
{
foreach(此.Columns中的变量col)
{
//做你需要的。示例:
变量项=str.Substring(col.StartPos,col.Length);
Console.WriteLine(“{0}:{1}”,列名称,项);
}
}
}
然后,您可以迭代列表中的项目,并让字符串生成器完成您需要的工作。
当然,您也可以为每列创建一个属性,而不是所有列的列表

这真的不是一个有效的类-不清楚您在这里试图做什么。类不能在这样的字符串中指定位置。听起来您可能想要通过反射检索属性,但实际上并不清楚。我建议您尝试使用
StringBuilder
在代码中对其进行硬编码-暂时忽略它的类部分。了解如何使用
StringBuilder
并应用填充等,然后您可以了解如何将该信息放入属性中。听起来属性不应该只是
string
类型,而是它们自己的小类/结构。类似于
公共类MyPropertyType{public string Value{get;set;}public int StartPosition{get;set;}public int Length{get;set;}
--然后您的
Colums
类可以看起来像
类列{MyPropertyType Firstname{get;set;}MyPropertyType LastName{get;set;}
--(顺便问一下,为什么
Firstname
LastName
?为什么不
Firstname
LastName
来匹配另一个的大小写?)您好,谢谢您的回答。关于大小写,这只是一个键入错误。我不想在这里使用get set属性,因为我可能知道startPosition和length字段的值。我在想,如果我可以获取这些值,那么我可以将其传递给
StringBuilder.Insert(startPos,“string”)
方法,并将其放入foreach循环中,以便每次读取FirstName或LastName的值时,都应在相应的起始位置插入值。