Кортежи значений существуют, так зачем использовать модификатор параметра «out»?
В дополнение к простоте использования csharp шаблона TryX
, как указано в ascpixi, еще out один случай, который делает .cs-file кортеж значений непригодным valuetuple в качестве возвращаемого c# типа, — это когда одно из valuetuple двух значений является ссылкой. Например, взгляните visual-c# на 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
не out является ref struct
, поэтому его нельзя valuetuple использовать для этого API. Теоретически c-sharp этот API может возвращать csharp пользовательский кортеж, похожий .cs-file на ref struct
, но в этом случае ему .cs-file будет не хватать языковой csharp поддержки, которая существует c#-language только для реальных кортежей c#.net значений, например, сокращенной c#.net записи со скобками и т. д.
c#
out
valuetuple
Кортежи значений существуют, так зачем использовать модификатор параметра «out»?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.