Логически невозможно, чтобы оно не имело значения. Он должен будет вернуть что-то, некоторую группу из 1 и 0, которая, по крайней мере, считается ссылкой на Tuple<String, String>[]
, поэтому в этом смысле она имеет значение.
Это также тот случай, когда все поля в классах устанавливаются в их значения по умолчанию (default(T)
для любого типа T
они есть, null
для всех ссылочных типов). В противном случае было бы возможно иметь объект, который находился бы в состоянии, которое не только не имело бы никакого смысла с точки зрения того, что он делает, но и не имело никакого смысла по правилам того, что .NET ожидает от объектов. Это включает в себя скрытые поля за автоматическими свойствами.
Теперь на некоторых языках мы можем сделать эквивалент этого:
public Tuple<String, String>[] Breadcrumbs
{
get
{
Tuple<String, String>[] whatIWillSend;
return whatIWillSend;
}
}
Если бы это было разрешено, whatIWillSend
имел бы значение, определяемое не каким-либо осознанным решением с вашей стороны, а тем, что случилось в памяти в то время. Это может быть ноль, это может быть действительный Tuple<String, String>[]
по простому совпадению (но не тот, который вы хотели использовать!), Это может быть Dictionary<int, List<string>>
, что среда выполнения теперь подумает на самом деле Tuple<String, String>[]
( там идет безопасность типов всей системы), это может быть четверть структуры decimal
. (В языках, допускающих такие вещи, также может быть общеизвестным значением, которое отладчики для таких языков устанавливают в этих случаях именно так, чтобы помочь находить ошибки, вызванные этим).
Это самая близкая вещь, которую мы можем получить к свойству, не имеющему значения. Обратите внимание, что:
- Это все равно будет иметь значение, но не значащее значение.
- Нам все равно не разрешено делать это в C #.