What is the equivalent code in C# of the Vb 'Type'

本文关键字:the Vb Type of is equivalent code in What | 更新日期: 2023-09-27 18:25:53

我在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是什么?

What is the equivalent code in C# of the Vb 'Type'

我已经很久没有看VB6代码了,但我相信这是一个固定长度的字符串。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; } 
}

使其成为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; }
}

如何在classstruct之间做出选择?

选择struct,如果:

  1. 对象很小
  2. 这些值将是不可变的(读取:不更改)
  3. 你有很多东西

否则,选择class

您想构建一个结构吗?

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