Подсчет ссылок особенно трудно сделать эффективно в многопоточной среде. Я не знаю, как Вы даже начали бы делать это, не входя в транзакции аппаратных средств, которым помогают, или подобные (в настоящее время) необычные атомарные инструкции.
Подсчет ссылок легко реализовать. JVMs имели много денег, сниженных в конкурирующие реализации, таким образом, не должно быть удивительно, что они реализуют очень хорошие решения очень трудных проблем. Однако становится все больше легко предназначаться для Вашего любимого языка в JVM.
I Думаю, что лучшим упражнением было бы построить что-то для себя.
Таким образом вы сможете определить свою область действия, «обсудить» новые функции и написать новый код просто для развлечения.
Вы также можете снова решить проблемы, которые вы уже знаете. ; например, я рекомендую попробовать решить некоторые проблемы из Project Euler на C #.
Я совершил переход, взяв один из моих хобби-проектов, выполненных на VB.NET, и переписал его на C #. Это меня положило начало; изучение синтаксиса во время работы в известной проблемной области, а также предоставление реальных проблем для решения.
В Википедии есть отличная статья по этому поводу:
http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Visual_Basic_.NET
Поиграйте со своим кодом, используя автоматический преобразователь .
Он должен работать достаточно хорошо для большинства задач. В основном вам просто нужно выяснить, как переделать лямбды и некоторые другие подобные ситуации.
Reflector также очень хорош, чтобы помочь вам понять, как играть с преобразованием вашего кода.
Что касается обучения различия см. в официальном документе MSDN по этому . Это немного устарело, но это хорошая отправная точка. Более полное, но менее текстовое сравнение доступно здесь .
Если у вас есть базовые знания языка, я бы порекомендовал работать с проектом Euler ( http://projecteuler.net/ ) на C #. Все начинается очень легко, но постепенно становится все сложнее и сложнее, требуя от вас большего изучения языка [который вы используете для разработки решений], чтобы решить проблемы.
Возможно, имеет смысл подобрать справочник по C # книга, если вы еще этого не сделали.
Я думаю, вы удивитесь, насколько быстро вы перейдете.
Поскольку программирование в .NET больше связано с Framework, чем с каким-либо конкретным языком или синтаксисом, документация MSDN неоценима для преодоления барьеров C # и VB.NET, поскольку она содержит взаимно один пример использования синтаксиса C # и VB.NET для общих элементов .NET. Например, если вы посмотрите делегаты , вы найдете один и тот же образец в обоих синтаксисах .
Для элементов, специфичных для синтаксиса, другие люди опубликовали несколько хороших источников.
Попрактикуйтесь в том, чтобы забыть VB.NET [:)], а затем изучите C # , как обычный человек выучит . Я не думаю, что разработчики VB.NET имеют какой-то особый способ изучения C # ... Вы просто знакомы с библиотекой классов .NET, это плюс.
Найдите самые основы (как определить функцию, как определить переменную), затем начните кодировать C # в реальном проекте. Поищите информацию, когда застрянете (или попробуйте автоматические конвертеры, упомянутые в другом ответе). Отличия не велики, так что это не сильно задержит ваш проект. Поскольку существует (почти) соответствие 1: 1 между кодом VB.NET и C #, обычно нормально «подумать о VB.NET», а затем написать свой код на C #.
После того, как вы освоитесь с синтаксисом, Google для различий между VB.NET и C # (т.е. что вы можете сделать на C #, что не будет работать в VB.NET - например, анонимные методы) и переработать те вещи, где C # допускает более элегантное решение.
Хорошим упражнением будет попытка понять фрагменты кода C # других людей, и воспроизводить их самостоятельно с нуля. Это означает, что вы столкнетесь с множеством вещей, которые вам нужно найти и изучить, чтобы понять, что делают эти фрагменты.
Хорошая новость заключается в том, что как в C #, так и в VB.Net, .NET framework выполняет большую часть тяжелой работы, поэтому вы, вероятно, поймете и узнаете эти части. В своей работе я использую как C #, так и VB.Net, и я пришел к выводу, что благодаря общему фреймворку языки на практике не сильно отличаются друг от друга.
Мне все еще нравится C #, поскольку я чувствую, что это каким-то образом приводит к более чистому коду.
NET framework выполняет большую часть тяжелой работы, поэтому вы, вероятно, поймете и узнаете эти части. В своей работе я использую как C #, так и VB.Net, и я пришел к выводу, что благодаря общему фреймворку языки на практике не сильно отличаются друг от друга.Мне все еще нравится C #, поскольку я чувствую, что это каким-то образом приводит к более чистому коду.
NET framework выполняет большую часть тяжелой работы, поэтому вы, вероятно, поймете и узнаете эти части. Я использую как C #, так и VB.Net в своей работе, и я пришел к выводу, что из-за общей структуры языки на практике не сильно отличаются друг от друга.Мне все еще нравится C #, поскольку я чувствую, что это каким-то образом приводит к более чистому коду.