自定义数据类型而不是使用字符串

时间:2015-10-12 08:53:50

标签: c# struct types

如何使用3个选项创建自定义数据类型。

type pageSize

可能的价值......

Small
Medium 
Large

我希望能够举例说我的对象被称为页面说...

page.size = pageSize.Small
直到现在我一直在使用字符串,但觉得这不理想。

1 个答案:

答案 0 :(得分:4)

您可以将enumerations用于此目的:

public enum PageSize {
  Small, Medium, Large
}

然后,您可以将page.size声明为PageSize并使用您想象的内容:

page.size = pageSize.Small

如果只是关于那些选项(或者可能是关于其他选项的可数列表),这很好。但是,实际的物理尺寸转换必须发生在其他地方 - 而其他地方总是必须与枚举保持同步。特别是对于页面大小,我可能会选择不同的内容:

public class PageSize {
  public double Width { get; private set; }
  public double Height { get; private set; }
  public PageSize(double width, double height) {
    Width = width;
    Height = height;
  }

  public static PageSize A4 = new PageSize(210, 297);
  public static PageSize Letter = new PageSize(215.9, 279.4);

  public static PageSize Small = new PageSize(148, 210);
  public static PageSize Medium = A4;
  public static PageSize Large = new PageSize(297, 420);
}

现在这是一个实际的数据类型,其中包含属性和一组与大小相对应的静态预定义值。这里的优点是您可以在同一个地方定义所有预定义的大小,而其他代码不需要关心SmallLarge的含义,但只能使用测量值。

但缺点是,您没有获得所有预定义值的同样方便的方法。使用enum即可

Enum.GetValues(typeof(PageSize))

并将其绑定到UI元素,例如一个ComboBox。对于类中的静态字段,您需要使用反射来做到这一点,这不是很好。