本文整理汇总了C#中ArrayBuilder.Last方法的典型用法代码示例。如果您正苦于以下问题:C# ArrayBuilder.Last方法的具体用法?C# ArrayBuilder.Last怎么用?C# ArrayBuilder.Last使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ArrayBuilder
的用法示例。
在下文中一共展示了ArrayBuilder.Last方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: DeconstructOrAssignOutputs
/// <summary>
/// Takes the outputs from the previous deconstructionStep and depending on the structure of variables, will:
/// - generate further deconstructions,
/// - or simply conversions and assignments.
///
/// Returns true for success, but false if has errors.
/// </summary>
private bool DeconstructOrAssignOutputs(
BoundDeconstructionDeconstructStep deconstructionStep,
ArrayBuilder<DeconstructionVariable> variables,
CSharpSyntaxNode syntax,
DiagnosticBag diagnostics,
ArrayBuilder<BoundDeconstructionDeconstructStep> deconstructionSteps,
ArrayBuilder<BoundDeconstructionAssignmentStep> conversionSteps,
ArrayBuilder<BoundDeconstructionAssignmentStep> assignmentSteps,
ArrayBuilder<BoundDeconstructionConstructionStep> constructionStepsOpt)
{
bool hasErrors = false;
var constructionInputs = constructionStepsOpt == null ? null : ArrayBuilder<BoundDeconstructValuePlaceholder>.GetInstance();
int count = variables.Count;
for (int i = 0; i < count; i++)
{
var variable = variables[i];
var valuePlaceholder = deconstructionStep.OutputPlaceholders[i];
if (variable.HasNestedVariables)
{
var nested = variable.NestedVariables;
if (!DeconstructIntoSteps(valuePlaceholder, syntax, diagnostics, nested, deconstructionSteps, conversionSteps, assignmentSteps, constructionStepsOpt))
{
hasErrors = true;
}
else if (constructionInputs != null)
{
constructionInputs.Add(constructionStepsOpt.Last().OutputPlaceholder);
}
}
else
{
var conversion = MakeDeconstructionAssignmentStep(variable.Single, valuePlaceholder, syntax, diagnostics);
conversionSteps.Add(conversion);
var assignment = MakeDeconstructionAssignmentStep(variable.Single, conversion.OutputPlaceholder, syntax, diagnostics);
assignmentSteps.Add(assignment);
if (constructionInputs != null)
{
constructionInputs.Add(conversion.OutputPlaceholder);
}
}
}
if (constructionStepsOpt != null)
{
if (hasErrors)
{
constructionInputs.Free();
}
else
{
var construct = MakeDeconstructionConstructionStep(syntax, diagnostics, constructionInputs.ToImmutableAndFree());
constructionStepsOpt.Add(construct);
}
}
return !hasErrors;
}