0

我有一个旧系统VB6,现在我正在尝试使用C#.

我有这个 VB6 代码:

Private Type T_Parameters

   Name        As String * 16  (What is this ? '* 16')
   YearsOld    As Byte
   Day         As Byte

End Type

中的等效代码是C#什么?这是什么Type

4

3 回答 3

4

自从我查看 VB 6 代码以来已经有很长时间了,但我相信这是一个固定长度的字符串。.NET 不支持固定长度的字符串,但您可以使用char[]. 我相信 C# 等价物是:

private class T_Parameters
{
    public string Name { get; set; } 
    public byte YearsOld { get; set; } 
    public byte Day { get; set; } 
}

或者可能是这样,这将阻止用户更改Name字段的大小:

private class T_Parameters
{
    public char[] Name { get; private set; } 
    public byte YearsOld { get; set; } 
    public byte Day { get; set; } 

    public T_Parameters() {
        Name = new String(' ', 16).ToCharArray();
    }
}

或者,您可以这样做:

private class T_Parameters
{
    private string name = new String(' ', 16);

    public string Name 
    { 
        get { return this.name; }
        set { this.name = value.PadRight(16, ' ').Substring(0, 16); }
    }

    public byte YearsOld { get; set; } 
    public byte Day { get; set; } 
}
于 2013-08-01T14:56:36.127 回答
2

使它成为一个struct,像这样:

private struct T_Parameters
{
    string Name;
    byte YearsOld;
    byte Day;
}

或者一个class,像这样:

public class T_Parameters
{
    public string Name { get; set; }
    public byte YearsOld { get; set }
    public byte Day { get; set; }
}

class或之间如何取舍struct

选择struct,如果:

  1. 物体很小
  2. 这些值将是不可变的(阅读:不改变)
  3. 你有很多对象

否则,选择class

于 2013-08-01T15:02:05.360 回答
1

您是否正在寻找构建结构?

private struct T_Parameters
{
    string Name;
    byte YearsOld;
    byte Day;
}
于 2013-08-01T14:55:15.957 回答