Кортежи значений существуют, так зачем использовать модификатор параметра «out»?
В дополнение к простоте использования c-sharp шаблона TryX
, как указано в ascpixi, еще csharp один случай, который делает valuetuple кортеж значений непригодным c#.net в качестве возвращаемого c#-language типа, — это когда одно из out двух значений является ссылкой. Например, взгляните c#.net на CollectionsMarshal.GetValueRefOrAddDefault
API:
public static ref TValue? GetValueRefOrAddDefault (
Dictionary dictionary,
TKey key,
out bool exists);
Используется так:
ref int refValue = ref CollectionsMarshal.GetValueRefOrAddDefault(
dictionary, key, out bool exists);
if (!exists) refValue = 1; else refValue++;
ValueTuple
не c#-language является ref struct
, поэтому его нельзя visual-c# использовать для этого API. Теоретически c-sharp этот API может возвращать out пользовательский кортеж, похожий c# на ref struct
, но в этом случае ему visual-c# будет не хватать языковой c#.net поддержки, которая существует c-sharp только для реальных кортежей .cs-file значений, например, сокращенной visual-c# записи со скобками и т. д.
c#
out
valuetuple
Кортежи значений существуют, так зачем использовать модификатор параметра «out»?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.