2010-11-17 52 views
1

我需要与00开始从1至10 0 10至99数据类型在C#

的整数数据类型的有没有在C#

非常感谢您的任何数据类型。 ...

回答

7

你可以使用几乎所有的整数类型(intuint等);重要的部分是你如何格式它。在这种情况下:

string s = i.ToString("000"); 

的整数数据类型是只是价值 - 领先的零不存在或不存在 - 根本不是一个整数的工作。

你总是可以创建过程的自定义struct,取整数值在constuctor(也许自定义转换运算符),覆盖ToString()方法(可能EqualsGetHashCode等)。


只是踢:

public struct TriDigit : IComparable, IComparable<TriDigit>, IComparable<int>, IEquatable<TriDigit>, IEquatable<int> 
{ 
    private readonly int value; 
    public TriDigit(int value) 
    { 
     if (value < 0 || value > 999) throw new ArgumentOutOfRangeException("value"); 
     this.value = value; 
    } 
    public override string ToString() 
    { 
     return value.ToString("000"); 
    } 
    public override bool Equals(object obj) 
    { 
     if (obj == null) return false; 
     if (obj is TriDigit) return ((TriDigit)obj).value == value; 
     if (obj is int) return ((int)obj) == value; 
     return false; 
    } 
    public int CompareTo(object obj) 
    { 
     if (obj == null) return -1; 
     if(obj is TriDigit) return value.CompareTo(((TriDigit)obj).value); 
     if (obj is int) return value.CompareTo((int)obj); 
     return -1; 
    } 
    public override int GetHashCode() 
    { 
     return value; 
    } 
    public static explicit operator TriDigit(int value) 
    { 
     return new TriDigit(value); 
    } 
    public static implicit operator int(TriDigit value) 
    { 
     return value.value; 
    } 

    int IComparable<TriDigit>.CompareTo(TriDigit other) 
    { 
     return value.CompareTo(other.value); 
    } 
    int IComparable<int>.CompareTo(int other) 
    { 
     return value.CompareTo(other); 
    } 
    bool IEquatable<TriDigit>.Equals(TriDigit other) 
    { 
     return value == other.value; 
    } 
    bool IEquatable<int>.Equals(int other) 
    { 
     return value == other; 
    } 
} 
0

您可以简单地使用int,或者如果它不能为负uint(无符号整数)。数据类型较小,但对于大多数应用程序,它们不值得担心。

0

如果你说你需要一个整数,合法的范围从1到10,与从零开始的索引,那么答案是否定的。你需要为此制作自己的ADT。

2

听起来像是你想要的格式字符串,而不是数据类型。

Console.WriteLine("{0:D3}", i); 
0

您可以使用PadLeft(INT totalWidth,焦炭paddingChar)如..

int myNumber=12 
string myStringNumber = myNumber.ToString().PadLeft(3, '0');