Хотя задача по изменению полей в упакованных размерных типах на практике может и вовсе не встретиться, но знать о существовании такой возможности, думаю, не помешает. Рассказывать об упаковке и распаковке значимых не вижу особого смысла, поэтому перейду непосредственно к коду.
[code=c#] internal interface IBoxed
{
void SetValue(int value);
}
internal struct BoxedType : IBoxed
{
private int value;
public BoxedType(int value)
{
this.value = value;
}
#region IBoxed Members
public void SetValue(int value)
{
this.value = value;
}
public override string ToString()
{
return string.Format("Value: {0}", value);
}
#endregion
}
class Program
{
static void Main(string[] args)
{
BoxedType b = new BoxedType(5);
Console.WriteLine("First test: " + b);
b.SetValue(6);
Console.WriteLine("Second test: " + b);
object o = b;
Console.WriteLine("Third test: " + o);
((BoxedType)o).SetValue(3);
Console.WriteLine("Fourth test: " + o);
((IBoxed)b).SetValue(8);
Console.WriteLine("Fifth test: " + b);
((IBoxed)o).SetValue(10);
Console.WriteLine("Sixth test: " + o);
}
} [/code]
Ну и, конечно же, результаты:
First test: Value: 5
Second test: Value: 6
Third test: Value: 6
Fourth test: Value: 6
Fifth test: Value: 6
Sixth test: Value: 10
Некоторое время назад мне пришлось столкнуться с проблемой выбора Rss-иконки для блога. Перепробовал масу вариантов, но не один из них меня так и не удовлетворил. Вчера в очередной раз "бороздя" просторы необьятной блогосферы, наткнулся на довольно интересную акцию "
Тем, кто хоть иногда сталкивался с технологией .NET, наверняка приходилось настраивать конфигурационные файлы приложений, будь-то настольные приложения или же веб-приложения. Если ваше приложение работает с базой данных, то скорей всего вы добавляли в конфигурационные файлы строки следующего формата:
