Nullable & синтаксис
От: Tom Россия http://www.RSDN.ru
Дата: 21.04.09 09:00
Оценка: +2
Это меня одного смущает что такой код компилируется и самое главное не падает?


DateTime? timeToCall = null;
string s = timeToCall.ToString();
Народная мудрось
всем все никому ничего(с).
Re: Nullable & синтаксис
От: _FRED_ Черногория
Дата: 21.04.09 09:09
Оценка: +3 -3
Здравствуйте, Tom, Вы писали:

Tom>Это меня одного смущает что такой код компилируется и самое главное не падает?

Tom>DateTime? timeToCall = null;
Tom>string s = timeToCall.ToString();


А чему там падать? Тип "DateTime?" является value type, поэтому ToString() вызывается "на ура".

"= null" компилятором превращается в инициализацию этой самой структуры, ведь такой код ничем не смущает:
DateTime? timeToCall = new Nullable<DateTime>(); // like "= null"
string s = timeToCall.ToString();
Help will always be given at Hogwarts to those who ask for it.
Re: Nullable & синтаксис
От: cvetkov  
Дата: 21.04.09 09:10
Оценка:
здесь
Re[2]: Nullable & синтаксис
От: cvetkov  
Дата: 21.04.09 09:29
Оценка:
сравни с
DateTime? dt = null;
dt.AddMilliseconds(0.0);

или другим каким методом класса DateTime
Re[3]: Nullable & синтаксис
От: _FRED_ Черногория
Дата: 21.04.09 11:32
Оценка: -1
Здравствуйте, cvetkov, Вы писали:

C>сравни с

C>DateTime? dt = null;
C>dt.AddMilliseconds(0.0);

C>или другим каким методом класса DateTime

Что я должен увидеть в сравнении? Во первых, твой код даже не скомпилится, а некомпилящегося безобразия можно написать много и разного. Во-вторых, в оригинальном примере вызывался вовсе не метод DateTime: и что полезного мы получим от сравнения вызова метода одной структуры с вызовом метода другой?
Help will always be given at Hogwarts to those who ask for it.
Re[2]: Nullable & синтаксис
От: Tom Россия http://www.RSDN.ru
Дата: 21.04.09 12:56
Оценка: -1
Мне не надо обьяснять как оно работает. Я это прекрасно понимаю.
Мне ненравится как оно выглядит в принципе.
Если посмотреть на то что мы делаем и сильно не вдумываться — мы берём и присваиваем null некоторой переменной.
А потом у неё вызываем метод который прекрасно работает.
Как минимум выглядит это странно.
... << RSDN@Home 1.2.0 alpha 4 rev. 1139>>
Народная мудрось
всем все никому ничего(с).
Re[3]: Nullable & синтаксис
От: GlebZ Россия  
Дата: 21.04.09 13:12
Оценка: -2 :)
Здравствуйте, Tom, Вы писали:

Tom>Как минимум выглядит это странно.

А 3.ToString() тоже выглядит странным?
Re[3]: Nullable & синтаксис
От: _FRED_ Черногория
Дата: 21.04.09 13:23
Оценка: +1
Здравствуйте, Tom, Вы писали:

Tom>Мне не надо обьяснять как оно работает. Я это прекрасно понимаю.

Tom>Мне ненравится как оно выглядит в принципе.
Tom>Если посмотреть на то что мы делаем и сильно не вдумываться — мы берём и присваиваем null некоторой переменной.
Tom>А потом у неё вызываем метод который прекрасно работает.
Tom>Как минимум выглядит это странно.

Нет, не выглядит: с тем же успехом можно вызвать extension-метод, который может вернуть даже что-то осмысленное. Просто не нужно на этой мелочи заморачиваться, в ней ничего ни умного ни интересного нет.
Help will always be given at Hogwarts to those who ask for it.
Re[4]: Nullable & синтаксис
От: cvetkov  
Дата: 21.04.09 13:28
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>Что я должен увидеть в сравнении?

то что два очень схожих вызова ведут себя совершенно по разному
_FR> Во первых, твой код даже не скомпилится,
извиняюсь. под рукой нет ничего на чем можно проверить
Re[4]: Nullable & синтаксис
От: Tom Россия http://www.RSDN.ru
Дата: 21.04.09 13:32
Оценка:
_FR>Нет, не выглядит: с тем же успехом можно вызвать extension-метод, который может вернуть даже что-то осмысленное. Просто не нужно на этой мелочи заморачиваться, в ней ничего ни умного ни интересного нет.

Я думаю для переходящих с C/С++/Java оно будет не очень понятно до осознания value типов.
Народная мудрось
всем все никому ничего(с).
Re[4]: Nullable & синтаксис
От: Константин Л. Франция  
Дата: 21.04.09 13:38
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>Здравствуйте, Tom, Вы писали:


Tom>>Как минимум выглядит это странно.

GZ>А 3.ToString() тоже выглядит странным?

при чем здесь это? неравнозначный пример
Re[5]: Nullable & синтаксис
От: _FRED_ Черногория
Дата: 21.04.09 13:39
Оценка: +3
Здравствуйте, Tom, Вы писали:

_FR>>Нет, не выглядит: с тем же успехом можно вызвать extension-метод, который может вернуть даже что-то осмысленное. Просто не нужно на этой мелочи заморачиваться, в ней ничего ни умного ни интересного нет.


Tom>Я думаю для переходящих с C/С++/Java оно будет не очень понятно до осознания value типов.


Зато сишники не удивятся тому, что
var x = new Y();

может вернуть null
Автор: _FRED_
Дата: 25.03.09
Так что статус кво присутствует

Для осознания value-типов и всего остального [нового] нужно впервую очередь отбросить предрассудки и внимательно ознакомится с литературой по предмету, а не то можно и на более неприятные косяки нелететь. Накладывать свой [старый] опыт на новое нужно очень осторожно. Зарвавшиеся являются сами себе буратинами.
Help will always be given at Hogwarts to those who ask for it.
Re[5]: Nullable & синтаксис
От: GlebZ Россия  
Дата: 21.04.09 13:52
Оценка: +2 -2
Здравствуйте, Константин Л., Вы писали:

КЛ>при чем здесь это? неравнозначный пример

Вполне равнозначный. Енто в SQL — NULL не является значением, а обозначает "ничего"(за что сильно поплатились, но это к Дейту). В Net такой ошибки не сделали, и null — всего лишь еще одно значение.
Re[6]: Nullable & синтаксис
От: Константин Л. Франция  
Дата: 21.04.09 14:11
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>Здравствуйте, Константин Л., Вы писали:


КЛ>>при чем здесь это? неравнозначный пример

GZ>Вполне равнозначный. Енто в SQL — NULL не является значением, а обозначает "ничего"(за что сильно поплатились, но это к Дейту). В Net такой ошибки не сделали, и null — всего лишь еще одно значение.

да неужели?

null.ToString();



error CS0023: Operator '.' cannot be applied to operand of type '<null>'

Re[5]: Nullable & синтаксис
От: _FRED_ Черногория
Дата: 21.04.09 14:18
Оценка: 2 (1) -1 :))
Здравствуйте, cvetkov, Вы писали:

_FR>>Что я должен увидеть в сравнении?

C>то что два очень схожих вызова ведут себя совершенно по разному

Следующие два вызова ещё более похожи друг на друга

File.Delete(path); // 1
File.Create(path); // 2


однако и тут ведут себя (ну надо же!) не одинаково.

То, что "похожие" вещи ведут себя по-разному [уж тем более в нашем деле] является весьма и весьма распространённой ситуацией. Ключ к пониманию которой в том, что нужно _правильно_ (по _правильным_ параметрам, а не надуманным) определять, какие вещи "одинаковы" (в _чём_!), а какие нет. В данном конкретном случае ключом служат правила языка, и если их не понимать, то можно и в более простых вещах сесть в лужу.

Обсуждение же достоинств языка с позиции понятности-непонятности их любому новичку [в данном конкретном языке\технологии] могут завести в такие дебри, из которых уже будет не выбраться никому из участников.
Help will always be given at Hogwarts to those who ask for it.
Re[7]: Nullable & синтаксис
От: _FRED_ Черногория
Дата: 21.04.09 14:22
Оценка: +1 -1
Здравствуйте, Константин Л., Вы писали:

КЛ>>>при чем здесь это? неравнозначный пример

GZ>>Вполне равнозначный. Енто в SQL — NULL не является значением, а обозначает "ничего"(за что сильно поплатились, но это к Дейту). В Net такой ошибки не сделали, и null — всего лишь еще одно значение.

КЛ>да неужели?

КЛ>null.ToString();

КЛ>error CS0023: Operator '.' cannot be applied to operand of type '<null>'


И что тебя удивляет? Что у "ещё одного значения" есть некоторые ограничения? Так они есть у любого значения: Например, у Math.PI нет метода "GetSomthing()".

Детский сад
Help will always be given at Hogwarts to those who ask for it.
Re[8]: Nullable & синтаксис
От: Константин Л. Франция  
Дата: 21.04.09 14:36
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>Здравствуйте, Константин Л., Вы писали:


КЛ>>>>при чем здесь это? неравнозначный пример

GZ>>>Вполне равнозначный. Енто в SQL — NULL не является значением, а обозначает "ничего"(за что сильно поплатились, но это к Дейту). В Net такой ошибки не сделали, и null — всего лишь еще одно значение.

КЛ>>да неужели?

_FR>
КЛ>>null.ToString();
_FR>

_FR>

КЛ>>error CS0023: Operator '.' cannot be applied to operand of type '<null>'


_FR>И что тебя удивляет? Что у "ещё одного значения" есть некоторые ограничения? Так они есть у любого значения: Например, у Math.PI нет метода "GetSomthing()".


меня не удивляет, а смущает, что у "еще одного значения" разное поведение.

_FR>Детский сад


эмоционально окрашенные определения прошу оставить при себе
Re[8]: Nullable & синтаксис
От: Аноним  
Дата: 21.04.09 14:53
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>И что тебя удивляет? Что у "ещё одного значения" есть некоторые ограничения? Так они есть у любого значения: Например, у Math.PI нет метода "GetSomthing()".


Было бы круто, если бы разработчики сделали такую имплементацию: null.ToString(){return "";}.

Задолбало писать простыни

if (!string.IsNullOrEmpty(o1))
    result += o1.ToString();
...
if (!string.IsNullOrEmpty(o10))
    result += o10.ToString();

вместо
result += o1.ToString() + ... + o10.ToString();
Re[9]: Nullable & синтаксис
От: GlebZ Россия  
Дата: 21.04.09 14:57
Оценка:
Здравствуйте, Константин Л., Вы писали:

КЛ>меня не удивляет, а смущает, что у "еще одного значения" разное поведение.

С чего ты взял что это у тебя значение? Ты предлагаешь чтобы такое компилировалось?
string s;
s.ToString();

Re[9]: Nullable & синтаксис
От: anton_t Россия  
Дата: 21.04.09 15:09
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, _FRED_, Вы писали:


_FR>>И что тебя удивляет? Что у "ещё одного значения" есть некоторые ограничения? Так они есть у любого значения: Например, у Math.PI нет метода "GetSomthing()".


А>Было бы круто, если бы разработчики сделали такую имплементацию: null.ToString(){return "";}.


А>Задолбало писать простыни


А>
А>if (!string.IsNullOrEmpty(o1))
А>    result += o1.ToString();
А>...
А>if (!string.IsNullOrEmpty(o10))
А>    result += o10.ToString();
А>

А>вместо
А>
А>result += o1.ToString() + ... + o10.ToString();
А>

Что-то ты путаешь. Даже такой код отработает без ошибок:
Console.WriteLine((string)null + null);

А если в твоём коде убрать совершенно лишние вызовы ToString, то и проврка на пустоту не нужна.
Re[9]: Nullable & синтаксис
От: Пельмешко Россия blog
Дата: 21.04.09 15:10
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Было бы круто, если бы разработчики сделали такую имплементацию: null.ToString(){return "";}.

А>Задолбало писать простыни

result += o1.ToString() + ... + o10.ToString();


А если бы Вы правильно складывали строки, то есть StringBuilder'ом, то Вы бы обратили внимание на то, что null в качестве входного String он просто игнорирует Как и в строках формата
var buf = new StringBuilder();

buf.Append(o1);
buf.Append(o2);
buf.Append(o3);
....
Re[6]: Nullable & синтаксис
От: anton_t Россия  
Дата: 21.04.09 15:11
Оценка:
Здравствуйте, 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();
А>>

А>>вместо
А>>
А>>result += o1.ToString() + ... + o10.ToString();
А>>

_>Что-то ты путаешь. Даже такой код отработает без ошибок:
_>
_>Console.WriteLine((string)null + null);
_>

_>А если в твоём коде убрать совершенно лишние вызовы ToString, то и проврка на пустоту не нужна.

Сорри... Заврался.

if (o1 != null)
    result += o1.ToString();
...
if (o10 != null)
    result += o10.ToString();
Re[11]: Nullable & синтаксис
От: anton_t Россия  
Дата: 21.04.09 15:23
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А>Сорри... Заврался.


А>
А>if (o1 != null)
А>    result += o1.ToString();
А>...
А>if (o10 != null)
А>    result += o10.ToString();
А>


А, ну так-то да. Если 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();
        }
    }
}
Re[7]: Nullable & синтаксис
От: GlebZ Россия  
Дата: 21.04.09 15:26
Оценка:
Здравствуйте, anton_t, Вы писали:

_>В SQL реализована нормальная трёхзначная логика. Что с ним не так?

Что значит нормальная? Сделай следующий запрос, и скажи насколько она трехзначна.
select field, count(field) from table group by field — где field содержит NULL значения
Re[8]: Nullable & синтаксис
От: anton_t Россия  
Дата: 21.04.09 15:32
Оценка:
Здравствуйте, 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
Re[9]: Nullable & синтаксис
От: GlebZ Россия  
Дата: 21.04.09 16:24
Оценка:
Здравствуйте, anton_t, Вы писали:

_>Всё правильно получатся.

С точки зрения SQL — да.
_>Подозреваю, что бы получилось то, что нужно тебе, надо выполнить
Мне не нужно. Мне нужно чтобы он исполнил мои ожидания. Я заказывал количество данных элементов. И как результат, либо вынесите NULL нафиг из запроса, либо означьте его как значение(пускай даже оно называется Unknown). Оно получается не то, и не то. В Net — такое проблемы нет.

У Дейта были более интересные примеры с совместимостью с реальным миром. Поищи через гугл.
Re[10]: Nullable & синтаксис
От: anton_t Россия  
Дата: 21.04.09 16:44
Оценка: 8 (1)
Здравствуйте, GlebZ, Вы писали:

GZ>Здравствуйте, anton_t, Вы писали:


_>>Всё правильно получатся.

GZ>С точки зрения SQL — да.
_>>Подозреваю, что бы получилось то, что нужно тебе, надо выполнить
GZ>Мне не нужно. Мне нужно чтобы он исполнил мои ожидания. Я заказывал количество данных элементов. И как результат, либо вынесите NULL нафиг из запроса, либо означьте его как значение(пускай даже оно называется Unknown). Оно получается не то, и не то.

Ожидания у всех разные. Нужно просто понять SQL и не ожидать от него чего-то не того. Запросил количество строк с определённым значением поля — получи. Ты же что-то имел ввиду, когда написал count(field) вместо count(*)?

GZ>В Net — такое проблемы нет.


GZ>У Дейта были более интересные примеры с совместимостью с реальным миром. Поищи через гугл.


Ага, нашёл http://www.citforum.ru/database/articles/nulls/
Re[12]: Nullable & синтаксис
От: Аноним  
Дата: 21.04.09 17:02
Оценка:
Здравствуйте, 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. В МС могли бы и сами до этого хелпера дотумкать.
Re[13]: Nullable & синтаксис
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 21.04.09 19:51
Оценка: +2
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, 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. В МС могли бы и сами до этого хелпера дотумкать.

И почему модно считать себя умнее кучи программистов из МС?

См Convert.ToString
Re[6]: Nullable & синтаксис
От: Lloyd Россия  
Дата: 21.04.09 20:04
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>Вполне равнозначный. Енто в SQL — NULL не является значением, а обозначает "ничего"(за что сильно поплатились, но это к Дейту). В Net такой ошибки не сделали, и null — всего лишь еще одно значение.


В типизированных языках любое значение имеет тип. Какой тип у "значения" null?
Re[11]: Nullable & синтаксис
От: GlebZ Россия  
Дата: 22.04.09 04:51
Оценка:
Здравствуйте, anton_t, Вы писали:

_>Ожидания у всех разные. Нужно просто понять SQL и не ожидать от него чего-то не того. Запросил количество строк с определённым значением поля — получи. Ты же что-то имел ввиду, когда написал count(field) вместо count(*)?

Какая разница между ними, если кортеж может содержать одно поле со значением NULL? Я оперирую данными, но в данном случае мы получаем разные результаты.

_>Ага, нашёл http://www.citforum.ru/database/articles/nulls/

Прикольно. Не читал. Впрочем тут же присутствует и критика оной:
http://www.citforum.ru/database/articles/nulls_criticism/
http://www.citforum.ru/database/articles/date_vs_rubinson/
http://www.citforum.ru/database/articles/grant_vs_rubinson/
Re[7]: Nullable & синтаксис
От: GlebZ Россия  
Дата: 22.04.09 05:13
Оценка: +1
Здравствуйте, Lloyd, Вы писали:

L>В типизированных языках любое значение имеет тип. Какой тип у "значения" null?

Зависит от контекста использования. Куда ты его присваиваешь, тот и тип. Однако — это демагогия. Ну например, void — не является значением. Однако ты же можешь получить его тип.
Re[14]: Nullable & синтаксис
От: Аноним  
Дата: 22.04.09 06:25
Оценка:
Здравствуйте, gandjustas, Вы писали:

А>>Вот так и начинаются всякие Pupkin.MyLibrary.dll. В МС могли бы и сами до этого хелпера дотумкать.

G>И почему модно считать себя умнее кучи программистов из МС?

G>См Convert.ToString


Первое и главное. Что общего у Convert.ToString и у примера, приведенного Антоном Т.?
Второе, при чем здесь ум и куча программистов? Если собрать кучу программистов, да еще покрасить в красно-сине-желто-зеленые цвета, они сделают продукт без единого серого пятнышка? Все, чего хотелось бы — чтоб соответствующая библиотека была сделана в МСе, чтобы не изобретать велосипед.
Re[15]: Nullable & синтаксис
От: _FRED_ Черногория
Дата: 22.04.09 06:36
Оценка:
Здравствуйте, Аноним, Вы писали:

А>>>Вот так и начинаются всякие Pupkin.MyLibrary.dll. В МС могли бы и сами до этого хелпера дотумкать.

G>>И почему модно считать себя умнее кучи программистов из МС?

G>>См Convert.ToString


А>Первое и главное. Что общего у Convert.ToString и у примера, приведенного Антоном Т.?


То, то с помощью Convert.ToString тот
Автор: anton_t
Дата: 21.04.09
пример можно смело выкинуть. Возражение же относилось не к anton_t, а к Анониму, не знающему стандартной библиотеки:

Вот так и начинаются всякие Pupkin.MyLibrary.dll. В МС могли бы и сами до этого хелпера дотумкать.


В МС "дотумкали". Если бы Аноним
Автор:
Дата: 21.04.09
был лучше знаком с BCL, то вместо:
if (o1 != null)
    result += o1.ToString();
...
if (o10 != null)
    result += o10.ToString();

он написал бы
result += Convert.ToString(o1);
...
result += Convert.ToString(o10);

А мог бы и вовсе обойтись этим:
result += String.Concat(o1, …, o10);
Help will always be given at Hogwarts to those who ask for it.
Re[16]: Nullable & синтаксис
От: Аноним  
Дата: 22.04.09 07:01
Оценка:
Здравствуйте, _FRED_, Вы писали:

Относительно того, кто кому что написал — я не идиот и сам как-нибудь разберусь. Вопрос был, что общего.

Вы пишете:

_FR>он написал бы

_FR>
_FR>result += Convert.ToString(o1);
_FR>...
_FR>result += Convert.ToString(o10);
_FR>


Так вот, это НЕ то же самое, что предложил Антон:

_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() — это было бы здорово.
Re[12]: Nullable & синтаксис
От: anton_t Россия  
Дата: 22.04.09 08:20
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>Здравствуйте, anton_t, Вы писали:


_>>Ожидания у всех разные. Нужно просто понять SQL и не ожидать от него чего-то не того. Запросил количество строк с определённым значением поля — получи. Ты же что-то имел ввиду, когда написал count(field) вместо count(*)?

GZ>Какая разница между ними, если кортеж может содержать одно поле со значением NULL? Я оперирую данными, но в данном случае мы получаем разные результаты.

Разница большая. Первый считает строки, в которых определено (т.е. не NULL) поле field, а второй считает все строки.

_>>Ага, нашёл http://www.citforum.ru/database/articles/nulls/

GZ>Прикольно. Не читал. Впрочем тут же присутствует и критика оной:
GZ>http://www.citforum.ru/database/articles/nulls_criticism/
GZ>http://www.citforum.ru/database/articles/date_vs_rubinson/
GZ>http://www.citforum.ru/database/articles/grant_vs_rubinson/

Ага "Критика критики критики Дейта".
Re[17]: Nullable & синтаксис
От: Ziggi111 Россия  
Дата: 22.04.09 08:25
Оценка:
Здравствуйте, Аноним, Вы писали:

А> Почему? Потому, что это решение очевидно.

Это вовсе не очевидно. потому что пустая строка и null в принципе разные значени. И не всегда нужно чтобы null.ToString() возвращал пустую строку. я обычно в таких случаях пишу

public static string GetString (this object Value, string defValue);
Re[13]: Nullable & синтаксис
От: GlebZ Россия  
Дата: 22.04.09 08:39
Оценка: 33 (1) +1
Здравствуйте, anton_t, Вы писали:

_>Разница большая. Первый считает строки, в которых определено (т.е. не NULL) поле field, а второй считает все строки.

Ты опять ввел логику хранения данных SQL. Между тем, данные либо есть, либо нет. Почему для group by данные есть а для count — нет?
Это противоречит цели SQL, который разрабатывался как язык доступа для кухарок. На мой взгляд это было ошибкой. В результате и кухарки остались на кухне, и язык испоганили.
зы. аднако уже пошел офтопп.
Re[14]: Nullable & синтаксис
От: _FRED_ Черногория
Дата: 22.04.09 08:54
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>… SQL, … разрабатывался как язык доступа для кухарок. На мой взгляд это было ошибкой. В результате и кухарки остались на кухне, и язык испоганили.


Help will always be given at Hogwarts to those who ask for it.
Re[18]: Nullable & синтаксис
От: Аноним  
Дата: 22.04.09 09:04
Оценка:
Здравствуйте, Ziggi111, Вы писали:

А>> Почему? Потому, что это решение очевидно.

Z>Это вовсе не очевидно. потому что пустая строка и null в принципе разные значени. И не всегда нужно чтобы null.ToString() возвращал пустую строку. я обычно в таких случаях пишу

Слова "это решение очевидно" относились к решению Антона.
Re[8]: Nullable & синтаксис
От: Lloyd Россия  
Дата: 22.04.09 15:13
Оценка:
Здравствуйте, GlebZ, Вы писали:

L>>В типизированных языках любое значение имеет тип. Какой тип у "значения" null?

GZ>Зависит от контекста использования. Куда ты его присваиваешь, тот и тип.

Это будет не тип значения, а тип переменной. Почувствуте разницу.

GZ>Ну например, void — не является значением. Однако ты же можешь получить его тип.

Из того, что у любого значения есть тип, не следует, что для каждого типа существует значение.
Re[9]: Nullable & синтаксис
От: Kore Sar  
Дата: 07.07.09 16:31
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, _FRED_, Вы писали:
_FR>>И что тебя удивляет? Что у "ещё одного значения" есть некоторые ограничения? Так они есть у любого значения: Например, у Math.PI нет метода "GetSomthing()".
А>Было бы круто, если бы разработчики сделали такую имплементацию: null.ToString(){return "";}.
А>Задолбало писать простыни
А>
А>if (!string.IsNullOrEmpty(o1))
А>    result += o1.ToString();
А>...
А>if (!string.IsNullOrEmpty(o10))
А>    result += o10.ToString();
А>

А>вместо
А>
А>result += o1.ToString() + ... + o10.ToString();
А>


result += (o1 ?? "").ToString() + ... (o10 ?? "").ToString();
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.