Decimal.ToSByte(Decimal) 方法

定义

重要

此 API 不符合 CLS。

符合 CLS 的替代方案
System.Decimal.ToInt16(Decimal)

将指定的 Decimal 值转换为等效的 8 位有符号整数。Converts the value of the specified Decimal to the equivalent 8-bit signed integer.

public:
 static System::SByte ToSByte(System::Decimal value);
[System.CLSCompliant(false)]
public static sbyte ToSByte (decimal value);
static member ToSByte : decimal -> sbyte
Public Shared Function ToSByte (value As Decimal) As SByte

参数

value
Decimal

要转换的十进制数。The decimal number to convert.

返回

等效于 value 的 8 位有符号整数。An 8-bit signed integer equivalent to value.

属性

异常

value 小于 MinValue 或大于 MaxValuevalue is less than MinValue or greater than MaxValue.

示例

下面的示例使用 ToSByte 方法将十进制数字转换为 SByte 值。The following example uses the ToSByte method to convert decimal numbers to SByte values.

using System;

class Example
{
   public static void Main( )
   {
      decimal[] values = { 123m, new Decimal(78000, 0, 0, false, 3),
                           78.999m, 255.999m, 256m,             
                           127.999m, 128m, -0.999m,              
                           -1m,  -128.999m, -129m };

      foreach (var value in values) {
         try {
            sbyte number = Decimal.ToSByte(value);
            Console.WriteLine("{0} --> {1}", value, number);       
         }
         catch (OverflowException e)
         {
             Console.WriteLine("{0}: {1}", e.GetType().Name, value);
         }   
      }
   }
}
// The example displays the following output:
//     78 --> 78
//     78.000 --> 78
//     78.999 --> 78
//     OverflowException: 255.999
//     OverflowException: 256
//     127.999 --> 127
//     OverflowException: 128
//     -0.999 --> 0
//     -1 --> -1
//     -128.999 --> -128
//     OverflowException: -129
Module Example
   Public Sub Main()
      Dim values() As Decimal = { 78d, New Decimal(78000, 0, 0, false, 3), 
                                  78.999d, 255.999d, 256d,
                                  127.999d, 128d, -0.999d, 
                                  -1d,  -128.999d, -129d }

      For Each value In values
         Try
            Dim number As SByte = Decimal.ToSByte(value)
            Console.WriteLine("{0} --> {1}", value, number)       
         Catch e As OverflowException
             Console.WriteLine("{0}: {1}", e.GetType().Name, value)
         End Try   
      Next
   End Sub
End Module
' The example displays the following output:
'     78 --> 78
'     78.000 --> 78
'     78.999 --> 78
'     OverflowException: 255.999
'     OverflowException: 256
'     127.999 --> 127
'     OverflowException: 128
'     -0.999 --> 0
'     -1 --> -1
'     -128.999 --> -128
'     OverflowException: -129

注解

还可以通过使用 Explicit 赋值运算符将 Decimal 值转换为8位有符号整数。You can also convert a Decimal value to an 8-bit signed integer by using the Explicit assignment operator. 由于运算符执行收缩转换,因此必须在 Visual Basic 中C#使用转换运算符或转换函数。Because the operator performs a narrowing conversion, you must use a casting operator in C# or a conversion function in Visual Basic.

适用于

另请参阅