Как можно построить System.Char
, который бы имел логическое значение System.TypeCode
?
Код ниже:
char c = 'f';
System.TypeCode a = c.GetTypeCode();
Console.WriteLine(a);
производит следующий вывод:
Char
Теперь я проверил декомпилированную версию System.TypeCode
. Вот оно:
#region Assembly System.Runtime, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
// System.Runtime.dll
#endregion
namespace System
{
//
// Summary:
// Specifies the type of an object.
public enum TypeCode
{
//
// Summary:
// A null reference.
Empty = 0,
//
// Summary:
// A general type representing any reference or value type not explicitly represented
// by another TypeCode.
Object = 1,
//
// Summary:
// A database null (column) value.
DBNull = 2,
//
// Summary:
// A simple type representing Boolean values of true or false.
Boolean = 3,
//
// Summary:
// An integral type representing unsigned 16-bit integers with values between 0
// and 65535. The set of possible values for the System.TypeCode.Char type corresponds
// to the Unicode character set.
Char = 4,
//
// Summary:
// An integral type representing signed 8-bit integers with values between -128
// and 127.
SByte = 5,
//
// Summary:
// An integral type representing unsigned 8-bit integers with values between 0 and
// 255.
Byte = 6,
//
// Summary:
// An integral type representing signed 16-bit integers with values between -32768
// and 32767.
Int16 = 7,
//
// Summary:
// An integral type representing unsigned 16-bit integers with values between 0
// and 65535.
UInt16 = 8,
//
// Summary:
// An integral type representing signed 32-bit integers with values between -2147483648
// and 2147483647.
Int32 = 9,
//
// Summary:
// An integral type representing unsigned 32-bit integers with values between 0
// and 4294967295.
UInt32 = 10,
//
// Summary:
// An integral type representing signed 64-bit integers with values between -9223372036854775808
// and 9223372036854775807.
Int64 = 11,
//
// Summary:
// An integral type representing unsigned 64-bit integers with values between 0
// and 18446744073709551615.
UInt64 = 12,
//
// Summary:
// A floating point type representing values ranging from approximately 1.5 x 10
// -45 to 3.4 x 10 38 with a precision of 7 digits.
Single = 13,
//
// Summary:
// A floating point type representing values ranging from approximately 5.0 x 10
// -324 to 1.7 x 10 308 with a precision of 15-16 digits.
Double = 14,
//
// Summary:
// A simple type representing values ranging from 1.0 x 10 -28 to approximately
// 7.9 x 10 28 with 28-29 significant digits.
Decimal = 15,
//
// Summary:
// A type representing a date and time value.
DateTime = 16,
//
// Summary:
// A sealed class type representing Unicode character strings.
String = 18
}
}
И мне стало любопытно, как заставить c.GetTypeCode()
вернуть Boolean
вместо Char
.
Я попробовал это:
char c = true;
System.TypeCode a = c.GetTypeCode();
Console.WriteLine(a);
Но это приводит к ошибке времени компиляции:
Невозможно неявно преобразовать тип 'bool' в 'char' [Console.NET] csharp (CS0029)
Вопрос задан просто из любопытства. По крайней мере, на данный момент у меня нет реального случая, когда мне это нужно.