Есть ли простой способ определить размер шрифта в C #?

Есть ли способ сказать что-то вроде:

SizeOf (тип)? Или тип. Размер?

Прямо сейчас я смотрю на использование кода, как:

if (type.Equals(typeof(int)))
    return sizeof(int);
else if (type.Equals(typeof(long)))
    return sizeof(long);

и т. д., и т. д. для каждого типа данных.

Должно быть более чистое решение, нет?

7 c#
12.12.2008 18:34:12
Можете ли вы объяснить причину того, что вы хотите сделать?
leppie 12.12.2008 18:43:18
Забавно, я чуть не опубликовал этот точный вопрос вчера, но не успел. Мне нужно то же самое для использования ADO.NET DbParameters. Иногда это заставляет вас установить DbParameter.Size, который является размером объекта в байтах. У меня тоже было большое заявление о переключении, подобное тому, которое вы первоначально разместили :)
CodingWithSpike 12.12.2008 19:09:04
4 ОТВЕТА

Попробуйте Marshal.SizeOf ()

http://msdn.microsoft.com/en-us/library/5s4920fa.aspx

13
12.12.2008 18:49:16
Похоже, что он получает в памяти размер определенного объекта или значения, который не обязательно совпадает с размером типа.
Daniel Schaffer 12.12.2008 18:46:05
Существует также перегрузка типа. Я по ошибке связался с версией объекта. Будет обновление в ближайшее время
JaredPar 12.12.2008 18:48:59
Тем не менее, из документа: «Возвращенный размер на самом деле является размером неуправляемого типа. Неуправляемые и управляемые размеры объекта могут отличаться. Для типов символов на размер влияет значение CharSet, примененное к этому классу». В зависимости от варианта использования это может вводить в заблуждение.
Daniel Schaffer 12.12.2008 18:55:10
Он также возвращает другое значение для bool: bool boolean = true; Тип type = boolean.GetType (); ЕЫпе (SizeOf (BOOL)); ЕЫпе (Marshal.SizeOf (тип)); Первая строка выведет «1», вторая выведет «4».
archimedes 12.12.2008 19:07:14
Ссылка на запись в блоге, которую я написал на эту тему: blogs.msdn.com/jaredpar/archive/2008/10/14/…
JaredPar 12.12.2008 19:45:38

Если это для доступа к данным, вы можете сделать type.GetTypeCode () (который является членом IConvertible), который дает вам хорошее перечисление для включения.

1
12.12.2008 18:44:25
1
23.05.2017 12:09:00

Может быть, вы можете пойти Convert.ToString(type.MaxValue, 2).Length / 8 ?

-4
1.06.2012 11:31:02