Здравствуйте, Аноним, Вы писали: А>Было бы круто, если бы разработчики сделали такую имплементацию: null.ToString(){return "";}.
А>Задолбало писать простыни
result += o1.ToString() + ... + o10.ToString();
А если бы Вы правильно складывали строки, то есть StringBuilder'ом, то Вы бы обратили внимание на то, что null в качестве входного String он просто игнорирует Как и в строках формата
var buf = new StringBuilder();
buf.Append(o1);
buf.Append(o2);
buf.Append(o3);
....
Здравствуйте, GlebZ, Вы писали:
GZ>Здравствуйте, Константин Л., Вы писали:
КЛ>>при чем здесь это? неравнозначный пример GZ>Вполне равнозначный. Енто в SQL — NULL не является значением, а обозначает "ничего"(за что сильно поплатились, но это к Дейту). В Net такой ошибки не сделали, и null — всего лишь еще одно значение.
В SQL реализована нормальная трёхзначная логика. Что с ним не так?
Re[10]: Nullable & синтаксис
От:
Аноним
Дата:
21.04.09 15:16
Оценка:
Здравствуйте, anton_t, Вы писали:
А>>
А>>if (!string.IsNullOrEmpty(o1))
А>> result += o1.ToString();
А>>...
А>>if (!string.IsNullOrEmpty(o10))
А>> result += o10.ToString();
А>>
Здравствуйте, anton_t, Вы писали:
_>В SQL реализована нормальная трёхзначная логика. Что с ним не так?
Что значит нормальная? Сделай следующий запрос, и скажи насколько она трехзначна.
select field, count(field) from table group by field — где field содержит NULL значения
Здравствуйте, GlebZ, Вы писали:
GZ>Здравствуйте, anton_t, Вы писали:
_>>В SQL реализована нормальная трёхзначная логика. Что с ним не так? GZ>Что значит нормальная? Сделай следующий запрос, и скажи насколько она трехзначна. GZ>select field, count(field) from table group by field — где field содержит NULL значения
Всё правильно получатся. Подозреваю, что бы получилось то, что нужно тебе, надо выполнить
select field, count(*) from [table] group by field
Здравствуйте, anton_t, Вы писали:
_>Всё правильно получатся.
С точки зрения SQL — да. _>Подозреваю, что бы получилось то, что нужно тебе, надо выполнить
Мне не нужно. Мне нужно чтобы он исполнил мои ожидания. Я заказывал количество данных элементов. И как результат, либо вынесите NULL нафиг из запроса, либо означьте его как значение(пускай даже оно называется Unknown). Оно получается не то, и не то. В Net — такое проблемы нет.
У Дейта были более интересные примеры с совместимостью с реальным миром. Поищи через гугл.
Здравствуйте, GlebZ, Вы писали:
GZ>Здравствуйте, anton_t, Вы писали:
_>>Всё правильно получатся. GZ>С точки зрения SQL — да. _>>Подозреваю, что бы получилось то, что нужно тебе, надо выполнить GZ>Мне не нужно. Мне нужно чтобы он исполнил мои ожидания. Я заказывал количество данных элементов. И как результат, либо вынесите NULL нафиг из запроса, либо означьте его как значение(пускай даже оно называется Unknown). Оно получается не то, и не то.
Ожидания у всех разные. Нужно просто понять SQL и не ожидать от него чего-то не того. Запросил количество строк с определённым значением поля — получи. Ты же что-то имел ввиду, когда написал count(field) вместо count(*)?
GZ>В Net — такое проблемы нет.
GZ>У Дейта были более интересные примеры с совместимостью с реальным миром. Поищи через гугл.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, anton_t, Вы писали:
_>>А, ну так-то да. Если 3-й C#, то можно так:
_>>
_>>using System;
_>>namespace ConsoleApplication44
_>>{
_>> class Program
_>> {
_>> static void Main(string[] args)
_>> {
_>> object test = null;
_>> Console.WriteLine(test.ToStr());
_>> Console.ReadLine();
_>> }
_>> }
_>> public static class StringHelper
_>> {
_>> public static string ToStr (this object obj)
_>> {
_>> if (ReferenceEquals(obj, null))
_>> return string.Empty;
_>> return obj.ToString();
_>> }
_>> }
_>>}
_>>
А>Вот так и начинаются всякие Pupkin.MyLibrary.dll. В МС могли бы и сами до этого хелпера дотумкать.
И почему модно считать себя умнее кучи программистов из МС?
Здравствуйте, GlebZ, Вы писали:
GZ>Вполне равнозначный. Енто в SQL — NULL не является значением, а обозначает "ничего"(за что сильно поплатились, но это к Дейту). В Net такой ошибки не сделали, и null — всего лишь еще одно значение.
В типизированных языках любое значение имеет тип. Какой тип у "значения" null?
Здравствуйте, Lloyd, Вы писали:
L>В типизированных языках любое значение имеет тип. Какой тип у "значения" null?
Зависит от контекста использования. Куда ты его присваиваешь, тот и тип. Однако — это демагогия. Ну например, void — не является значением. Однако ты же можешь получить его тип.
Re[14]: Nullable & синтаксис
От:
Аноним
Дата:
22.04.09 06:25
Оценка:
Здравствуйте, gandjustas, Вы писали:
А>>Вот так и начинаются всякие Pupkin.MyLibrary.dll. В МС могли бы и сами до этого хелпера дотумкать. G>И почему модно считать себя умнее кучи программистов из МС?
G>См Convert.ToString
Первое и главное. Что общего у Convert.ToString и у примера, приведенного Антоном Т.?
Второе, при чем здесь ум и куча программистов? Если собрать кучу программистов, да еще покрасить в красно-сине-желто-зеленые цвета, они сделают продукт без единого серого пятнышка? Все, чего хотелось бы — чтоб соответствующая библиотека была сделана в МСе, чтобы не изобретать велосипед.
Здравствуйте, Аноним, Вы писали:
А>>>Вот так и начинаются всякие Pupkin.MyLibrary.dll. В МС могли бы и сами до этого хелпера дотумкать. G>>И почему модно считать себя умнее кучи программистов из МС?
G>>См Convert.ToString
А>Первое и главное. Что общего у Convert.ToString и у примера, приведенного Антоном Т.?
Так вот, это НЕ то же самое, что предложил Антон:
_FR>result += o1.ToString(); _FR>... _FR>result += o10.ToString();
Если бы там был реализован статичный SafeToString(this object o), это я бы принял как возражение и согласился. А так — ну, еще один способ написать код. Могу предложить много других. Например, o == null ? "" : o.ToString().
_FR>А мог бы и вовсе обойтись этим: _FR>
result += String.Concat(o1, …, o10);
Вот про это не знал, поскольку привык пользоваться операторами (они, по-моему, читабельнее). Спасибо, теперь знаю. Но это частный случай, когда нужна конкатенация. (Таков уж мой пример). Я оставляю свое утверждение в силе: в МСе могли бы сделать код, предложенный Антоном и это было бы разумно. Почему? Потому, что это решение очевидно. Я сам независимо пришел к нему, когда возникла эта проблема. И еще один мой знакомый. Тоже независимо. Когда этот код независимо изобретают и реализуют, напоминает велосипедостроение.
Ладно, это были частности. Как насчет большого вопроса: зачем "у "ещё одного значения" есть некоторые ограничения"? Чем они обоснованы? null.ToString() — это было бы здорово.
Здравствуйте, GlebZ, Вы писали:
GZ>Здравствуйте, anton_t, Вы писали:
_>>Ожидания у всех разные. Нужно просто понять SQL и не ожидать от него чего-то не того. Запросил количество строк с определённым значением поля — получи. Ты же что-то имел ввиду, когда написал count(field) вместо count(*)? GZ>Какая разница между ними, если кортеж может содержать одно поле со значением NULL? Я оперирую данными, но в данном случае мы получаем разные результаты.
Здравствуйте, Аноним, Вы писали:
А> Почему? Потому, что это решение очевидно.
Это вовсе не очевидно. потому что пустая строка и null в принципе разные значени. И не всегда нужно чтобы null.ToString() возвращал пустую строку. я обычно в таких случаях пишу
public static string GetString (this object Value, string defValue);
Здравствуйте, anton_t, Вы писали:
_>Разница большая. Первый считает строки, в которых определено (т.е. не NULL) поле field, а второй считает все строки.
Ты опять ввел логику хранения данных SQL. Между тем, данные либо есть, либо нет. Почему для group by данные есть а для count — нет?
Это противоречит цели SQL, который разрабатывался как язык доступа для кухарок. На мой взгляд это было ошибкой. В результате и кухарки остались на кухне, и язык испоганили.
зы. аднако уже пошел офтопп.
Здравствуйте, GlebZ, Вы писали:
GZ>… SQL, … разрабатывался как язык доступа для кухарок. На мой взгляд это было ошибкой. В результате и кухарки остались на кухне, и язык испоганили.
Help will always be given at Hogwarts to those who ask for it.