Вы можете использовать coalesce()
, чтобы вернуть другое значение, если столбец null
select coalesce(the_column, 'x') as the_column
from the_table;
C# и VB являются в основном тем же однако существуют некоторые незначительные различия. Кроме очевидных различий в грамматике у Вас есть следующие различия:
Синтаксис C# следует за подобной грамматикой к c и Java, которые делают это намного более удобным переходом от тех языков, где, поскольку VB может быть более удобен для пользователей VB. Как далекая производительность, и библиотеки или компоненты они почти идентичны.
Что касается которого выбрать, если у Вас нет потребности сделать небезопасные операции, затем выбрать язык, который является самым естественным для Вас. После лет того, чтобы быть разработчиком VB я любил не иметь необходимость записать Если yadada затем..... Конец, Если, если (yadaya) {....} Сохраняет мой кистевой туннель несколько дополнительных нажатий клавиш (Который может затем использоваться при ответе ТАК на вопросы),
Просто изученный еще одно различие btw C# и VB - то, что VB поддерживает фильтрованные исключения, таким образом, Вы могли что-то вроде этого псевдо:
try
{
//do something that fails
}
catch(Exception ex when ArgumentException,
ArgumentNullException, FormatException)
{
//Only handle these three types
}
Это не должно быть перепутано со способностью сделать:
try
{
//something that fails
}
catch(ArgumentException)
{
//Log Error
}
catch(ArgumentNullException)
{
//Log Error
}
В этом случае Вы собираетесь обработать исключения по-другому в мире VB, Вы могли определить одну часть кода для обработки нескольких типов Исключений.
Еще некоторые различия.
c# if (foo is FooObject){}
vb If TypeOf foo is FooObject then
Лишенный старого хлама, объявление массива в C# не дополнено дополнительным элементом. массив VB.NET дополнен дополнительным элементом, столь миграция кода VB6 прежней версии легче.
C# более последователен, чем VB.NET
Button1.Color() = Color.Red
Button1.Color = Color.Red
Я не могу дать ответ, когда один студент спросил меня, когда использовать круглую скобку на свойствах VB.NET. Трудно дать проницательное обоснование для этого вида ошибки.
Непротиворечивость с экземпляром и статическими участниками. VB.NET позволяет получать доступ к статическим участникам на экземпляре, например, пряже. Сон (1000), это - ошибка. https://stackoverflow.com/questions/312419/language-features-you-should-never-use
в настоящий момент VB.Net имеет очень плохую реализацию лямбда-выражений. Подразумевать, что Вы не можете сделать аккуратных вещей, что Вы можете в C#. Хорошо Вы можете, но этому нужно очень ужасное обходное решение в большинстве случаев.
Это решено в VB.Net 10.0.
Я должен сказать, что это был мой опыт при использовании Google для поиска примеров или документации, что примеры C# имеют лучшее качество, чем примеры VB. Это не должно говорить, что нет плохих примеров C#, но если Вы ищете что-то как "словарь выпадающее" добавление, что C# предоставит лучший качественный ответ выше в списке.
Это не относится к примерам, которые отображают и C# и код VB рядом.
Вот другой вопрос, еще не отвеченный в этом следе:
Более высокая степень возможности трудоустройства + лучше (больше) ресурсы Dev
Теперь я не соглашаюсь с этой точкой зрения однако:
Существует больше магазинов C# dev это магазины VB
Некоторые назад c# работодатели поместят Вас в серьезный недостаток, если Вы будете более сильными с VB. Таким образом, возможно, C# является лучшим выбором здесь.
На обороте, когда Вы идете для найма людей для проекта C#, Вы сможете притянуть больше кандидатов к iterview и получить лучшие навыки в результате – я не думаю, что деталь должна быть пропущена.
Я думаю, что Josh дал хорошую свертку на языковых различиях.
Инструменты поддержки
Существуют однако также различия в том, как Visual Studio обрабатывает эти языки. Фрагменты кода легче использовать от редактора C#, и рефакторинг лучше также.
VB-редактор упрощает intellisense, не показывая все варианты в любом случае.
Я уверен, что существует больше вещей, но это - те, что я как C#'er (выполнение очень небольшого количества VB) заметил.
Начиная с C# и VB.Net обе компиляции в MSIL, у обоих есть почти идентичная Производительность, Возможности, Библиотеки и Компоненты. Отражение может deassemble код MSIL или в C# или в VB.NET (или много других языков)
Это в основном оставляет нас с, C# много походит на Java и C++, который дает ему больше доверия.
Насколько я понимаю существуют различия между языками, хотя они минимальны. Я предложил бы работать с языком, с которым Вы/Ваши разработчики будете чувствовать себя больше всего комфортно. Если бы у них уже есть опыт VB затем, я предложил бы VB.Net/vice-versa.
Хотя я предпочитаю краткий синтаксис C# лично.:)
Производительность?
Никакое различие, хотя VB исторически использует странную индексацию в циклах, что означает, что необходимо вычесть 1 из самого высокого индекса большую часть времени:
For i = 0 To someArrayOrString.Length - 1 …
Хотя я сомневаюсь, что это влияет на производительность любым измеримым способом.
С другой стороны, из-за фоновой компиляции, VB на самом деле компилирует по-видимому быстрее. Некоторые люди утверждают, что это заставляет IDE реагировать вяло, но я никогда не замечал что сам.
Возможности?
В нескольких экземплярах, C# yield
оператор действительно полезен. VB требует большего физического труда здесь. Кроме того, лямбды намного лучше реализованы в C#, особенно синтаксически. Рассмотрите эти два оператора:
Parallel.For(1, 10000, i => {
// Do something
});
по сравнению с
Parallel.For(1, 10000, Sub() _
' Do something '
End Sub)
Помимо того, что VB еще не может сделать этого, и что комментарий в этом месте запрещается, это - просто больше помехи и обычно остановка.
Библиотеки/Компоненты?
Идентичный.
Репутация?
Не важный. “Уважение”?Прошу прощения. Не фактор. Преобладайте над ним, Nick.
Надежность? Пригодность для обслуживания? Простота?
Более или менее идентичный. Я утверждаю, что VB легче, но это может быть смещено и всегда, это только крайне.
В C# можно иметь более точно настроенный контроль над событиями/делегатами. Но Вам редко нужно это.
Существует намного больше примеров кода для C#.
В VB.Net (намного) легче использовать позднее связывание. Например, к COM-объектам (в C# от версии 4.0).
Как только я знаю F# лучше, я буду, вероятно, использовать его для частей, для которых лучше подходит F#.
VB имеет лучшую обратную связь на ошибках. В C# необходимо скомпилировать чаще для получения всех ошибок в синтаксисе.
Моей любимой функцией C#, который не имеет VB, является оператор урожая. Это позволяет Вам легко возвратить лениво оцененный IEnumerable из метода.
Вот статья, которая касается его: http://msdn.microsoft.com/en-us/magazine/cc163970.aspx
В ранних версиях VB.NET различие было более очевидным, однако с текущей версией, нет никаких существенных различий.
VB поддерживает литералы XML непосредственно в коде, который не поддерживается C#. C# поддерживает небезопасный код, и VB не делают. Технически эти два являются самыми большими различиями. Существует много маленьких изменений, но они не важны. Мне нравится C# больше, потому что я думаю, что синтаксис намного менее чрезмерно увеличен в размере. Легко распознать блоки кода вместо того, чтобы видеть набор ключевых слов, но это - чистое персональное предпочтение.
Выберите тот, с которым Вы и Ваша команда более знакомы.
При ударе проблемы Вы будете часто мочь к Google для примера кода, который показывает, как решить его в минутах. Это - значимый фактор в улучшающейся производительности. Когда я работал с Delphi, я должен был преобразовать примеры кода из C в Object Pascal - выполнимый, но утомительный, т.е. большое трение. Не недооценивайте факт это...
Подавляющее большинство примеров кода .NET находится в C#!
Другие покрыли много различий - как несколько раз говорился, они - почти эквивалентные языки. Несколько различий, которые не были покрыты насколько я видел:
VB9 имеет:
C# 3 имеет:
Я подозреваю, что существует больше, но я думал, что просто брошу тех, которые в соединение.
Уважение среди фанатов.
(И не притворяйтесь, что это не важно!)
VB.Net имеет корневое пространство имен, и C# имеет пространство имен по умолчанию, которое не является тем же. Поскольку, когда у Вас будет корневое пространство имен в VB.Net, он будет всегда добавлять что перед пространством имен.
Например: если у Вас есть rootnamepsace в VB.Net, названном namespace1, и затем Вы добавляете это к своему файлу.
Namespace namespace1
Public Class class1
End Class
End Namespace
затем необходимо будет обратиться к нему как namespace1.namespace1.class1
в C#, если у Вас есть пространство имен по умолчанию, названное namespace1 и Вами это в Вашем файле.
namespace namespace1{
public class class1{}
}
Затем можно все еще просто обратиться к нему как namespace1.class1
Я думаю, что это сообщение в блоге Kathleen Dollard предоставляет превосходный обзор вопросу:
Какой кодер C# должен знать, прежде чем они запишут VB
и ее первый совет:
1) Преобладайте над вещью уважения или выйдите перед запуском. VB является большим языком.
Большое преимущество, которое я вижу с C#, состоит в том, что подавляющее большинство проектов с открытым исходным кодом, примера кода и отрывков блога записано в C#. Хотя легко преобразовать их в VB.NET с инструментами (или Ваша голова), это - все еще монотонная задача для VB devs (как я).
Даже если Вы будете повседневно писать в VB.NET, то необходимо будет все еще смочь считать C#
Технически, они совместно используют ту же платформу с той же производительностью и характеристиками памяти и теми же системами типов, таким образом, мне трудно трудно для разделения двух.
Самые хорошие разработчики должны смочь сместиться между двумя со временем корректировки нескольких дней.
Мое ядро frustaration находится с сотнями времени, которое я записал:
String lastName as String
и задался вопросом, почему это никогда не компилирует!