UPDATE Основные вопросы остаются те под пример, но я предполагаю, что это сводится к :Изменение внутреннего представления во время выполнения
** Если у вас есть тип, где 99% значений может быть представленным в одном быстрым, мощным типом и только 1% в очень тяжелого типа (скажем, int vs. BigInteger) Как его представить? **
Школа, в которой мы много узнали о внутренних представлениях, но никогда, как изменить ее во время выполнения. Я имею в виду: предположим, что у вас есть класс, представляющий десятичную дробь, но вы используете целое число, чтобы представлять его внутренним, до тех пор, пока вам не понадобится большее значение, чем целое число, и только, чем изменение представления ...
Я никогда не думал об этом раньше, и когда я думал об этом, я думал, что это никогда не сработает, поскольку все проверки убьют его. Но я только что сделала тест, так как я слишком любопытен для своего собственного блага, и там существуют ситуации, когда изменение представления более perormant: учитывая этот интерфейс:
interface INumber
{
void add1000();
void SetValue(decimal d);
decimal GetValue();
}
Я нашел последний из двух реализаций, чтобы быть более мощным во многих ситуациях, в том числе this one, что я сочинял, чтобы привлечь как можно больше идей, которые я мог бы по этому вопросу (не репутация, это сообщество)
1. Representation by only a decimal
public class Number1:INumber
{
private decimal d { get; set; }
public void add1000()
{
d += 1000;
}
public decimal GetValue()
{
return d;
}
public void SetValue(decimal d)
{
this.d = d;
}
}
2. Representation by a decimal and an int
public class Number2:INumber
{
private bool usedecimal;
private int i;
private decimal d;
public void add1000()
{
if (usedecimal)
{
d += 1000;
return;
}
i += 1000;
if (i > 2147480000)
{
d = i;
usedecimal = true;
}
}
public void SetValue(decimal d)
{
try
{
i = (int)d;
}
catch (OverflowException e)
{
this.d = d;
}
}
public decimal GetValue()
{
return Math.Max(i,d);
}
}
}
Мой вопрос заключается в следующем:
Это кажется н , Я отсутствовал, но это должно быть кровотечение очевидным. Может ли кто-нибудь помочь мне с этим?
- Существуют ли руководящие принципы для смешанных представлений, когда их использовать, когда нет?
- Как угадать, когда смешанная реклама может быть быстрее без бенчмаркинга?
- Любые примеры?
- Любые узоры?
- Любые идеи по этому вопросу?
И ваш вопрос ...? – Kevin
@ kevin, извините не было – Peter