Как стать автором
Обновить
50
Карма
0
Рейтинг
Friedrich von Never @ForNeVeR

Пользователь

Когда this == null: невыдуманная история из мира CLR

Блог компании Enterra .NET *C# *
Довелось как-то раз отлаживать вот такой код на C#, который «на ровном месте» падал с NullReferenceException:

	public class Tester {
		public string Property { get; set; }
		public void Foo() {
			this.Property = "Some string"; // NullReferenceException
		}
	}

Да, вот на этой самой строчке с присвоением свойства падал NullReferenceException. Что за дела, думаю — неужели рантайм перестал проверять наличие экземпляра перед вызовом экземплярных методов?

Как оказалось — в некотором роде да, перестал. Правда, и компилятор оказался не тем, за кого себя выдаёт, да и проверки вовсе не гарантированы рантаймом… Подробнее — под катом.
Читать дальше →
Всего голосов 41: ↑38 и ↓3 +35
Просмотры 32K
Комментарии 67

Макросы и квазицитаты в Scala 2.11.0

Блог компании Enterra Scala *Функциональное программирование *
Не так давно состоялся релиз Scala 2.11.0. Одним из примечательных нововведений этой версии являются квазицитаты — удобный механизм для описания синтаксических деревьев Scala с помощью разбираемых во время компиляции строк; очевидно, что в первую очередь этот механизм предназначен для использования совместно с макросами.

Удивительно, но на хабре пока тему макросов в Scala рассматривают не слишком-то активно; последний пост
с серьёзным рассмотрением макросов был аж целый год назад.

В данном посте будет подробно рассмотрено написание простого макроса, предназначенного для генерации кода десериализации JSON в иерархию классов.
Читать дальше →
Всего голосов 25: ↑25 и ↓0 +25
Просмотры 12K
Комментарии 8

Фильтры исключений в CLR

Программирование *.NET *C# *
Привет, хабралюди. Сегодня мы рассмотрим один из механизмов CLR, который напрямую недоступен для разработчиков на языке C# — фильтры исключений.

Опрос среди моих знакомых программистов на C# показал, что они (само собой) никогда этим механизмом не пользовались и даже не знают о его существовании. Поэтому предлагаю всем любознательным ознакомиться с текстом статьи.

Итак, фильтры исключений — это механизм, который позволяет блоку catch декларировать предусловия, которым должно удовлетворять исключение, дабы быть пойманным данным блоком. Этот механизм работает не совсем так же, как выполнение проверок внутри блока catch.

Под катом — код на VB.NET, F#, CIL и C#, а также проверка различных декомпиляторов на обработку механизма фильтров.
Читать дальше →
Всего голосов 33: ↑33 и ↓0 +33
Просмотры 14K
Комментарии 9

Информация

В рейтинге
Не участвует
Откуда
Барнаул, Алтайский край, Россия
Зарегистрирован
Активность