2010-11-17 71 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');