Enum.TryParse Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Converte a representação em cadeia do nome ou valor numérico de uma ou mais constantes enumeradas num objeto enumerado equivalente. O valor de retorno indica se a conversão teve sucesso.
Sobrecargas
| Name | Description |
|---|---|
| TryParse(Type, ReadOnlySpan<Char>, Object) |
Converte a representação de caracteres do nome ou valor numérico de uma ou mais constantes enumeradas num objeto enumerado equivalente. |
| TryParse(Type, String, Object) |
Converte a representação em cadeia do nome ou valor numérico de uma ou mais constantes enumeradas num objeto enumerado equivalente. |
| TryParse(Type, ReadOnlySpan<Char>, Boolean, Object) |
Converte a representação de caracteres do nome ou valor numérico de uma ou mais constantes enumeradas num objeto enumerado equivalente. Um parâmetro especifica se a operação é indistinta a maiúsculas e maiúsculas. |
| TryParse(Type, String, Boolean, Object) |
Converte a representação em cadeia do nome ou valor numérico de uma ou mais constantes enumeradas num objeto enumerado equivalente. |
| TryParse<TEnum>(ReadOnlySpan<Char>, TEnum) |
Converte a representação em cadeia do nome ou valor numérico de uma ou mais constantes enumeradas num objeto enumerado equivalente. |
| TryParse<TEnum>(String, TEnum) |
Converte a representação em cadeia do nome ou valor numérico de uma ou mais constantes enumeradas num objeto enumerado equivalente. O valor de retorno indica se a conversão teve sucesso. |
| TryParse<TEnum>(String, Boolean, TEnum) |
Converte a representação em cadeia do nome ou valor numérico de uma ou mais constantes enumeradas num objeto enumerado equivalente. Um parâmetro especifica se a operação é sensível a maiúsculas e minúsculas. O valor de retorno indica se a conversão teve sucesso. |
| TryParse<TEnum>(ReadOnlySpan<Char>, Boolean, TEnum) |
Converte a representação em cadeia do nome ou valor numérico de uma ou mais constantes enumeradas num objeto enumerado equivalente. Um parâmetro especifica se a operação é sensível a maiúsculas e minúsculas. O valor de retorno indica se a conversão teve sucesso. |
TryParse(Type, ReadOnlySpan<Char>, Object)
- Origem:
- Enum.cs
- Origem:
- Enum.cs
- Origem:
- Enum.cs
- Origem:
- Enum.cs
- Origem:
- Enum.cs
Converte a representação de caracteres do nome ou valor numérico de uma ou mais constantes enumeradas num objeto enumerado equivalente.
public:
static bool TryParse(Type ^ enumType, ReadOnlySpan<char> value, [Runtime::InteropServices::Out] System::Object ^ % result);
public static bool TryParse(Type enumType, ReadOnlySpan<char> value, out object? result);
static member TryParse : Type * ReadOnlySpan<char> * obj -> bool
Public Shared Function TryParse (enumType As Type, value As ReadOnlySpan(Of Char), ByRef result As Object) As Boolean
Parâmetros
- enumType
- Type
O tipo de enum a usar para análise sintática.
- value
- ReadOnlySpan<Char>
A representação do nome ou valor numérico de uma ou mais constantes enumeradas.
- result
- Object
Quando este método retorna true, contém uma constante de enumeração que representa o valor analisado.
Devoluções
true se a conversão tivesse sucesso; false caso contrário.
Exceções
.NET 8 e versões posteriores: enumType é um tipo de enumeração suportado por Boole.
Aplica-se a
TryParse(Type, String, Object)
- Origem:
- Enum.cs
- Origem:
- Enum.cs
- Origem:
- Enum.cs
- Origem:
- Enum.cs
- Origem:
- Enum.cs
Converte a representação em cadeia do nome ou valor numérico de uma ou mais constantes enumeradas num objeto enumerado equivalente.
public:
static bool TryParse(Type ^ enumType, System::String ^ value, [Runtime::InteropServices::Out] System::Object ^ % result);
public static bool TryParse(Type enumType, string? value, out object? result);
public static bool TryParse(Type enumType, string value, out object result);
static member TryParse : Type * string * obj -> bool
Public Shared Function TryParse (enumType As Type, value As String, ByRef result As Object) As Boolean
Parâmetros
- enumType
- Type
O tipo de enum a usar para análise sintática.
- value
- String
A representação em cadeia do nome ou valor numérico de uma ou mais constantes enumeradas.
- result
- Object
Quando este método retorna true, contém uma constante de enumeração que representa o valor analisado.
Devoluções
true se a conversão tivesse sucesso; false caso contrário.
Exceções
.NET 8 e versões posteriores: enumType é um tipo de enumeração suportado por Boole.
Aplica-se a
TryParse(Type, ReadOnlySpan<Char>, Boolean, Object)
- Origem:
- Enum.cs
- Origem:
- Enum.cs
- Origem:
- Enum.cs
- Origem:
- Enum.cs
- Origem:
- Enum.cs
Converte a representação de caracteres do nome ou valor numérico de uma ou mais constantes enumeradas num objeto enumerado equivalente. Um parâmetro especifica se a operação é indistinta a maiúsculas e maiúsculas.
public:
static bool TryParse(Type ^ enumType, ReadOnlySpan<char> value, bool ignoreCase, [Runtime::InteropServices::Out] System::Object ^ % result);
public static bool TryParse(Type enumType, ReadOnlySpan<char> value, bool ignoreCase, out object? result);
static member TryParse : Type * ReadOnlySpan<char> * bool * obj -> bool
Public Shared Function TryParse (enumType As Type, value As ReadOnlySpan(Of Char), ignoreCase As Boolean, ByRef result As Object) As Boolean
Parâmetros
- enumType
- Type
O tipo de enum a usar para análise sintática.
- value
- ReadOnlySpan<Char>
A representação do nome ou valor numérico de uma ou mais constantes enumeradas.
- ignoreCase
- Boolean
true para ler enumType em modo insensível a maiúsculas minúsculas; false para ler enumType em modo sensível a maiúsculas e minúsculas.
- result
- Object
Quando este método retorna true, contém uma constante de enumeração que representa o valor analisado.
Devoluções
true se a conversão tivesse sucesso; false caso contrário.
Exceções
.NET 8 e versões posteriores: enumType é um tipo de enumeração suportado por Boole.
Aplica-se a
TryParse(Type, String, Boolean, Object)
- Origem:
- Enum.cs
- Origem:
- Enum.cs
- Origem:
- Enum.cs
- Origem:
- Enum.cs
- Origem:
- Enum.cs
Converte a representação em cadeia do nome ou valor numérico de uma ou mais constantes enumeradas num objeto enumerado equivalente.
public:
static bool TryParse(Type ^ enumType, System::String ^ value, bool ignoreCase, [Runtime::InteropServices::Out] System::Object ^ % result);
public static bool TryParse(Type enumType, string? value, bool ignoreCase, out object? result);
public static bool TryParse(Type enumType, string value, bool ignoreCase, out object result);
static member TryParse : Type * string * bool * obj -> bool
Public Shared Function TryParse (enumType As Type, value As String, ignoreCase As Boolean, ByRef result As Object) As Boolean
Parâmetros
- enumType
- Type
O tipo de enum a usar para análise sintática.
- value
- String
A representação em cadeia do nome ou valor numérico de uma ou mais constantes enumeradas.
- ignoreCase
- Boolean
true para ler value em modo insensível a maiúsculas minúsculas; false para ler value em modo sensível a maiúsculas e minúsculas.
- result
- Object
Quando este método retorna true, contém uma constante de enumeração que representa o valor analisado.
Devoluções
true se a conversão tivesse sucesso; false caso contrário.
Exceções
.NET 8 e versões posteriores: enumType é um tipo de enumeração suportado por Boole.
Aplica-se a
TryParse<TEnum>(ReadOnlySpan<Char>, TEnum)
- Origem:
- Enum.cs
- Origem:
- Enum.cs
- Origem:
- Enum.cs
- Origem:
- Enum.cs
- Origem:
- Enum.cs
Converte a representação em cadeia do nome ou valor numérico de uma ou mais constantes enumeradas num objeto enumerado equivalente.
public:
generic <typename TEnum>
where TEnum : value class static bool TryParse(ReadOnlySpan<char> value, [Runtime::InteropServices::Out] TEnum % result);
public static bool TryParse<TEnum>(ReadOnlySpan<char> value, out TEnum result) where TEnum : struct;
static member TryParse : ReadOnlySpan<char> * 'Enum -> bool (requires 'Enum : struct)
Public Shared Function TryParse(Of TEnum As Structure) (value As ReadOnlySpan(Of Char), ByRef result As TEnum) As Boolean
Parâmetros de Tipo Genérico
- TEnum
O tipo do result objeto.
Parâmetros
- value
- ReadOnlySpan<Char>
A representação do nome ou valor numérico de uma ou mais constantes enumeradas.
- result
- TEnum
Quando este método retorna true, contém uma constante de enumeração que representa o valor analisado.
Devoluções
true se a conversão tivesse sucesso; false caso contrário.
Exceções
TEnum não é um tipo de enumeração.
.NET 8 e versões posteriores: TEnum é um tipo de enumeração suportado por Boole.
Aplica-se a
TryParse<TEnum>(String, TEnum)
- Origem:
- Enum.cs
- Origem:
- Enum.cs
- Origem:
- Enum.cs
- Origem:
- Enum.cs
- Origem:
- Enum.cs
Converte a representação em cadeia do nome ou valor numérico de uma ou mais constantes enumeradas num objeto enumerado equivalente. O valor de retorno indica se a conversão teve sucesso.
public:
generic <typename TEnum>
where TEnum : value class static bool TryParse(System::String ^ value, [Runtime::InteropServices::Out] TEnum % result);
public static bool TryParse<TEnum>(string value, out TEnum result) where TEnum : struct;
public static bool TryParse<TEnum>(string? value, out TEnum result) where TEnum : struct;
static member TryParse : string * 'Enum -> bool (requires 'Enum : struct)
Public Shared Function TryParse(Of TEnum As Structure) (value As String, ByRef result As TEnum) As Boolean
Parâmetros de Tipo Genérico
- TEnum
O tipo de enumeração para o qual converter value.
Parâmetros
- value
- String
A representação da cadeia sensível a maiúsculas minúsculas do nome da enumeração ou do valor subjacente a converter.
- result
- TEnum
Quando este método retorna, contém um objeto do tipo TEnum cujo valor é representado por value se a operação de análise for bem-sucedida. Se a operação de análise falhar, contém o valor padrão do tipo subjacente de TEnum. Este parâmetro é passado sem inicializar.
Devoluções
true se o value parâmetro foi convertido com sucesso; caso contrário, false.
Exceções
TEnum não é um tipo de enumeração.
.NET 8 e versões posteriores: TEnum é um tipo de enumeração suportado por Boole.
Exemplos
O exemplo seguinte define uma Colors enumeração, chama o TryParse<TEnum>(String, TEnum) método para converter cadeias para os respetivos valores de enumeração e chama o IsDefined método para garantir que determinados valores integrais são valores subjacentes na Colors enumeração.
using System;
[Flags] enum Colors { None=0, Red = 1, Green = 2, Blue = 4 };
public class Example
{
public static void Main()
{
string[] colorStrings = { "0", "2", "8", "blue", "Blue", "Yellow", "Red, Green" };
foreach (string colorString in colorStrings)
{
Colors colorValue;
if (Enum.TryParse(colorString, out colorValue))
if (Enum.IsDefined(typeof(Colors), colorValue) | colorValue.ToString().Contains(","))
Console.WriteLine("Converted '{0}' to {1}.", colorString, colorValue.ToString());
else
Console.WriteLine("{0} is not an underlying value of the Colors enumeration.", colorString);
else
Console.WriteLine("{0} is not a member of the Colors enumeration.", colorString);
}
}
}
// The example displays the following output:
// Converted '0' to None.
// Converted '2' to Green.
// 8 is not an underlying value of the Colors enumeration.
// blue is not a member of the Colors enumeration.
// Converted 'Blue' to Blue.
// Yellow is not a member of the Colors enumeration.
// Converted 'Red, Green' to Red, Green.
open System
[<Flags>]
type Colors =
| None = 0
| Red = 1
| Green = 2
| Blue = 4
let colorStrings =
[ "0"; "2"; "8"; "blue"; "Blue"; "Yellow"; "Red, Green" ]
for colorString in colorStrings do
match Enum.TryParse colorString with
| true, colorValue ->
if Enum.IsDefined(typeof<Colors>, colorValue) || (string colorValue).Contains "," then
printfn $"Converted '{colorString}' to {colorValue}."
else
printfn $"{colorString} is not an underlying value of the Colors enumeration."
| _ ->
printfn $"{colorString} is not a member of the Colors enumeration."
// The example displays the following output:
// Converted '0' to None.
// Converted '2' to Green.
// 8 is not an underlying value of the Colors enumeration.
// blue is not a member of the Colors enumeration.
// Converted 'Blue' to Blue.
// Yellow is not a member of the Colors enumeration.
// Converted 'Red, Green' to Red, Green.
<Flags> Enum Colors As Integer
None = 0
Red = 1
Green = 2
Blue = 4
End Enum
Module Example
Public Sub Main()
Dim colorStrings() As String = {"0", "2", "8", "blue", "Blue", "Yellow", "Red, Green"}
For Each colorString As String In colorStrings
Dim colorValue As Colors
If [Enum].TryParse(colorString, colorValue) Then
If [Enum].IsDefined(GetType(Colors), colorValue) Or colorValue.ToString().Contains(",") Then
Console.WriteLine("Converted '{0}' to {1}.", colorString, colorValue.ToString())
Else
Console.WriteLine("{0} is not an underlying value of the Colors enumeration.", colorString)
End If
Else
Console.WriteLine("{0} is not a member of the Colors enumeration.", colorString)
End If
Next
End Sub
End Module
' The example displays the following output:
' Converted '0' to None.
' Converted '2' to Green.
' 8 is not an underlying value of the Colors enumeration.
' blue is not a member of the Colors enumeration.
' Converted 'Blue' to Blue.
' Yellow is not a member of the Colors enumeration.
' Converted 'Red, Green' to Red, Green.
Observações
TryParse<TEnum>(String, TEnum) é idêntico ao Parse(Type, String) método, exceto que, em vez de lançar uma exceção, ele retorna false se a conversão falhar. Elimina a necessidade de tratamento de exceções ao analisar a representação da cadeia de um valor de enumeração.
O value parâmetro contém a representação da cadeia do valor subjacente ou constante nomeada de um membro da enumeração, ou uma lista de constantes nomeadas ou valores subjacentes delimitados por vírgulas (,). Se value incluir múltiplas constantes ou valores nomeados, um ou mais espaços em branco podem preceder ou seguir cada valor, nome ou vírgula em value. Se value for uma lista, result reflete o valor dos nomes especificados ou valores subjacentes combinados com uma operação bit a OR bit. Se value for a representação em cadeia do nome de um valor de enumeração, a comparação de value com nomes de enumeração é sensível a maiúsculas e minúsculas.
Se value é um nome que não corresponde a uma constante nomeada de TEnum, o método devolve false. Se value for a representação da cadeia de um inteiro que não representa um valor subjacente da TEnum enumeração, o método devolve um membro da enumeração cujo valor subjacente é value convertido num tipo integral. Se este comportamento for indesejável, chame-se ao IsDefined método para garantir que uma representação particular de cadeia de um inteiro é na verdade um membro de TEnum.
Se a operação de análise falhar, o result parâmetro contém o valor padrão 0, que pode não ser membro da enumeração subjacente TEnum . Se não forem atribuídos valores às constantes nomeadas em TEnum, o padrão é igual ao primeiro elemento do TEnum. Caso contrário, o padrão é igual ao membro na enumeração com valor atribuído de 0.
Ver também
Aplica-se a
TryParse<TEnum>(String, Boolean, TEnum)
- Origem:
- Enum.cs
- Origem:
- Enum.cs
- Origem:
- Enum.cs
- Origem:
- Enum.cs
- Origem:
- Enum.cs
Converte a representação em cadeia do nome ou valor numérico de uma ou mais constantes enumeradas num objeto enumerado equivalente. Um parâmetro especifica se a operação é sensível a maiúsculas e minúsculas. O valor de retorno indica se a conversão teve sucesso.
public:
generic <typename TEnum>
where TEnum : value class static bool TryParse(System::String ^ value, bool ignoreCase, [Runtime::InteropServices::Out] TEnum % result);
public static bool TryParse<TEnum>(string value, bool ignoreCase, out TEnum result) where TEnum : struct;
public static bool TryParse<TEnum>(string? value, bool ignoreCase, out TEnum result) where TEnum : struct;
static member TryParse : string * bool * 'Enum -> bool (requires 'Enum : struct)
Public Shared Function TryParse(Of TEnum As Structure) (value As String, ignoreCase As Boolean, ByRef result As TEnum) As Boolean
Parâmetros de Tipo Genérico
- TEnum
O tipo de enumeração para o qual converter value.
Parâmetros
- value
- String
A representação da cadeia do nome da enumeração ou do valor subjacente a converter.
- ignoreCase
- Boolean
true ignorar o caso; false para considerar o caso.
- result
- TEnum
Quando este método retorna, contém um objeto do tipo TEnum cujo valor é representado por value se a operação de análise for bem-sucedida. Se a operação de análise falhar, contém o valor padrão do tipo subjacente de TEnum. Este parâmetro é passado sem inicializar.
Devoluções
true se o value parâmetro foi convertido com sucesso; caso contrário, false.
Exceções
TEnum não é um tipo de enumeração.
.NET 8 e versões posteriores: TEnum é um tipo de enumeração suportado por Boole.
Exemplos
O exemplo seguinte define uma Colors enumeração, chama o TryParse<TEnum>(String, Boolean, TEnum) método para converter cadeias para os respetivos valores de enumeração e chama o IsDefined método para garantir que determinados valores integrais são valores subjacentes na Colors enumeração. O TryParse<TEnum>(String, Boolean, TEnum) método utiliza comparação insensível a maiúsculos e maiúsculos ao tentar converter as representações das cadeias de constantes nomeadas para os seus valores equivalentes de enumeração.
using System;
[Flags] enum Colors { None=0, Red = 1, Green = 2, Blue = 4 };
public class Example
{
public static void Main()
{
string[] colorStrings = { "0", "2", "8", "blue", "Blue", "Yellow", "Red, Green" };
foreach (string colorString in colorStrings)
{
Colors colorValue;
if (Enum.TryParse(colorString, true, out colorValue))
if (Enum.IsDefined(typeof(Colors), colorValue) | colorValue.ToString().Contains(","))
Console.WriteLine("Converted '{0}' to {1}.", colorString, colorValue.ToString());
else
Console.WriteLine("{0} is not an underlying value of the Colors enumeration.", colorString);
else
Console.WriteLine("{0} is not a member of the Colors enumeration.", colorString);
}
}
}
// The example displays the following output:
// Converted '0' to None.
// Converted '2' to Green.
// 8 is not an underlying value of the Colors enumeration.
// Converted 'blue' to Blue.
// Converted 'Blue' to Blue.
// Yellow is not a member of the Colors enumeration.
// Converted 'Red, Green' to Red, Green.
open System
[<Flags>]
type Colors =
| None = 0
| Red = 1
| Green = 2
| Blue = 4
let colorStrings =
[ "0"; "2"; "8"; "blue"; "Blue"; "Yellow"; "Red, Green" ]
for colorString in colorStrings do
match Enum.TryParse(colorString, true) with
| true, colorValue ->
if Enum.IsDefined(typeof<Colors>, colorValue) || (string colorValue).Contains "," then
printfn $"Converted '{colorString}' to {colorValue}."
else
printfn $"{colorString} is not an underlying value of the Colors enumeration."
| _ ->
printfn $"{colorString} is not a member of the Colors enumeration."
// The example displays the following output:
// Converted '0' to None.
// Converted '2' to Green.
// 8 is not an underlying value of the Colors enumeration.
// Converted 'blue' to Blue.
// Converted 'Blue' to Blue.
// Yellow is not a member of the Colors enumeration.
// Converted 'Red, Green' to Red, Green.
<Flags> Enum Colors As Integer
None = 0
Red = 1
Green = 2
Blue = 4
End Enum
Module Example
Public Sub Main()
Dim colorStrings() As String = {"0", "2", "8", "blue", "Blue", "Yellow", "Red, Green"}
For Each colorString As String In colorStrings
Dim colorValue As Colors
If [Enum].TryParse(colorString, True, colorValue) Then
If [Enum].IsDefined(GetType(Colors), colorValue) Or colorValue.ToString().Contains(",") Then
Console.WriteLine("Converted '{0}' to {1}.", colorString, colorValue.ToString())
Else
Console.WriteLine("{0} is not an underlying value of the Colors enumeration.", colorString)
End If
Else
Console.WriteLine("{0} is not a member of the Colors enumeration.", colorString)
End If
Next
End Sub
End Module
' The example displays the following output:
' Converted '0' to None.
' Converted '2' to Green.
' 8 is not an underlying value of the Colors enumeration.
' Converted 'blue' to Blue.
' Converted 'Blue' to Blue.
' Yellow is not a member of the Colors enumeration.
' Converted 'Red, Green' to Red, Green.
Observações
TryParse<TEnum>(String, Boolean, TEnum) é idêntico ao Parse(Type, String, Boolean) método, exceto que, em vez de lançar uma exceção, ele retorna false se a conversão falhar. Elimina a necessidade de tratamento de exceções ao analisar a representação da cadeia de um valor de enumeração.
O value parâmetro contém a representação da cadeia do valor subjacente ou constante nomeada de um membro da enumeração, ou uma lista de constantes nomeadas ou valores subjacentes delimitados por vírgulas (,). Se value incluir múltiplas constantes ou valores nomeados, um ou mais espaços em branco podem preceder ou seguir cada valor, nome ou vírgula em value. Se value for uma lista, result reflete o valor dos nomes especificados ou valores subjacentes combinados com uma operação bit a OR bit. Se value for a representação em cadeia do nome de um valor de enumeração, a comparação de value com nomes de enumeração depende do ignoreCase parâmetro. Se true, a comparação é indistinta a maiúsculas; se false, é sensível a maiúsculas.
Se value é um nome que não corresponde a uma constante nomeada de TEnum, o método devolve false. Se value for a representação da cadeia de um inteiro que não representa um valor subjacente da TEnum enumeração, o método devolve um membro da enumeração cujo valor subjacente é value convertido num tipo integral. Se este comportamento for indesejável, chame-se ao IsDefined método para garantir que uma representação particular de cadeia de um inteiro é na verdade um membro de TEnum.
Se a operação de análise falhar, o result parâmetro contém o valor padrão 0, que pode não ser membro da enumeração subjacente TEnum . Se não forem atribuídos valores às constantes nomeadas em TEnum, o padrão é igual ao primeiro elemento do TEnum. Caso contrário, o padrão é igual ao membro na enumeração com valor atribuído de 0.
Ver também
Aplica-se a
TryParse<TEnum>(ReadOnlySpan<Char>, Boolean, TEnum)
- Origem:
- Enum.cs
- Origem:
- Enum.cs
- Origem:
- Enum.cs
- Origem:
- Enum.cs
- Origem:
- Enum.cs
Converte a representação em cadeia do nome ou valor numérico de uma ou mais constantes enumeradas num objeto enumerado equivalente. Um parâmetro especifica se a operação é sensível a maiúsculas e minúsculas. O valor de retorno indica se a conversão teve sucesso.
public:
generic <typename TEnum>
where TEnum : value class static bool TryParse(ReadOnlySpan<char> value, bool ignoreCase, [Runtime::InteropServices::Out] TEnum % result);
public static bool TryParse<TEnum>(ReadOnlySpan<char> value, bool ignoreCase, out TEnum result) where TEnum : struct;
static member TryParse : ReadOnlySpan<char> * bool * 'Enum -> bool (requires 'Enum : struct)
Public Shared Function TryParse(Of TEnum As Structure) (value As ReadOnlySpan(Of Char), ignoreCase As Boolean, ByRef result As TEnum) As Boolean
Parâmetros de Tipo Genérico
- TEnum
O tipo do result objeto.
Parâmetros
- value
- ReadOnlySpan<Char>
A representação do nome ou valor numérico de uma ou mais constantes enumeradas.
- ignoreCase
- Boolean
true ignorar o caso; false para considerar o caso.
- result
- TEnum
Quando este método retorna true, contém uma constante de enumeração que representa o valor analisado.
Devoluções
true se a conversão tivesse sucesso; false caso contrário.
Exceções
TEnum não é um tipo de enumeração.
.NET 8 e versões posteriores: TEnum é um tipo de enumeração suportado por Boole.