Double.TryParse-Methode (String, Double)
Assembly: mscorlib (in mscorlib.dll)
public static boolean TryParse ( String s, /** @attribute OutAttribute() */ /** @ref */ double result )
Parameter
- s
Eine Zeichenfolge, die die zu konvertierende Zahl enthält.
- result
Diese zurückgegeben wird, enthält sie bei erfolgreicher Konvertierung eine Gleitkommazahl mit doppelter Genauigkeit, die dem s-Parameter entspricht, oder 0 (null), wenn die Konvertierung nicht durchgeführt werden konnte. Bei der Konvertierung tritt ein Fehler auf, wenn der s-Parameter NULL (Nothing in Visual Basic) ist, keine Zahl in einem gültigen Format ist oder eine Zahl kleiner als MinValue oder größer als MaxValue darstellt. Dieser Parameter wird nicht initialisiert übergeben.
Rückgabewert
true, wenn s erfolgreich konvertiert wurde, andernfalls false.Die TryParse-Methode entspricht der Parse(String)-Methode, mit dem Unterschied, dass die TryParse-Methode bei einem Konvertierungsfehler keine Ausnahme auslöst.
Der s-Parameter kann PositiveInfinitySymbol, NegativeInfinitySymbol, NaNSymbol oder eine Zeichenfolge der folgenden Form enthalten:
[LR][Vorzeichen]Ganzzahl-Ziffern[.[Bruch-Ziffern]][e[Vorzeichen]Exponenten-Ziffern][LR]
Optionale Elemente stehen in eckigen Klammern ("[" und "]"). Elemente, die den Begriff "Ziffern" enthalten, bestehen aus einer Folge von Ziffern zwischen 0 und 9.
lrEine Folge von Leerraumzeichen.
VorzeichenEin Minuszeichen oder ein Pluszeichen.
Ganzzahl-ZiffernEine Folge von Ziffern, die den ganzzahligen Teil der Zahl darstellt. Folgen von Ganzzahl-Ziffern können durch Gruppentrennzeichen unterteilt werden. (In manchen Kulturen werden Tausendergruppen z. B. durch ein Komma (",") getrennt.) Ganzzahl-Ziffern dürfen fehlen, wenn Bruch-Ziffern vorhanden sind.
'.'Ein kulturabhängiges Dezimaltrennzeichen.
Bruch-ZiffernEine Folge von Ziffern, die den gebrochenen Teil der Zahl darstellt.
'e'Ein großes oder kleines 'e', das Exponentialschreibweise (wissenschaftliche Schreibweise) anzeigt.
Exponenten-ZiffernEine Folge von Ziffern, die einen Exponenten darstellt.
Beispiele für s sind "100", "-123,456,789", "123.45e+6", "+500", "5e2", "3.1416", "600.", "-.123" und "-Infinity".
Weitere Informationen zu numerischen Formate finden Sie unter Übersicht über Formatierung.
Wenn während eines Analysevorgangs im s-Parameter ein Trennzeichen gefunden wird und die Dezimal- und Gruppentrennzeichen für Währungs- und Zahlenangaben identisch sind, dann wertet der Analysevorgang das Trennzeichen als Dezimaltrennzeichen und nicht als Gruppentrennzeichen. Weitere Informationen über Trennzeichen finden Sie unter CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparator und NumberGroupSeparator.
Im folgenden Codebeispiel werden Überladungen der TryParse-Methode für mehrere Basistypen und die TryParseExact-Methode veranschaulicht.
// This example demonstrates overloads of the TryParse method for // several base types, and the TryParseExact method for DateTime. // In most cases, this example uses the most complex overload; that is, the overload // with the most parameters for a particular type. If a complex overload specifies // null (Nothing in Visual Basic) for the IFormatProvider parameter, formatting // information is obtained from the culture associated with the current thread. // If a complex overload specifies the style parameter, the parameter value is // the default value used by the equivalent simple overload. using System; using System.Globalization; class Sample { public static void Main() { bool result; CultureInfo ci; string nl = Environment.NewLine; string msg1 = "This example demonstrates overloads of the TryParse method for{0}" + "several base types, as well as the TryParseExact method for DateTime.{0}"; string msg2 = "Non-numeric types:{0}"; string msg3 = "{0}Numeric types:{0}"; string msg4 = "{0}The following types are not CLS-compliant:{0}"; // Non-numeric types. Boolean booleanVal; Char charVal; DateTime datetimeVal; // Numeric types. Byte byteVal; Int16 int16Val; Int32 int32Val; Int64 int64Val; Decimal decimalVal; Single singleVal; Double doubleVal; // The following types are not CLS-compliant. SByte sbyteVal; UInt16 uint16Val; UInt32 uint32Val; UInt64 uint64Val; // Console.WriteLine(msg1, nl); // Non-numeric types: Console.WriteLine(msg2, nl); // DateTime // TryParse: // Assume current culture is en-US, and dates of the form: MMDDYYYY. result = DateTime.TryParse("7/4/2004 12:34:56", out datetimeVal); Show(result, "DateTime #1", datetimeVal.ToString()); // Use fr-FR culture, and dates of the form: DDMMYYYY. ci = new CultureInfo("fr-FR"); result = DateTime.TryParse("4/7/2004 12:34:56", ci, DateTimeStyles.None, out datetimeVal); Show(result, "DateTime #2", datetimeVal.ToString()); // TryParseExact: // Use fr-FR culture. The format, "G", is short date and long time. result = DateTime.TryParseExact("04/07/2004 12:34:56", "G", ci, DateTimeStyles.None, out datetimeVal); Show(result, "DateTime #3", datetimeVal.ToString()); // Assume en-US culture. string[] dateFormats = {"f", "F", "g", "G"}; result = DateTime.TryParseExact("7/4/2004 12:34:56 PM", dateFormats, null, DateTimeStyles.None, out datetimeVal); Show(result, "DateTime #4", datetimeVal.ToString()); Console.WriteLine(); // Boolean result = Boolean.TryParse("true", out booleanVal); Show(result, "Boolean", booleanVal.ToString()); // Char result = Char.TryParse("A", out charVal); Show(result, "Char", charVal.ToString()); // Numeric types: Console.WriteLine(msg3, nl); // Byte result = Byte.TryParse("1", NumberStyles.Integer, null, out byteVal); Show(result, "Byte", byteVal.ToString()); // Int16 result = Int16.TryParse("-2", NumberStyles.Integer, null, out int16Val); Show(result, "Int16", int16Val.ToString()); // Int32 result = Int32.TryParse("3", NumberStyles.Integer, null, out int32Val); Show(result, "Int32", int32Val.ToString()); // Int64 result = Int64.TryParse("4", NumberStyles.Integer, null, out int64Val); Show(result, "Int64", int64Val.ToString()); // Decimal result = Decimal.TryParse("-5.5", NumberStyles.Number, null, out decimalVal); Show(result, "Decimal", decimalVal.ToString()); // Single result = Single.TryParse("6.6", (NumberStyles.Float | NumberStyles.AllowThousands), null, out singleVal); Show(result, "Single", singleVal.ToString()); // Double result = Double.TryParse("-7", (NumberStyles.Float | NumberStyles.AllowThousands), null, out doubleVal); Show(result, "Double", doubleVal.ToString()); // Use the simple Double.TryParse overload, but specify an invalid value. result = Double.TryParse("abc", out doubleVal); Show(result, "Double #2", doubleVal.ToString()); // Console.WriteLine(msg4, nl); // SByte result = SByte.TryParse("-8", NumberStyles.Integer, null, out sbyteVal); Show(result, "SByte", sbyteVal.ToString()); // UInt16 result = UInt16.TryParse("9", NumberStyles.Integer, null, out uint16Val); Show(result, "UInt16", uint16Val.ToString()); // UInt32 result = UInt32.TryParse("10", NumberStyles.Integer, null, out uint32Val); Show(result, "UInt32", uint32Val.ToString()); // UInt64 result = UInt64.TryParse("11", NumberStyles.Integer, null, out uint64Val); Show(result, "UInt64", uint64Val.ToString()); } protected static void Show(bool parseResult, string typeName, string parseValue) { string msgSuccess = "Parse for {0} = {1}"; string msgFailure = "** Parse for {0} failed. Invalid input."; // if (parseResult == true) Console.WriteLine(msgSuccess, typeName, parseValue); else Console.WriteLine(msgFailure, typeName); } } /* This example produces the following results: This example demonstrates overloads of the TryParse method for several base types, as well as the TryParseExact method for DateTime. Non-numeric types: Parse for DateTime #1 = 7/4/2004 12:34:56 PM Parse for DateTime #2 = 7/4/2004 12:34:56 PM Parse for DateTime #3 = 7/4/2004 12:34:56 PM Parse for DateTime #4 = 7/4/2004 12:34:56 PM Parse for Boolean = True Parse for Char = A Numeric types: Parse for Byte = 1 Parse for Int16 = -2 Parse for Int32 = 3 Parse for Int64 = 4 Parse for Decimal = -5.5 Parse for Single = 6.6 Parse for Double = -7 ** Parse for Double #2 failed. Invalid input. The following types are not CLS-compliant: Parse for SByte = -8 Parse for UInt16 = 9 Parse for UInt32 = 10 Parse for UInt64 = 11 */
// This example demonstrates overloads of the TryParse method for
// several base types, and the TryParseExact method for DateTime.
// In most cases, this example uses the most complex overload; that is,
// the overload with the most parameters for a particular type. If a
// complex overload specifies null (Nothing in Visual Basic) for the
// IFormatProvider parameter, formatting information is obtained from
// the culture associated with the current thread. If a complex overload
// specifies the style parameter, the parameter value is the default value
// used by the equivalent simple overload.
import System.*;
import System.Globalization.*;
class Sample
{
public static void main(String[] args)
{
boolean result;
CultureInfo ci = null;
String nl = Environment.get_NewLine();
String msg1 = "This example demonstrates overloads of the TryParse "
+ "method for{0}several base types, as well as the TryParseExact "
+ "method for DateTime.{0}";
String msg2 = "Non-numeric types:{0}";
String msg3 = "{0}Numeric types:{0}";
String msg4 = "{0}The following types are not CLS-compliant:{0}";
// Non-numeric types.
System.Boolean booleanVal = (System.Boolean)false;
System.Char charVal = (System.Char)0;
DateTime dateTimeVal = System.DateTime.get_Now();
// Numeric types.
Byte byteVal = null;
Int16 int16Val = (Int16)0;
Int32 int32Val = (Int32)0;
Int64 int64Val = (Int64)0;
Decimal decimalVal = new Decimal(0);
Single singleVal = (Single)0;
//Double doubleVal = new Double(0);
double doubleVal = 0;
// The following types are not CLS-compliant.
SByte sByteVal = (System.SByte)0;
UInt16 uInt16Val = (UInt16)0;
UInt32 uInt32Val = (UInt32)0;
UInt64 uInt64Val = (UInt64)0;
//
Console.WriteLine(msg1, nl);
// Non-numeric types:
Console.WriteLine(msg2, nl);
// DateTime
// TryParse:
// Assume current culture is en-US, and dates of the form: MMDDYYYY.
result = DateTime.TryParse("7/4/2004 12:34:56", dateTimeVal);
Show(result, "DateTime #1", dateTimeVal.ToString());
// Use fr-FR culture, and dates of the form: DDMMYYYY.
ci = new CultureInfo("fr-FR");
result = DateTime.TryParse("4/7/2004 12:34:56", ci,
DateTimeStyles.None, dateTimeVal);
Show(result, "DateTime #2", dateTimeVal.ToString());
// TryParseExact:
// Use fr-FR culture. The format, "G", is short date and long time.
result = DateTime.TryParseExact("04/07/2004 12:34:56", "G", ci,
DateTimeStyles.None, dateTimeVal);
Show(result, "DateTime #3", dateTimeVal.ToString());
// Assume en-US culture.
String dateFormats[] = { "f", "F", "g", "G" };
result = DateTime.TryParseExact("7/4/2004 12:34:56 PM", dateFormats,
null, DateTimeStyles.None, dateTimeVal);
Show(result, "DateTime #4", dateTimeVal.ToString());
Console.WriteLine();
// Boolean
boolean tempBooleanVal = System.Convert.ToBoolean(booleanVal);
result = System.Boolean.TryParse("true",/**@out*/ tempBooleanVal);
Show(result, "Boolean", System.Convert.ToString(tempBooleanVal));
// Char
char tempCharVal = System.Convert.ToChar(charVal);
result = Char.TryParse("A", /**@out*/tempCharVal);
Show(result, "Char", System.Convert.ToString(tempCharVal));
// Numeric types:
Console.WriteLine(msg3, nl);
// Byte
ubyte tempByteVal = System.Convert.ToByte(byteVal);
result = System.Byte.TryParse("1", NumberStyles.Integer, null,
/**@out*/tempByteVal);
Show(result, "Byte", System.Convert.ToString(tempByteVal));
// Int16
short tempInt16Val = System.Convert.ToInt16(int16Val);
result = Int16.TryParse("-2", NumberStyles.Integer, null,
/**@out*/tempInt16Val);
Show(result, "Int16", System.Convert.ToString(tempInt16Val));
// Int32
int tempInt32Val = System.Convert.ToInt32(int32Val);
result = Int32.TryParse("3", NumberStyles.Integer, null,
/**@out*/tempInt32Val);
Show(result, "Int32", System.Convert.ToString(tempInt32Val));
// Int64
long tempInt64Val = System.Convert.ToInt64(int64Val);
result = Int64.TryParse("4", NumberStyles.Integer, null,
/**@out*/tempInt64Val);
Show(result, "Int64", System.Convert.ToString(tempInt64Val));
// Decimal
result = Decimal.TryParse("-5.5", NumberStyles.Number, null,
/**@out*/decimalVal);
Show(result, "Decimal", decimalVal.ToString());
// Single
float tempSingleVal = System.Convert.ToSingle(singleVal);
result = Single.TryParse("6.6", NumberStyles.Float
| NumberStyles.AllowThousands, null, /**@out*/tempSingleVal);
Show(result, "Single", System.Convert.ToString(tempSingleVal));
// Double
result = System.Double.TryParse("-7", NumberStyles.Float
| NumberStyles.AllowThousands, null, /**@out*/doubleVal);
Show(result, "Double", System.Convert.ToString(doubleVal));
// Use the simple Double.TryParse overload, but specify an invalid value.
result = System.Double.TryParse("abc", doubleVal);
Show(result, "Double #2", System.Convert.ToString(doubleVal));
//
Console.WriteLine(msg4, nl);
// SByte
byte tempSByteVal = System.Convert.ToSByte(sByteVal);
result = SByte.TryParse("-8", NumberStyles.Integer, null,
/**@out*/tempSByteVal);
Show(result, "SByte", System.Convert.ToString(tempSByteVal));
// UInt16
result = UInt16.TryParse("9", NumberStyles.Integer, null,
/**@out*/uInt16Val);
Show(result, "UInt16", uInt16Val.ToString());
// UInt32
result = UInt32.TryParse("10", NumberStyles.Integer, null,
/**@out*/uInt32Val);
Show(result, "UInt32", uInt32Val.ToString());
// UInt64
result = UInt64.TryParse("11", NumberStyles.Integer, null,
/**@out*/uInt64Val);
Show(result, "UInt64", uInt64Val.ToString());
} //main
protected static void Show(boolean parseResult,
String typeName, String parseValue)
{
String msgSuccess = "Parse for {0} = {1}";
String msgFailure = "** Parse for {0} failed. Invalid input.";
//
if (parseResult == true) {
Console.WriteLine(msgSuccess, typeName, parseValue);
}
else {
Console.WriteLine(msgFailure, typeName);
}
} //Show
} //Sample
/*
This example produces the following results:
This example demonstrates overloads of the TryParse method for
several base types, as well as the TryParseExact method for DateTime.
Non-numeric types:
Parse for DateTime #1 = 7/4/2004 12:34:56 PM
Parse for DateTime #2 = 7/4/2004 12:34:56 PM
Parse for DateTime #3 = 7/4/2004 12:34:56 PM
Parse for DateTime #4 = 7/4/2004 12:34:56 PM
Parse for Boolean = True
Parse for Char = A
Numeric types:
Parse for Byte = 1
Parse for Int16 = -2
Parse for Int32 = 3
Parse for Int64 = 4
Parse for Decimal = -5.5
Parse for Single = 6.6
Parse for Double = -7
** Parse for Double #2 failed. Invalid input.
The following types are not CLS-compliant:
Parse for SByte = -8
Parse for UInt16 = 9
Parse for UInt32 = 10
Parse for UInt64 = 11
*/
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Referenz
Double-StrukturDouble-Member
System-Namespace
Parse
ToString