diff --git a/.openpublishing.redirection.csharp.json b/.openpublishing.redirection.csharp.json index aa121a7e60ef0..538328ca7c6c6 100644 --- a/.openpublishing.redirection.csharp.json +++ b/.openpublishing.redirection.csharp.json @@ -1,5 +1,81 @@ { "redirections": [ + { + "source_path_from_root": "/docs/csharp/async.md", + "redirect_url": "/dotnet/csharp/asynchronous-programming" + }, + { + "source_path_from_root": "/docs/csharp/basic-types.md", + "redirect_url": "/dotnet/csharp/fundamentals/types" + }, + { + "source_path_from_root": "/docs/csharp/classes.md", + "redirect_url": "/dotnet/csharp/fundamentals/types/classes" + }, + { + "source_path_from_root": "/docs/csharp/codedoc.md", + "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" + }, + { + "source_path_from_root": "/docs/csharp/csharp-6.md", + "redirect_url": "/dotnet/csharp/whats-new/csharp-version-history#c-version-60" + }, + { + "source_path_from_root": "/docs/csharp/csharp-7.md", + "redirect_url": "/dotnet/csharp/whats-new/csharp-version-history#c-version-70" + }, + { + "source_path_from_root": "/docs/csharp/csharp.md", + "redirect_url": "/dotnet/csharp" + }, + { + "source_path_from_root": "/docs/csharp/deconstruct.md", + "redirect_url": "/dotnet/csharp/fundamentals/functional/deconstruct" + }, + { + "source_path_from_root": "/docs/csharp/delegates-events.md", + "redirect_url": "/dotnet/csharp/delegates-overview" + }, + { + "source_path_from_root": "/docs/csharp/discards.md", + "redirect_url": "/dotnet/csharp/fundamentals/functional/discards" + }, + { + "source_path_from_root": "/docs/csharp/expression-classes.md", + "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/expression-classes" + }, + { + "source_path_from_root": "/docs/csharp/expression-trees-building.md", + "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/expression-trees-building" + }, + { + "source_path_from_root": "/docs/csharp/expression-trees-execution.md", + "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/expression-trees-execution" + }, + { + "source_path_from_root": "/docs/csharp/expression-trees-explained.md", + "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/expression-trees-explained" + }, + { + "source_path_from_root": "/docs/csharp/expression-trees-interpreting.md", + "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/expression-trees-interpreting" + }, + { + "source_path_from_root": "/docs/csharp/expression-trees-summary.md", + "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees" + }, + { + "source_path_from_root": "/docs/csharp/expression-trees-translating.md", + "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/expression-trees-translating" + }, + { + "source_path_from_root": "/docs/csharp/expression-trees.md", + "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees" + }, + { + "source_path_from_root": "/docs/csharp/features.md", + "redirect_url": "/dotnet/csharp/programming-guide/concepts" + }, { "source_path_from_root": "/docs/csharp/fundamentals/types/anonymous-types.md", "redirect_url": "/dotnet/csharp/fundamentals/types/tuples" @@ -9,5474 +85,5410 @@ "redirect_url": "/dotnet/csharp/fundamentals/program-structure/namespaces" }, { - "source_path_from_root": "/docs/csharp/misc/cs0017.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/entry-point-errors" + "source_path_from_root": "/docs/csharp/generics.md", + "redirect_url": "/dotnet/csharp/fundamentals/types/generics" }, { - "source_path_from_root": "/docs/csharp/misc/cs0028.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/entry-point-errors" + "source_path_from_root": "/docs/csharp/getting-started/additional-resources.md", + "redirect_url": "/dotnet/csharp/tour-of-csharp" }, { - "source_path_from_root": "/docs/csharp/misc/cs0031.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/getting-started/breaking-changes-in-visual-studio-2013.md", + "redirect_url": "/previous-versions/visualstudio/visual-studio-2013/hh678682(v=vs.120)" }, { - "source_path_from_root": "/docs/csharp/misc/cs0059.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/delegate-function-pointer-diagnostics" + "source_path_from_root": "/docs/csharp/getting-started/consuming-library-with-visual-studio-2017.md", + "redirect_url": "/nuget/quickstart/install-and-use-a-package-in-visual-studio" }, { - "source_path_from_root": "/docs/csharp/misc/cs0123.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/delegate-function-pointer-diagnostics" + "source_path_from_root": "/docs/csharp/getting-started/consuming-library-with-visual-studio.md", + "redirect_url": "/nuget/quickstart/install-and-use-a-package-in-visual-studio" }, { - "source_path_from_root": "/docs/csharp/misc/cs0148.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/delegate-function-pointer-diagnostics" + "source_path_from_root": "/docs/csharp/getting-started/debugging-with-visual-studio-2017.md", + "redirect_url": "/dotnet/core/tutorials/debugging-with-visual-studio" }, { - "source_path_from_root": "/docs/csharp/misc/cs0220.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/getting-started/debugging-with-visual-studio.md", + "redirect_url": "/dotnet/core/tutorials/debugging-with-visual-studio" }, { - "source_path_from_root": "/docs/csharp/misc/cs0221.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/getting-started/getting-started-with-csharp.md", + "redirect_url": "/dotnet/csharp/tour-of-csharp" }, { - "source_path_from_root": "/docs/csharp/misc/cs0410.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/delegate-function-pointer-diagnostics" + "source_path_from_root": "/docs/csharp/getting-started/index.md", + "redirect_url": "/dotnet/csharp/tour-of-csharp" }, { - "source_path_from_root": "/docs/csharp/misc/cs0463.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/getting-started/library-with-visual-studio-2017.md", + "redirect_url": "/dotnet/core/tutorials/library-with-visual-studio", + "redirect_document_id": true }, { - "source_path_from_root": "/docs/csharp/misc/cs0543.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/getting-started/library-with-visual-studio.md", + "redirect_url": "/dotnet/core/tutorials/library-with-visual-studio" }, { - "source_path_from_root": "/docs/csharp/misc/cs0594.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/getting-started/publishing-with-visual-studio-2017.md", + "redirect_url": "/dotnet/core/tutorials/publishing-with-visual-studio" }, { - "source_path_from_root": "/docs/csharp/misc/cs0644.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/delegate-function-pointer-diagnostics" + "source_path_from_root": "/docs/csharp/getting-started/publishing-with-visual-studio.md", + "redirect_url": "/dotnet/core/tutorials/publishing-with-visual-studio" }, { - "source_path_from_root": "/docs/csharp/misc/cs0652.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/getting-started/testing-library-with-visual-studio.md", + "redirect_url": "/dotnet/core/tutorials/testing-library-with-visual-studio" }, { - "source_path_from_root": "/docs/csharp/misc/cs0659.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/getting-started/with-visual-studio-2017.md", + "redirect_url": "/dotnet/core/tutorials/with-visual-studio", + "redirect_document_id": true }, { - "source_path_from_root": "/docs/csharp/misc/cs1021.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/getting-started/with-visual-studio-code.md", + "redirect_url": "/dotnet/core/tutorials/with-visual-studio-code", + "redirect_document_id": true }, { - "source_path_from_root": "/docs/csharp/misc/cs0080.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/getting-started/with-visual-studio.md", + "redirect_url": "/dotnet/core/tutorials/with-visual-studio" }, { - "source_path_from_root": "/docs/csharp/misc/cs0081.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/how-to/safely-cast-using-pattern-matching-is-and-as-operators.md", + "redirect_url": "/dotnet/csharp/fundamentals/tutorials/safely-cast-using-pattern-matching-is-and-as-operators" }, { - "source_path_from_root": "/docs/csharp/misc/cs0305.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/implicitly-typed-lambda-expressions.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/lambda-expressions" }, { - "source_path_from_root": "/docs/csharp/misc/cs0306.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/indexers.md", + "redirect_url": "/dotnet/csharp/programming-guide/indexers" }, { - "source_path_from_root": "/docs/csharp/misc/cs0307.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/interactive-with-bash.md", + "redirect_url": "/dotnet/csharp/index" }, { - "source_path_from_root": "/docs/csharp/misc/cs0308.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/interactive-with-powershell.md", + "redirect_url": "/dotnet/csharp/index" }, { - "source_path_from_root": "/docs/csharp/misc/cs0312.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/interactive-with-visualstudio.md", + "redirect_url": "/dotnet/csharp/index" }, { - "source_path_from_root": "/docs/csharp/misc/cs0313.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/interactive.md", + "redirect_url": "/dotnet/csharp/index" }, { - "source_path_from_root": "/docs/csharp/misc/cs0314.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/interfaces.md", + "redirect_url": "/dotnet/csharp/fundamentals/types/interfaces" }, { - "source_path_from_root": "/docs/csharp/misc/cs0315.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/interop.md", + "redirect_url": "/dotnet/csharp/advanced-topics/interop/index" }, { - "source_path_from_root": "/docs/csharp/misc/cs0401.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/lambda-expressions.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/lambda-expressions" }, { - "source_path_from_root": "/docs/csharp/misc/cs0402.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/entry-point-errors" + "source_path_from_root": "/docs/csharp/language-reference/builtin-types/nint-nuint.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types#native-sized-integers" }, { - "source_path_from_root": "/docs/csharp/misc/cs0403.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0034.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" }, { - "source_path_from_root": "/docs/csharp/misc/cs0405.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0071.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" }, - { - "source_path_from_root": "/docs/csharp/misc/cs0407.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" - }, { - "source_path_from_root": "/docs/csharp/misc/cs0412.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0106.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs0449.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0116.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs0116" }, { - "source_path_from_root": "/docs/csharp/misc/cs0450.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0178.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs0451.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0181.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs0454.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0188.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/feature-version-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs0455.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0233.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs0694.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0234.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/assembly-references" }, { - "source_path_from_root": "/docs/csharp/misc/cs0695.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0246.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/assembly-references" }, { - "source_path_from_root": "/docs/csharp/misc/cs0698.md", + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0260.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0270.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0304.md", "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs0706.md", + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0310.md", "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs0717.md", + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0311.md", "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs0104.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs0104" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0413.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs0434.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs0434" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0417.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs0435.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs0435" + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0467.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" }, { - "source_path_from_root": "/docs/csharp/misc/cs0436.md", + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0518.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs0518" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0545.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0552.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0563.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0571.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0579.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0592.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0616.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0650.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0686.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0702.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0703.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0767.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0826.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0834.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0840.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0843.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/feature-version-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0845.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0846.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0854.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1009.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/string-literal" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1018.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructor-calls-with-base-and-this" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1019.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1029.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1063.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1065.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1067.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-types" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1112.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1501.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1502.md", + "redirect_url": "/dotnet/csharp/misc/cs1503" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1614.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1656.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1674.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#implementing-idisposable-and-iasyncdisposable" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1683.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/assembly-references" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1691.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1704.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/assembly-references" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1708.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1716.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1739.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1740.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1741.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1742.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1751.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1919.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1921.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1946.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1983.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1986.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1988.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1994.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1996.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1997.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs3007.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs4004.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs4008.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs4013.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs4014.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs4032.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs4033.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs7000.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8145.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8153.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#conversion-to-expression-trees" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8154.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8155.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#conversion-to-expression-trees" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8166.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8167.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8168.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8169.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8175.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#syntax-limitations-in-lambda-expressions" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8176.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8177.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8178.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8373.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8374.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8400.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/feature-version-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8401.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/feature-version-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8403.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8410.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#implementing-idisposable-and-iasyncdisposable" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8411.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8417.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#implementing-idisposable-and-iasyncdisposable" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8418.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#implementing-idisposable-and-iasyncdisposable" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8515.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/pattern-matching-warnings" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8647.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#using-variable-scope-and-control-flow" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8648.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#using-variable-scope-and-control-flow" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8649.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#using-variable-scope-and-control-flow" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8795.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-types" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8802.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/entry-point-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8803.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/entry-point-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8812.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8817.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-types" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8892.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/warning-waves#cs8892" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8964.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs9036.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs9050.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-struct-errors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/addmodule-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/inputs" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/app-deployment.md", + "redirect_url": "/dotnet/framework/deployment/deployment-guide-for-developers" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/appconfig-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/baseaddress-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/bugreport-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/checked-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/language" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/codepage-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/command-line-building-with-csc-exe.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/debug-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/code-generation" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/define-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/language" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/delaysign-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/security" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/deterministic-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/code-generation" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/doc-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/errorreport-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/filealign-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/fullpaths-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/help-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/miscellaneous" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/highentropyva-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/security" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/how-to-set-environment-variables-for-the-visual-studio-command-line.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/keycontainer-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/security" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/keyfile-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/security" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/langversion-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/language" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/lib-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/link-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/inputs" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/linkresource-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/resources" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/listed-alphabetically.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/listed-by-category.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/main-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/moduleassemblyname-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/noconfig-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/miscellaneous" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/nologo-file-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/miscellaneous" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/nostdlib-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/nowarn-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/errors-warnings" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/nowin32manifest-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/resources" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/nullable-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/language" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/optimize-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/code-generation" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/out-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/pathmap-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/pdb-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/platform-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/preferreduilang-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/publicsign-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/security" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/recurse-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/reference-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/inputs" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/refonly-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/code-generation" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/refout-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/resource-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/resources" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/response-file-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/miscellaneous" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/subsystemversion-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/target-appcontainerexe-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/target-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/target-exe-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/target-library-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/target-module-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/target-winexe-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/target-winmdobj-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/unsafe-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/language" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/utf8output-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/warn-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/errors-warnings" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/warnaserror-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/errors-warnings" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/win32icon-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/resources" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/win32manifest-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/resources" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/compiler-options/win32res-compiler-option.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-options/resources" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/access-keywords.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords/base" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/as.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/type-testing-and-cast#the-as-operator" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/await.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/await" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/bool.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/bool" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/break.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/jump-statements" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/built-in-types-table.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/built-in-types" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/byte.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/char.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/char" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/checked-and-unchecked.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/checked-and-unchecked" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/checked.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/checked-and-unchecked" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/contextual-keywords.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords/index#contextual-keywords" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/continue.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/jump-statements" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/conversion-keywords.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/user-defined-conversion-operators" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/decimal.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/default-values-table.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/default-values" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/delegate.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/reference-types" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/do.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/iteration-statements" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/double.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/dynamic.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/reference-types" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/enum.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/enum" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/exception-handling-statements.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords/statement-keywords" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/explicit-numeric-conversions-table.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/numeric-conversions" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/explicit.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/user-defined-conversion-operators" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/false-literal.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/bool" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/false-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/true-false-operators" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/false.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/bool" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/fixed-statement.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/fixed" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/float.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/floating-point-types-table.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/for.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/iteration-statements" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/foreach-in.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/iteration-statements" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/formatting-numeric-results-table.md", + "redirect_url": "/dotnet/standard/base-types/standard-numeric-format-strings" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/global.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/namespace-alias-qualifier" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/goto.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/jump-statements" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/if-else.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/selection-statements" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/implicit-numeric-conversions-table.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/numeric-conversions" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/implicit.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/user-defined-conversion-operators" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/in-parameter-modifier.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords/method-parameters#in-parameter-modifier" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/int.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/integral-types-table.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/interpolated-strings.md", + "redirect_url": "/dotnet/csharp/language-reference/tokens/interpolated" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/is.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/is" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/iteration-statements.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/iteration-statements" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/jump-statements.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords/statement-keywords" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/literal-keywords.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords/null" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/lock-statement.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/lock" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/long.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/modifiers.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/nameof.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/nameof" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/namespace-keywords.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords/namespace" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/new-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/new-operator" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/object.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/reference-types" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/operator-keywords.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/index" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/operator-overloading" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/out-parameter-modifier.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords/method-parameters#out-parameter-modifier" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/params.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords/method-parameters#params-modifier" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/partial-method.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords/partial-member", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/reference-tables-for-types.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/return.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/jump-statements" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/sbyte.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/selection-statements.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/selection-statements" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/short.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/sizeof.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/sizeof" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/stackalloc.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/stackalloc" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/string.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/reference-types" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/struct.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/struct" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/switch.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/selection-statements" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/throw.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/exception-handling-statements" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/true-false-operators.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/true-false-operators" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/true-literal.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/bool" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/true-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/true-false-operators" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/true.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/bool" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/try-catch-finally.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/exception-handling-statements" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/try-catch.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/exception-handling-statements" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/try-finally.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/exception-handling-statements" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/typeof.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/type-testing-and-cast#the-typeof-operator" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/types.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/uint.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/ulong.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/unchecked.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/checked-and-unchecked" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/ushort.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/using-statement.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/using" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/using-static.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords/using-directive" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/value-types-table.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/value-types" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/value-types.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/value-types" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/var.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/declarations#implicitly-typed-local-variables" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/void.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/void" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/while.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/iteration-statements" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/keywords/yield.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/yield" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/language-specification/index.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/introduction" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/addition-assignment-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#compound-assignment" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/and-assignment-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#compound-assignment" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/and-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#logical-and-operator-" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/bitwise-complement-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/bitwise-and-shift-operators#bitwise-complement-operator-" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/conditional-and-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#conditional-logical-and-operator-" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/conditional-or-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#conditional-logical-or-operator-" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/decrement-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#decrement-operator---" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/dereference-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/pointer-related-operators#pointer-member-access-operator--" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/division-assignment-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#compound-assignment" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/division-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#division-operator-" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/equality-comparison-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/equality-operators#equality-operator-" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/greater-than-equal-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/comparison-operators#greater-than-or-equal-operator-" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/greater-than-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/comparison-operators#greater-than-operator-" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/increment-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#increment-operator-" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/index-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/member-access-operators#indexer-operator-" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/invocation-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/member-access-operators#invocation-operator-" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/left-shift-assignment-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/bitwise-and-shift-operators#compound-assignment" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/left-shift-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/bitwise-and-shift-operators#left-shift-operator-" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/less-than-equal-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/comparison-operators#less-than-or-equal-operator-" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/less-than-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/comparison-operators#less-than-operator-" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/logical-negation-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#logical-negation-operator-" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/member-access-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/member-access-operators#member-access-operator-" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/modulus-assignment-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#compound-assignment" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/modulus-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#remainder-operator-" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/multiplication-assignment-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#compound-assignment" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/multiplication-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#multiplication-operator-" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/namespace-alias-qualifer.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/namespace-alias-qualifier" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/not-equal-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/equality-operators#inequality-operator-" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/null-conditional-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/null-coalescing-operator" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/null-conditional-operators.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/member-access-operators#null-conditional-operators--and-" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/null-parameter-check.md", + "redirect_url": "/dotnet/csharp/language-reference/operators" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/or-assignment-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#compound-assignment" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/or-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#logical-or-operator-" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/remainder-assignment-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#compound-assignment" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/remainder-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#remainder-operator-" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/right-shift-assignment-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/bitwise-and-shift-operators#compound-assignment" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/right-shift-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/bitwise-and-shift-operators#right-shift-operator-" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/subtraction-assignment-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#compound-assignment" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/type-testing-and-conversion-operators.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/type-testing-and-cast" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/xor-assignment-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#compound-assignment" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/operators/xor-operator.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#logical-exclusive-or-operator-" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/index.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-define.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-elif.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-else.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-endif.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-endregion.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-error.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-if.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-line.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-nullable.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-pragma-checksum.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-pragma-warning.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-pragma.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-region.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-undef.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-warning.md", + "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/async-method-builders.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/attributes#2355-the-asyncmethodbuilder-attribute" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/caller-argument-expression.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/attributes#23565-the-callerargumentexpression-attribute" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/constant_interpolated_strings.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#1283-interpolated-string-expressions" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/enhanced-line-directives.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/lexical-structure#658-line-directives" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/extended-property-patterns.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/patterns#1126-property-pattern" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/file-scoped-namespaces.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/namespaces#143-namespace-declarations" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/GlobalUsingDirective.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/namespaces#1452-global-using-alias-directives" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/improved-definite-assignment.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/variables#944-precise-rules-for-determining-definite-assignment" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/improved-interpolated-strings.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/attributes#23591-custom-interpolated-string-expression-handlers" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/index.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/structs#164-synthesized-record-struct-members" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/lambda-attributes.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#1222-anonymous-function-expressions" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/lambda-improvements.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#1222-anonymous-function-expressions" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/parameterless-struct-constructors.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/structs#1659-constructors" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/record-structs.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/structs#164-synthesized-record-struct-members" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-11.0/index.md", + "redirect_url": "/dotnet/csharp/language-reference/proposals/csharp-11.0/static-abstracts-in-interfaces" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-7.0/index.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/readme" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-7.1/index.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/readme" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-7.2/index.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/variables#928-input-parameters" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-7.3/index.md", + "redirect_url": "/dotnet/csharp/language-reference/proposals/csharp-7.3/ref-local-reassignment" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-9.0/index.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/classes#1516-synthesized-record-class-members" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-9.0/nullable-constructor-analysis.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/types#893-nullable-reference-types" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-9.0/nullable-parameter-default-value-analysis.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/types#893-nullable-reference-types" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-9.0/nullable-reference-types-specification.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/types#893-nullable-reference-types" + }, + { + "source_path_from_root": "/docs/csharp/language-reference/specifications.md", + "redirect_url": "/dotnet/csharp/specifications" + }, + { + "source_path_from_root": "/docs/csharp/linq/create-a-nested-group.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/grouping-data" + }, + { + "source_path_from_root": "/docs/csharp/linq/dynamically-specify-predicate-filters-at-runtime.md", + "redirect_url": "/dotnet/csharp/linq/get-started/write-linq-queries" + }, + { + "source_path_from_root": "/docs/csharp/linq/group-query-results.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/grouping-data" + }, + { + "source_path_from_root": "/docs/csharp/linq/group-results-by-contiguous-keys.md", + "redirect_url": "/dotnet/csharp/linq/how-to-extend-linq" + }, + { + "source_path_from_root": "/docs/csharp/linq/handle-exceptions-in-query-expressions.md", + "redirect_url": "/dotnet/csharp/linq/get-started/write-linq-queries" + }, + { + "source_path_from_root": "/docs/csharp/linq/handle-null-values-in-query-expressions.md", + "redirect_url": "/dotnet/csharp/linq/get-started/write-linq-queries" + }, + { + "source_path_from_root": "/docs/csharp/linq/join-by-using-composite-keys.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/join-operations" + }, + { + "source_path_from_root": "/docs/csharp/linq/linq-in-csharp.md", + "redirect_url": "/dotnet/csharp/linq/" + }, + { + "source_path_from_root": "/docs/csharp/linq/linq-to-objects.md", + "redirect_url": "/dotnet/csharp/linq/introduction-to-linq-queries" + }, + { + "source_path_from_root": "/docs/csharp/linq/order-the-results-of-a-join-clause.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/" + }, + { + "source_path_from_root": "/docs/csharp/linq/perform-a-subquery-on-a-grouping-operation.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/grouping-data" + }, + { + "source_path_from_root": "/docs/csharp/linq/perform-custom-join-operations.md", + "redirect_url": "/dotnet/csharp/linq/" + }, + { + "source_path_from_root": "/docs/csharp/linq/perform-grouped-joins.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/join-operations" + }, + { + "source_path_from_root": "/docs/csharp/linq/perform-inner-joins.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/join-operations" + }, + { + "source_path_from_root": "/docs/csharp/linq/perform-left-outer-joins.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/join-operations" + }, + { + "source_path_from_root": "/docs/csharp/linq/query-a-collection-of-objects.md", + "redirect_url": "/dotnet/csharp/linq/get-started/introduction-to-linq-queries" + }, + { + "source_path_from_root": "/docs/csharp/linq/query-expression-basics.md", + "redirect_url": "/dotnet/csharp/linq/get-started/query-expression-basics" + }, + { + "source_path_from_root": "/docs/csharp/linq/return-a-query-from-a-method.md", + "redirect_url": "/dotnet/csharp/linq/get-started/features-that-support-linq#expressions-as-data" + }, + { + "source_path_from_root": "/docs/csharp/linq/store-the-results-of-a-query-in-memory.md", + "redirect_url": "/dotnet/csharp/linq/get-started/introduction-to-linq-queries" + }, + { + "source_path_from_root": "/docs/csharp/linq/walkthrough-writing-queries-linq.md", + "redirect_url": "/dotnet/csharp/linq/get-started/walkthrough-writing-queries-linq" + }, + { + "source_path_from_root": "/docs/csharp/linq/write-linq-queries.md", + "redirect_url": "/dotnet/csharp/linq/get-started/write-linq-queries" + }, + { + "source_path_from_root": "/docs/csharp/local-functions-vs-lambdas.md", + "redirect_url": "/dotnet/csharp/programming-guide/classes-and-structs/local-functions" + }, + { + "source_path_from_root": "/docs/csharp/methods-lambda-expressions.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/lambda-expressions" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0012.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/assembly-references" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0017.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/entry-point-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0022.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0028.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/entry-point-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0031.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0035.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0056.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0057.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0059.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/delegate-function-pointer-diagnostics" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0080.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0081.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0104.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs0104" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0105.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0111.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0121.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0123.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/delegate-function-pointer-diagnostics" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0132.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#static-constructors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0138.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0148.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/delegate-function-pointer-diagnostics" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0171.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/feature-version-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0182.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0185.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lock-semantics" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0192.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0193.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0196.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0199.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0200.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0206.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0208.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0209.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0210.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0211.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0212.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0213.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0214.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0215.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0216.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0217.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0218.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0220.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0221.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0225.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0227.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0231.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0242.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0243.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0244.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0245.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#implementing-idisposable-and-iasyncdisposable" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0248.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/feature-version-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0251.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/feature-version-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0254.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0261.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0262.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0263.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0264.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0265.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0267.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0277.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0282.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0305.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0306.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0307.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0308.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0312.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0313.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0314.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0315.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0400.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/assembly-references" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0401.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0402.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/entry-point-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0403.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0404.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0405.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0407.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0410.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/delegate-function-pointer-diagnostics" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0412.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0415.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0416.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0425.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0428.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0430.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0431.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0432.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0434.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs0434" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0435.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs0435" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0436.md", "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs0436" }, { - "source_path_from_root": "/docs/csharp/misc/cs0437.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs0437" + "source_path_from_root": "/docs/csharp/misc/cs0437.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs0437" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0438.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs0438" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0439.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0440.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0447.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0448.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0449.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0450.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0451.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0454.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0455.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0457.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0459.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0460.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0463.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0466.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0470.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0473.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0501.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0514.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#static-constructors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0515.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#static-constructors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0516.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructor-calls-with-base-and-this" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0517.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructor-calls-with-base-and-this" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0522.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructor-calls-with-base-and-this" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0526.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructor-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0531.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0535.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0538.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0539.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0540.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0541.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0543.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0550.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0551.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0553.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0554.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0555.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0556.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0557.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0558.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0559.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0562.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0564.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0567.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0568.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructors-in-struct-types" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0570.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#CS0570" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0573.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructors-in-struct-types" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0576.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0577.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0578.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0582.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0590.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0591.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0594.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0599.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0609.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0611.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0617.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0623.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0625.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0629.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0631.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0633.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0636.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0637.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0641.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0643.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0644.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/delegate-function-pointer-diagnostics" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0646.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0647.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0652.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0653.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0655.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0657.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0658.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0659.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0660.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0661.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0663.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0668.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0674.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0685.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0687.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0694.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0695.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0698.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0706.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0710.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructor-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0715.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0717.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0719.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0728.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#using-variable-scope-and-control-flow" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0735.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0736.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0737.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0738.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0739.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0747.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0748.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#lambda-expression-parameters-and-returns" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0750.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0751.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0754.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0755.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0756.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0757.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0758.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0759.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0761.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0762.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0763.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0764.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0765.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0815.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0820.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0821.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0824.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructor-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0828.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0831.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0832.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0835.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0837.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0838.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs0839.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1007.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1011.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/string-literal" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1012.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/string-literal" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1014.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1016.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1020.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1021.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1022.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs1022" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1024.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1025.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1027.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1028.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1030.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1032.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1037.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1038.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1039.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/string-literal" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1040.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1043.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1100.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1101.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1102.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1103.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1104.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1105.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1106.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1109.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1110.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1113.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1510.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1517.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1529.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1534.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1535.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1537.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1552.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1553.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1554.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1555.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/entry-point-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1556.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/entry-point-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1557.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/entry-point-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1558.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/entry-point-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1559.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/entry-point-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1560.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1576.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1578.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1586.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1599.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/delegate-function-pointer-diagnostics" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1605.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1608.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1611.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1618.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1621.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#syntax-limitations-in-lambda-expressions" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1622.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1623.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1624.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1625.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1626.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1627.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1628.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#syntax-limitations-in-lambda-expressions" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1629.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1631.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1632.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#syntax-limitations-in-lambda-expressions" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1633.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1634.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1635.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1637.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1641.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1642.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1643.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1649.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1651.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1655.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1657.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1660.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1661.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1662.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1663.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1665.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1666.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1667.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1670.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1671.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1673.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#syntax-limitations-in-lambda-expressions" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1676.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1677.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1678.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1679.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1680.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1681.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1686.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#syntax-limitations-in-lambda-expressions" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1688.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1689.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1692.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1694.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1695.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1696.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1706.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#syntax-limitations-in-lambda-expressions" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1709.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1714.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/assembly-references" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1730.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1731.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1732.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1911.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1920.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1925.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1928.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1929.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1939.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1944.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1945.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1950.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1951.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1952.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1953.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1954.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs1958.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/delegate-function-pointer-diagnostics" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs2017.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/entry-point-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs2034.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs3006.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs3016.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/CS4009.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs5001.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/entry-point-errors" + }, + { + "source_path_from_root": "/docs/csharp/misc/cs8506.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/pattern-matching-warnings" + }, + { + "source_path_from_root": "/docs/csharp/namespaces-and-assemblies.md", + "redirect_url": "/dotnet/csharp/fundamentals/program-structure/namespaces" + }, + { + "source_path_from_root": "/docs/csharp/nullable-attributes.md", + "redirect_url": "/dotnet/csharp/fundamentals/null-safety/migration-strategies" + }, + { + "source_path_from_root": "/docs/csharp/nullable-migration-strategies.md", + "redirect_url": "/dotnet/csharp/fundamentals/null-safety/migration-strategies" + }, + { + "source_path_from_root": "/docs/csharp/nullable-references.md", + "redirect_url": "/dotnet/csharp/fundamentals/null-safety/nullable-reference-types" + }, + { + "source_path_from_root": "/docs/csharp/nullable-warnings.md", + "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/nullable-warnings" + }, + { + "source_path_from_root": "/docs/csharp/parallel.md", + "redirect_url": "/dotnet/standard/parallel-programming/index" + }, + { + "source_path_from_root": "/docs/csharp/pattern-matching.md", + "redirect_url": "/dotnet/csharp/fundamentals/functional/pattern-matching" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/arrays/arrays-as-objects.md", + "redirect_url": "/dotnet/csharp/programming-guide/arrays" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/arrays/implicitly-typed-arrays.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/arrays#implicitly-typed-arrays" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/arrays/index.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/arrays" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/arrays/jagged-arrays.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/arrays#jagged-arrays" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/arrays/multidimensional-arrays.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/arrays#multidimensional-arrays" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/arrays/passing-arrays-as-arguments.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/arrays#passing-arrays-as-arguments" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/arrays/passing-arrays-using-ref-and-out.md", + "redirect_url": "/dotnet/csharp/programming-guide/arrays" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/arrays/single-dimensional-arrays.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/arrays#single-dimensional-arrays" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/arrays/using-foreach-with-arrays.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/arrays" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/classes.md", + "redirect_url": "/dotnet/csharp/fundamentals/types/classes" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/destructors.md", + "redirect_url": "/dotnet/csharp/programming-guide/classes-and-structs/finalizers" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/how-to-access-a-collection-class-with-foreach.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/iteration-statements" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/how-to-know-the-difference-passing-a-struct-and-passing-a-class-to-a-method.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords/method-parameters" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/how-to-use-named-and-optional-arguments-in-office-programming.md", + "redirect_url": "/dotnet/csharp/advanced-topics/interop/how-to-use-named-and-optional-arguments-in-office-programming" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/index.md", + "redirect_url": "/dotnet/csharp/fundamentals/object-oriented" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/inheritance.md", + "redirect_url": "/dotnet/csharp/fundamentals/object-oriented/inheritance" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/objects.md", + "redirect_url": "/dotnet/csharp/fundamentals/object-oriented/objects" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/passing-parameters.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords/method-parameters" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/passing-reference-type-parameters.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords/method-parameters" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/passing-value-type-parameters.md", + "redirect_url": "/dotnet/csharp/language-reference/keywords/method-parameters" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/polymorphism.md", + "redirect_url": "/dotnet/csharp/fundamentals/object-oriented/polymorphism" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/records.md", + "redirect_url": "/dotnet/csharp/fundamentals/types/records" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/ref-returns.md", + "redirect_url": "/dotnet/csharp/language-reference/statements/declarations" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/structs.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/struct" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/using-structs.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/struct" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/assemblies-gac/friend-assemblies.md", + "redirect_url": "/dotnet/standard/assembly/friend", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/assemblies-gac/how-to-create-and-use-assemblies-using-the-command-line.md", + "redirect_url": "/dotnet/standard/assembly/index" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/assemblies-gac/how-to-create-signed-friend-assemblies.md", + "redirect_url": "/dotnet/standard/assembly/create-signed-friend" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/assemblies-gac/how-to-create-unsigned-friend-assemblies.md", + "redirect_url": "/dotnet/standard/assembly/create-unsigned-friend" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/assemblies-gac/how-to-determine-if-a-file-is-an-assembly.md", + "redirect_url": "/dotnet/standard/assembly/identify" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/assemblies-gac/how-to-load-and-unload-assemblies.md", + "redirect_url": "/dotnet/standard/assembly/load-unload" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/assemblies-gac/how-to-share-an-assembly-with-other-applications.md", + "redirect_url": "/dotnet/framework/app-domains/how-to-share-an-assembly-with-other-applications" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/assemblies-gac/index.md", + "redirect_url": "/dotnet/standard/assembly/index", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/assemblies-gac/walkthrough-embedding-type-information-from-microsoft-office-assemblies.md", + "redirect_url": "/previous-versions/visualstudio/visual-studio-2013/ee317478(v%3dvs.120)" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/assemblies-gac/walkthrough-embedding-types-from-managed-assemblies-in-visual-studio.md", + "redirect_url": "/dotnet/standard/assembly/embed-types-visual-studio" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/async/async-return-types.md", + "redirect_url": "/dotnet/csharp/asynchronous-programming/async-return-types" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/async/asynchronous-programming-with-async-and-await.md", + "redirect_url": "/dotnet/csharp/asynchronous-programming" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/async/cancel-an-async-task-or-a-list-of-tasks.md", + "redirect_url": "/dotnet/csharp/asynchronous-programming/cancel-an-async-task-or-a-list-of-tasks" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/async/cancel-async-tasks-after-a-period-of-time.md", + "redirect_url": "/dotnet/csharp/asynchronous-programming/cancel-async-tasks-after-a-period-of-time" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/async/cancel-remaining-async-tasks-after-one-is-complete.md", + "redirect_url": "/dotnet/csharp/asynchronous-programming" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/async/control-flow-in-async-programs.md", + "redirect_url": "/dotnet/csharp/asynchronous-programming/task-asynchronous-programming-model#BKMK_WhatHappensUnderstandinganAsyncMethod" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/async/fine-tuning-your-async-application.md", + "redirect_url": "/dotnet/csharp/asynchronous-programming" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/async/handling-reentrancy-in-async-apps.md", + "redirect_url": "/dotnet/csharp/asynchronous-programming" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/async/how-to-extend-the-async-walkthrough-by-using-task-whenall.md", + "redirect_url": "/dotnet/csharp/asynchronous-programming" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/async/how-to-make-multiple-web-requests-in-parallel-by-using-async-and-await.md", + "redirect_url": "/dotnet/csharp/asynchronous-programming" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/async/index.md", + "redirect_url": "/dotnet/csharp/asynchronous-programming/async-scenarios" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/async/start-multiple-async-tasks-and-process-them-as-they-complete.md", + "redirect_url": "/dotnet/csharp/asynchronous-programming/start-multiple-async-tasks-and-process-them-as-they-complete" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/async/task-asynchronous-programming-model.md", + "redirect_url": "/dotnet/csharp/asynchronous-programming/task-asynchronous-programming-model" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/async/using-async-for-file-access.md", + "redirect_url": "/dotnet/csharp/asynchronous-programming/using-async-for-file-access" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/async/walkthrough-accessing-the-web-by-using-async-and-await.md", + "redirect_url": "/dotnet/csharp/asynchronous-programming" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/attributes/accessing-attributes-by-using-reflection.md", + "redirect_url": "/dotnet/csharp/advanced-topics/reflection-and-attributes/accessing-attributes-by-using-reflection" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/attributes/attributeusage.md", + "redirect_url": "/dotnet/csharp/language-reference/attributes/general" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/attributes/common-attributes.md", + "redirect_url": "/dotnet/csharp/language-reference/attributes/global" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/attributes/creating-custom-attributes.md", + "redirect_url": "/dotnet/csharp/advanced-topics/reflection-and-attributes/creating-custom-attributes" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/attributes/how-to-create-a-c-cpp-union-by-using-attributes.md", + "redirect_url": "/dotnet/csharp/advanced-topics/reflection-and-attributes/how-to-create-a-c-cpp-union-by-using-attributes" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/attributes/index.md", + "redirect_url": "/dotnet/csharp/advanced-topics/reflection-and-attributes/" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/caller-information.md", + "redirect_url": "/dotnet/csharp/language-reference/attributes/caller-information" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/collections.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/collections", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/expression-trees/debugging-expression-trees-in-visual-studio.md", + "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/debugging-expression-trees-in-visual-studio" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/expression-trees/debugview-syntax.md", + "redirect_url": "/dotnet/csharp/linq/how-to-build-dynamic-queries" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/expression-trees/how-to-execute-expression-trees.md", + "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/expression-trees-execution" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/expression-trees/how-to-modify-expression-trees.md", + "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/expression-trees-translating" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/expression-trees/how-to-use-expression-trees-to-build-dynamic-queries.md", + "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/debugview-syntax" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/expression-trees/index.md", + "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/index" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/adding-elements-attributes-and-nodes-to-an-xml-tree.md", + "redirect_url": "/dotnet/standard/linq/add-elements-attributes-nodes-xml-tree", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/advanced-query-techniques-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/join-two-collections" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/aggregation-operations.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/applicability-of-functional-transformation.md", + "redirect_url": "/dotnet/standard/linq/applicability-functional-transformation", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/atomized-xname-and-xnamespace-objects-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/atomized-xname-xnamespace-objects", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/basic-linq-query-operations.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/basic-queries-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/basic-queries-linq-to-xml", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/chaining-queries-example.md", + "redirect_url": "/dotnet/standard/linq/chain-queries-example", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/chaining-standard-query-operators-together.md", + "redirect_url": "/dotnet/standard/linq/chain-standard-query-operators-together", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/classification-of-standard-query-operators-by-manner-of-execution.md", + "redirect_url": "/dotnet/csharp/linq/get-started/introduction-to-linq-queries" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/cloning-vs-attaching.md", + "redirect_url": "/dotnet/standard/linq/create-xml-trees#example-attach-vs-clone" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/comparison-of-xpath-and-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/comparison-xpath-linq-xml", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/concatenation-operations.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/concepts-and-terminology-functional-transformation.md", + "redirect_url": "/dotnet/standard/linq/concepts-terminology-functional-transformation", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/converting-data-types.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/converting-data-types", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/creating-the-source-office-open-xml-document.md", + "redirect_url": "/dotnet/standard/linq/create-source-office-open-xml-document", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/creating-xml-trees-linq-to-xml-2.md", + "redirect_url": "/dotnet/standard/linq/create-xml-trees", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/creating-xml-trees.md", + "redirect_url": "/dotnet/standard/linq/create-xml-trees" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/data-transformations-with-linq.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/deferred-execution-and-lazy-evaluation-in-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/deferred-execution-lazy-evaluation", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/deferred-execution-example.md", + "redirect_url": "/dotnet/standard/linq/deferred-execution-example", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/element-operations.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/enabling-a-data-source-for-linq-querying1.md", + "redirect_url": "/dotnet/csharp/linq/" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/equality-operations.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/example-that-outputs-office-open-xml-document-parts.md", + "redirect_url": "/dotnet/standard/linq/example-outputs-office-open-xml-document-parts", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/features-that-support-linq.md", + "redirect_url": "/dotnet/csharp/linq/get-started/features-that-support-linq" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/filtering-data.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/filtering-data", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/finding-text-in-word-documents.md", + "redirect_url": "/dotnet/standard/linq/find-text-word-documents", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/finding-the-default-paragraph-style.md", + "redirect_url": "/dotnet/standard/linq/find-default-paragraph-style", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/functional-construction-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/functional-construction", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/functional-programming-vs-imperative-programming.md", + "redirect_url": "/dotnet/standard/linq/functional-vs-imperative-programming", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/functional-transformation-of-xml.md", + "redirect_url": "/dotnet/standard/linq/functional-transformation-xml", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/functional-vs-procedural-programming-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/functional-vs-procedural-programming", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/generation-operations.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/getting-started-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/linq-xml-overview" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/getting-started-with-linq.md", + "redirect_url": "/dotnet/csharp/linq/" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/grouping-data.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/grouping-data" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-add-custom-methods-for-linq-queries.md", + "redirect_url": "/dotnet/csharp/linq/how-to-extend-linq" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-build-linq-to-xml-examples.md", + "redirect_url": "/dotnet/standard/linq/build-linq-xml-examples", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-calculate-intermediate-values.md", + "redirect_url": "/dotnet/standard/linq/calculate-intermediate-values", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-catch-parsing-errors.md", + "redirect_url": "/dotnet/standard/linq/catch-parsing-errors", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-chain-axis-method-calls-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/chain-axis-method-calls", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-change-the-namespace-for-an-entire-xml-tree.md", + "redirect_url": "/dotnet/standard/linq/change-namespace-entire-xml-tree", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-combine-and-compare-string-collections-linq.md", + "redirect_url": "/dotnet/csharp/linq/how-to-query-collections" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-combine-linq-queries-with-regular-expressions.md", + "redirect_url": "/dotnet/csharp/linq/how-to-query-strings" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-compare-the-contents-of-two-folders-linq.md", + "redirect_url": "/dotnet/csharp/linq//how-to-query-files-and-directories" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-compute-column-values-in-a-csv-text-file-linq.md", + "redirect_url": "/dotnet/csharp/linq/how-to-query-files-and-directories" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-control-namespace-prefixes-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/control-namespace-prefixes", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-control-the-type-of-a-projection.md", + "redirect_url": "/dotnet/standard/linq/control-type-projection", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-count-occurrences-of-a-word-in-a-string-linq.md", + "redirect_url": "/dotnet/csharp/linq/how-to-query-strings" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-create-a-document-with-namespaces-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/create-document-namespaces-csharp", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-create-a-tree-from-an-xmlreader.md", + "redirect_url": "/dotnet/standard/linq/create-tree-xmlreader", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-create-hierarchy-using-grouping.md", + "redirect_url": "/dotnet/standard/linq/create-hierarchy-grouping", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-debug-empty-query-results-sets.md", + "redirect_url": "/dotnet/standard/linq/debug-empty-query-results-sets", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-filter-on-an-attribute-xpath-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/filter-attribute", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-filter-on-an-optional-element.md", + "redirect_url": "/dotnet/standard/linq/filter-optional-element", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-filter-on-element-names-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/filter-element-names", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-a-child-element-xpath-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/find-child-element", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-a-list-of-child-elements-xpath-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/find-list-child-elements", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-a-single-descendant-using-the-descendants-method.md", + "redirect_url": "/dotnet/standard/linq/find-single-descendant-descendants-method", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-a-union-of-two-location-paths-xpath-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/find-union-two-location-paths", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-all-nodes-in-a-namespace.md", + "redirect_url": "/dotnet/standard/linq/find-all-nodes-namespace", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-an-attribute-of-the-parent-xpath-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/find-attribute-parent", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-an-element-with-a-specific-attribute.md", + "redirect_url": "/dotnet/standard/linq/find-element-specific-attribute", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-an-element-with-a-specific-child-element.md", + "redirect_url": "/dotnet/standard/linq/find-element-specific-child-element", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-attributes-of-siblings-with-a-specific-name-xpath-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/find-attributes-siblings-specific-name", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-child-elements-based-on-position-xpath-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/find-child-elements-based-position", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-descendant-elements-xpath-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/find-descendant-elements", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-descendants-of-a-child-element-xpath-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/find-descendants-child-element", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-descendants-with-a-specific-element-name.md", + "redirect_url": "/dotnet/standard/linq/find-descendants-specific-element-name", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-elements-in-a-namespace-xpath-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/find-elements-namespace", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-elements-with-a-specific-attribute-xpath-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/find-elements-specific-attribute", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-preceding-siblings-xpath-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/find-preceding-siblings", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-related-elements-xpath-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/find-related-elements", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-sibling-nodes-xpath-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/find-sibling-nodes", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-the-immediate-preceding-sibling-xpath-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/find-immediate-preceding-sibling", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-the-root-element-xpath-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/find-root-element", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-the-set-difference-between-two-lists-linq.md", + "redirect_url": "/dotnet/csharp/linq/how-to-query-collections" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-generate-text-files-from-xml.md", + "redirect_url": "/dotnet/standard/linq/generate-text-files-xml", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-generate-xml-from-csv-files.md", + "redirect_url": "/dotnet/standard/linq/generate-xml-csv-files", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-group-files-by-extension-linq.md", + "redirect_url": "/dotnet/csharp/linq//how-to-query-files-and-directories" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-join-content-from-dissimilar-files-linq.md", + "redirect_url": "/dotnet/csharp/linq/how-to-query-files-and-directories" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-join-two-collections-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/join-two-collections", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-list-all-nodes-in-a-tree.md", + "redirect_url": "/dotnet/standard/linq/list-all-nodes-tree", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-load-xml-from-a-file.md", + "redirect_url": "/dotnet/standard/linq/load-xml-file", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-modify-an-office-open-xml-document.md", + "redirect_url": "/dotnet/standard/linq/modify-office-open-xml-document", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-parse-a-string.md", + "redirect_url": "/dotnet/standard/linq/parse-string", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-perform-streaming-transform-of-large-xml-documents.md", + "redirect_url": "/dotnet/standard/linq/perform-streaming-transform-large-xml-documents", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-perform-streaming-transformations-of-text-to-xml.md", + "redirect_url": "/dotnet/standard/linq/perform-streaming-transformations-text-xml", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-populate-an-xml-tree-from-the-file-system.md", + "redirect_url": "/dotnet/standard/linq/populate-xml-tree-file-system", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-populate-an-xml-tree-with-an-xmlwriter-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/populate-xml-tree-xmlwriter", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-populate-object-collections-from-multiple-sources-linq.md", + "redirect_url": "/dotnet/csharp/linq/how-to-query-collections" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-project-a-new-type-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/project-new-type", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-project-an-anonymous-type.md", + "redirect_url": "/dotnet/standard/linq/project-anonymous-type", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-project-an-object-graph.md", + "redirect_url": "/dotnet/standard/linq/project-object-graph", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-query-an-arraylist-with-linq.md", + "redirect_url": "/dotnet/csharp/linq/how-to-query-collections" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-query-an-assembly-s-metadata-with-reflection-linq.md", + "redirect_url": "/dotnet/csharp/advanced-topics/reflection-and-attributes/how-to-query-assembly-metadata-with-reflection-linq", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-query-for-characters-in-a-string-linq.md", + "redirect_url": "/dotnet/csharp/linq/how-to-query-strings" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-query-for-duplicate-files-in-a-directory-tree-linq.md", + "redirect_url": "/dotnet/csharp/linq//how-to-query-files-and-directories" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-query-for-files-with-a-specified-attribute-or-name.md", + "redirect_url": "/dotnet/csharp/linq//how-to-query-files-and-directories" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-query-for-sentences-that-contain-a-specified-set-of-words-linq.md", + "redirect_url": "/dotnet/csharp/linq/how-to-query-strings" }, { - "source_path_from_root": "/docs/csharp/misc/cs0438.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs0438" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-query-for-the-largest-file-or-files-in-a-directory-tree-linq.md", + "redirect_url": "/dotnet/csharp/linq//how-to-query-files-and-directories" }, { - "source_path_from_root": "/docs/csharp/misc/cs1022.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs1022" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-query-for-the-total-number-of-bytes-in-a-set-of-folders-linq.md", + "redirect_url": "/dotnet/csharp/linq//how-to-query-files-and-directories" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-query-linq-to-xml-using-xpath.md", + "redirect_url": "/dotnet/standard/linq/query-linq-xml-xpath", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-query-the-contents-of-files-in-a-folder-lin.md", + "redirect_url": "/dotnet/csharp/linq//how-to-query-files-and-directories" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-read-and-write-an-encoded-document.md", + "redirect_url": "/dotnet/standard/linq/read-write-encoded-document", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-reorder-the-fields-of-a-delimited-file-linq.md", + "redirect_url": "/dotnet/csharp/linq/how-to-query-files-and-directories" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-retrieve-a-collection-of-attributes-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/retrieve-collection-attributes", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-retrieve-a-collection-of-elements-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/retrieve-collection-elements", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-retrieve-a-single-attribute-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/retrieve-single-attribute", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-retrieve-a-single-child-element-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/retrieve-single-child-element", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-retrieve-paragraphs-from-an-office-open-xml-document.md", + "redirect_url": "/dotnet/standard/linq/retrieve-paragraphs-office-open-xml-document", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-retrieve-the-shallow-value-of-an-element.md", + "redirect_url": "/dotnet/standard/linq/retrieve-shallow-value-element", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-retrieve-the-value-of-an-attribute-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/retrieve-value-attribute", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-retrieve-the-value-of-an-element-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/retrieve-value-element", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-serialize-using-datacontractserializer.md", + "redirect_url": "/dotnet/standard/linq/serialize-datacontractserializer", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-serialize-using-xmlserializer.md", + "redirect_url": "/dotnet/standard/linq/serialize-xmlserializer", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-sort-elements-on-multiple-keys.md", + "redirect_url": "/dotnet/standard/linq/sort-elements-multiple-keys", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-sort-elements.md", + "redirect_url": "/dotnet/standard/linq/sort-elements", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-sort-or-filter-text-data-by-any-word-or-field-linq.md", + "redirect_url": "/dotnet/csharp/linq/how-to-query-strings" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-split-a-file-into-many-files-by-using-groups-linq.md", + "redirect_url": "/dotnet/csharp/linq/how-to-query-files-and-directories" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-stream-xml-fragments-from-an-xmlreader.md", + "redirect_url": "/dotnet/standard/linq/stream-xml-fragments-xmlreader", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-stream-xml-fragments-with-access-to-header-information.md", + "redirect_url": "/dotnet/standard/linq/stream-xml-fragments-access-header-information", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-transform-the-shape-of-an-xml-tree.md", + "redirect_url": "/dotnet/standard/linq/transform-shape-xml-tree", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-use-annotations-to-transform-linq-to-xml-trees-in-an-xslt-style.md", + "redirect_url": "/dotnet/standard/linq/use-annotations-transform-linq-xml-trees-xslt-style", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-use-expression-trees-to-build-dynamic-queries.md", + "redirect_url": "/dotnet/csharp/linq/how-to-build-dynamic-queries" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-validate-using-xsd-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/validate-xsd", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-work-with-dictionaries-using-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/work-dictionaries-linq-xml", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-write-a-linq-to-xml-axis-method.md", + "redirect_url": "/dotnet/standard/linq/write-linq-xml-axis-method", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-write-a-query-that-finds-elements-based-on-context.md", + "redirect_url": "/dotnet/standard/linq/write-query-finds-elements-based-context", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-write-queries-on-xml-in-namespaces.md", + "redirect_url": "/dotnet/standard/linq/write-queries-xml-namespaces", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-write-queries-with-complex-filtering.md", + "redirect_url": "/dotnet/standard/linq/write-queries-complex-filtering", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/in-memory-xml-tree-modification-vs-functional-construction-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/in-memory-xml-tree-modification-vs-functional-construction", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/index.md", + "redirect_url": "/dotnet/csharp/linq/" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/intermediate-materialization.md", + "redirect_url": "/dotnet/standard/linq/intermediate-materialization", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/introduction-to-linq-queries.md", + "redirect_url": "/dotnet/csharp/linq/get-started/introduction-to-linq-queries" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/introduction-to-linq.md", + "redirect_url": "/dotnet/csharp/programming-guide/concepts/linq" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/introduction-to-pure-functional-transformations.md", + "redirect_url": "/dotnet/standard/linq/introduction-pure-functional-transformations", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/join-operations.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/join-operations" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-and-file-directories.md", + "redirect_url": "/dotnet/csharp/linq//how-to-query-files-and-directories" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-and-generic-types.md", + "redirect_url": "/dotnet/csharp/linq/get-started/type-relationships-in-linq-query-operations" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-and-reflection.md", + "redirect_url": "/dotnet/csharp/advanced-topics/reflection-and-attributes/how-to-query-assembly-metadata-with-reflection-linq" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-and-strings.md", + "redirect_url": "/dotnet/csharp/linq" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-to-adonet-portal-page.md", + "redirect_url": "/dotnet/csharp/linq/" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-to-objects.md", + "redirect_url": "/dotnet/csharp/linq/get-started/introduction-to-linq-queries" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-to-xml-annotations.md", + "redirect_url": "/dotnet/standard/linq/linq-xml-annotations", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-to-xml-axes-overview.md", + "redirect_url": "/dotnet/standard/linq/linq-xml-axes-overview", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-to-xml-axes.md", + "redirect_url": "/dotnet/standard/linq/linq-xml-axes-overview" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-to-xml-classes-overview.md", + "redirect_url": "/dotnet/standard/linq/linq-xml-classes-overview", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-to-xml-events.md", + "redirect_url": "/dotnet/standard/linq/linq-xml-events", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-to-xml-for-xpath-users.md", + "redirect_url": "/dotnet/standard/linq/comparison-xpath-linq-xml" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-to-xml-overview.md", + "redirect_url": "/dotnet/standard/linq/linq-xml-overview", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-to-xml-programming-overview.md", + "redirect_url": "/dotnet/standard/linq/linq-xml-overview" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-to-xml-security.md", + "redirect_url": "/dotnet/standard/linq/linq-xml-security", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-to-xml-vs-dom.md", + "redirect_url": "/dotnet/standard/linq/linq-xml-vs-dom", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-to-xml-vs-other-xml-technologies.md", + "redirect_url": "/dotnet/standard/linq/linq-xml-vs-xml-technologies", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/linq-xml-overview" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/maintaining-name-value-pairs.md", + "redirect_url": "/dotnet/standard/linq/maintain-name-value-pairs", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/mixed-declarative-code-imperative-code-bugs-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/mixed-declarative-imperative-code-bugs", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/modifying-elements-attributes-and-nodes-in-an-xml-tree.md", + "redirect_url": "/dotnet/standard/linq/modify-elements-attributes-nodes-xml-tree", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/modifying-xml-trees-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/in-memory-xml-tree-modification-vs-functional-construction" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/namespaces-overview-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/namespaces-overview", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/parsing-xml.md", + "redirect_url": "/dotnet/standard/linq/parse-string" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/partitioning-data.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/partitioning-data", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/performance-of-chained-queries-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/performance-chained-queries", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/pre-atomization-of-xname-objects-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/pre-atomization-xname-objects", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/preserving-white-space-while-loading-or-parsing-xml1.md", + "redirect_url": "/dotnet/standard/linq/preserve-white-space-loading-parsing-xml", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/preserving-white-space-while-serializing.md", + "redirect_url": "/dotnet/standard/linq/preserve-white-space-serializing", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/programming-guide-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/linq-xml-overview" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/programming-with-nodes.md", + "redirect_url": "/dotnet/standard/linq/program-nodes", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/projecting-xml-in-a-different-shape.md", + "redirect_url": "/dotnet/standard/linq/project-xml-different-shape", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/projection-operations.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/projection-operations", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/projections-and-transformations-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/work-dictionaries-linq-xml" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/pure-functional-transformations-of-xml.md", + "redirect_url": "/dotnet/standard/linq/introduction-pure-functional-transformations" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/quantifier-operations.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/quantifier-operations", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/query-expression-syntax-for-standard-query-operators.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/query-syntax-and-method-syntax-in-linq.md", + "redirect_url": "/dotnet/csharp/linq/get-started/write-linq-queries", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/querying-an-xdocument-vs-querying-an-xelement.md", + "redirect_url": "/dotnet/standard/linq/query-xdocument-vs-query-xelement", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/querying-xml-trees.md", + "redirect_url": "/dotnet/standard/linq/query-xml-trees-overview", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/refactoring-into-pure-functions.md", + "redirect_url": "/dotnet/standard/linq/refactor-pure-functions", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/refactoring-using-a-pure-function.md", + "redirect_url": "/dotnet/standard/linq/refactor-pure-function", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/refactoring-using-an-extension-method.md", + "redirect_url": "/dotnet/standard/linq/refactor-extension-method", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/reference-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/reference", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/removing-elements-attributes-and-nodes-from-an-xml-tree.md", + "redirect_url": "/dotnet/standard/linq/remove-elements-attributes-nodes-xml-tree", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/retrieving-the-paragraphs-and-their-styles.md", + "redirect_url": "/dotnet/standard/linq/retrieve-paragraphs-styles", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/retrieving-the-text-of-the-paragraphs.md", + "redirect_url": "/dotnet/standard/linq/retrieve-text-paragraphs", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/sample-xml-documents-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/sample-xml-file-typical-purchase-order" + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/sample-xml-file-books-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/sample-xml-file-books", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/sample-xml-file-consolidated-purchase-orders.md", + "redirect_url": "/dotnet/standard/linq/sample-xml-file-consolidated-purchase-orders", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/sample-xml-file-customers-and-orders-in-a-namespace.md", + "redirect_url": "/dotnet/standard/linq/sample-xml-file-customers-orders-namespace", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/sample-xml-file-customers-and-orders-linq-to-xml-2.md", + "redirect_url": "/dotnet/standard/linq/sample-xml-file-customers-orders", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/sample-xml-file-multiple-purchase-orders-in-a-namespace.md", + "redirect_url": "/dotnet/standard/linq/sample-xml-file-multiple-purchase-orders-namespace", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/sample-xml-file-multiple-purchase-orders-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/sample-xml-file-multiple-purchase-orders", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/sample-xml-file-numerical-data-in-a-namespace.md", + "redirect_url": "/dotnet/standard/linq/sample-xml-file-numerical-data-namespace", + "redirect_document_id": true + }, + { + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/sample-xml-file-numerical-data-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/sample-xml-file-numerical-data", + "redirect_document_id": true }, { - "source_path_from_root": "/docs/csharp/misc/cs1555.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/entry-point-errors" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/sample-xml-file-test-configuration-in-a-namespace1.md", + "redirect_url": "/dotnet/standard/linq/sample-xml-file-test-configuration-namespace", + "redirect_document_id": true }, { - "source_path_from_root": "/docs/csharp/misc/cs1556.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/entry-point-errors" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/sample-xml-file-test-configuration-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/sample-xml-file-test-configuration", + "redirect_document_id": true }, { - "source_path_from_root": "/docs/csharp/misc/cs1557.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/entry-point-errors" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/sample-xml-file-typical-purchase-order-in-a-namespace.md", + "redirect_url": "/dotnet/standard/linq/sample-xml-file-typical-purchase-order-namespace", + "redirect_document_id": true }, { - "source_path_from_root": "/docs/csharp/misc/cs1558.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/entry-point-errors" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/sample-xml-file-typical-purchase-order-linq-to-xml-1.md", + "redirect_url": "/dotnet/standard/linq/sample-xml-file-typical-purchase-order", + "redirect_document_id": true }, { - "source_path_from_root": "/docs/csharp/misc/cs1559.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/entry-point-errors" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/sample-xsd-file-customers-and-orders1.md", + "redirect_url": "/dotnet/standard/linq/sample-xsd-file-customers-orders", + "redirect_document_id": true }, { - "source_path_from_root": "/docs/csharp/misc/cs1599.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/delegate-function-pointer-diagnostics" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/scope-of-default-namespaces.md", + "redirect_url": "/dotnet/standard/linq/scope-default-namespaces", + "redirect_document_id": true }, { - "source_path_from_root": "/docs/csharp/misc/cs1958.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/delegate-function-pointer-diagnostics" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/serializing-to-an-xmlreader-invoking-xslt.md", + "redirect_url": "/dotnet/standard/linq/serialize-xmlreader-invoke-xslt", + "redirect_document_id": true }, { - "source_path_from_root": "/docs/csharp/misc/cs2017.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/entry-point-errors" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/serializing-to-files-textwriters-and-xmlwriters.md", + "redirect_url": "/dotnet/standard/linq/serialize-files-textwriters-xmlwriters", + "redirect_document_id": true }, { - "source_path_from_root": "/docs/csharp/misc/cs5001.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/entry-point-errors" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/serializing-with-an-xml-declaration.md", + "redirect_url": "/dotnet/standard/linq/serialize-xml-declaration", + "redirect_document_id": true }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0304.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/serializing-xml-trees.md", + "redirect_url": "/dotnet/standard/linq/serialize-files-textwriters-xmlwriters" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0310.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/set-operations.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/set-operations", + "redirect_document_id": true }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0311.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/shape-of-wordprocessingml-documents.md", + "redirect_url": "/dotnet/standard/linq/xml-shape-wordprocessingml-documents", + "redirect_document_id": true }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0413.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/sorting-data.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/sorting-data", + "redirect_document_id": true }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0417.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/standard-query-operators-overview.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/" }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0467.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" - }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0702.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/statically-compiled-queries-linq-to-xml.md", + "redirect_url": "/dotnet/standard/linq/statically-compiled-queries", + "redirect_document_id": true }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0703.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/generic-type-parameters-errors" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/style-part-of-a-wordprocessingml-document.md", + "redirect_url": "/dotnet/standard/linq/style-part-wordprocessingml-document", + "redirect_document_id": true }, { - "source_path_from_root": "/redirections/proposals/csharp-7.0/binary-literals.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/lexical-structure#6453-integer-literals" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/tutorial-chaining-queries-together.md", + "redirect_url": "/dotnet/standard/linq/chain-queries-example" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.0/digit-separators.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/lexical-structure#6453-integer-literals" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/tutorial-manipulating-content-in-a-wordprocessingml-document.md", + "redirect_url": "/dotnet/standard/linq/xml-shape-wordprocessingml-documents" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.0/local-functions.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/statements#1364-local-function-declarations" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/type-relationships-in-linq-query-operations.md", + "redirect_url": "/dotnet/csharp/linq/get-started/type-relationships-in-linq-query-operations" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.0/throw-expression.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#1215-the-throw-expression-operator" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/using-xslt-to-transform-an-xml-tree.md", + "redirect_url": "/dotnet/standard/linq/use-xslt-transform-xml-tree", + "redirect_document_id": true }, { - "source_path_from_root": "/redirections/proposals/csharp-7.0/out-var.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#1217-declaration-expressions" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/valid-content-of-xelement-and-xdocument-objects3.md", + "redirect_url": "/dotnet/standard/linq/valid-content-xelement-xdocument-objects", + "redirect_document_id": true }, { - "source_path_from_root": "/redirections/proposals/csharp-7.0/pattern-matching.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/patterns" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/visual-studio-ide-and-tools-support-for-linq.md", + "redirect_url": "/dotnet/csharp/linq/" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.0/task-types.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/classes#15152-task-type-builder-pattern" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/walkthrough-writing-queries-linq.md", + "redirect_url": "/dotnet/csharp/linq/get-started/walkthrough-writing-queries-linq" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.1/async-main.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/basic-concepts#71-application-startup" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/wordprocessingml-document-with-styles.md", + "redirect_url": "/dotnet/standard/linq/wordprocessingml-document-styles", + "redirect_document_id": true }, { - "source_path_from_root": "/redirections/proposals/csharp-7.1/target-typed-default.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#12719-default-value-expressions" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/working-with-xml-namespaces.md", + "redirect_url": "/dotnet/standard/linq/namespaces-overview" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.1/infer-tuple-names.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/types#8311-tuple-types" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/xattribute-class-overview.md", + "redirect_url": "/dotnet/standard/linq/xattribute-class-overview", + "redirect_document_id": true }, { - "source_path_from_root": "/redirections/proposals/csharp-7.1/generics-pattern-match.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/patterns" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/xdocument-class-overview.md", + "redirect_url": "/dotnet/standard/linq/xdocument-class-overview", + "redirect_document_id": true }, { - "source_path_from_root": "/redirections/proposals/csharp-7.2/conditional-ref.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#1219-conditional-operator" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/xelement-class-overview.md", + "redirect_url": "/dotnet/standard/linq/xelement-class-overview", + "redirect_document_id": true }, { - "source_path_from_root": "/redirections/proposals/csharp-7.2/non-trailing-named-arguments.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#12621-general" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/object-oriented-programming.md", + "redirect_url": "/dotnet/csharp/fundamentals/tutorials/oop", + "redirect_document_id": true }, { - "source_path_from_root": "/redirections/proposals/csharp-7.2/private-protected.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/classes#1536-access-modifiers" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/reflection.md", + "redirect_url": "/dotnet/csharp/advanced-topics/reflection-and-attributes/", + "redirect_document_id": true }, { - "source_path_from_root": "/redirections/proposals/csharp-7.2/readonly-ref.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/variables#97-reference-variables-and-returns" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/serialization/how-to-read-object-data-from-an-xml-file.md", + "redirect_url": "dotnet/standard/serialization/how-to-deserialize-an-object" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.2/readonly-struct.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/structs#1624-struct-interfaces" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/serialization/how-to-write-object-data-to-an-xml-file.md", + "redirect_url": "/dotnet/standard/serialization/how-to-serialize-an-object" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.2/span-safety.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/variables#97-reference-variables-and-returns" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/serialization/index.md", + "redirect_url": "/dotnet/standard/serialization/" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.3/auto-prop-field-attrs.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/attributes#223-attribute-specification" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/serialization/walkthrough-persisting-an-object-in-visual-studio.md", + "redirect_url": "/dotnet/standard/serialization/system-text-json/how-to" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.3/blittable.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/classes#1525-type-parameter-constraints" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/threading/how-to-use-a-thread-pool.md", + "redirect_url": "/dotnet/api/system.threading.threadpool.queueuserworkitem" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.3/expression-variables-in-initializers.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#1217-declaration-expressions" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/threading/index.md", + "redirect_url": "/dotnet/standard/threading/" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.3/improved-overload-candidates.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#12642-applicable-function-member" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/threading/multithreaded-applications.md", + "redirect_url": "/dotnet/standard/threading/using-threads-and-threading" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.3/indexing-movable-fixed-fields.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/unsafe-code#2383-fixed-size-buffers-in-expressions" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/threading/parameters-and-return-values-for-multithreaded-procedures.md", + "redirect_url": "/dotnet/standard/threading/creating-threads-and-passing-data-at-start-time" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.3/leading-digit-separator.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/lexical-structure#6453-integer-literals" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/threading/thread-pooling.md", + "redirect_url": "/dotnet/standard/threading/the-managed-thread-pool" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.3/pattern-based-fixed.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/unsafe-code#247-the-fixed-statement" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/threading/thread-synchronization.md", + "redirect_url": "/dotnet/standard/threading/overview-of-synchronization-primitives" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.3/ref-local-reassignment.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/variables#97-reference-variables-and-returns" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/threading/thread-timers.md", + "redirect_url": "/dotnet/standard/threading/timers" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.3/stackalloc-array-initializers.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#12821-stack-allocation" + "source_path_from_root": "/docs/csharp/programming-guide/concepts/threading/walkthrough-multithreading-with-the-backgroundworker-component.md", + "redirect_url": "/dotnet/api/system.componentmodel.backgroundworker" }, { - "source_path_from_root": "/redirections/proposals/csharp-7.3/tuple-equality.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#121211-tuple-equality-operators" + "source_path_from_root": "/docs/csharp/programming-guide/enumeration-types.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/enum" }, { - "source_path_from_root": "/redirections/proposals/csharp-9.0/nullable-reference-types-specification.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/types#893-nullable-reference-types" + "source_path_from_root": "/docs/csharp/programming-guide/events/how-to-publish-events-that-conform-to-net-framework-guidelines.md", + "redirect_url": "/dotnet/standard/events" }, { - "source_path_from_root": "/redirections/proposals/csharp-10.0/generic-attributes.md", - "redirect_url": "/dotnet/csharp/language-reference/proposals/csharp-11.0/generic-attributes" + "source_path_from_root": "/docs/csharp/programming-guide/events/how-to-use-a-dictionary-to-store-event-instances.md", + "redirect_url": "/dotnet/standard/events/how-to-handle-multiple-events-using-event-properties" }, { - "source_path_from_root": "/docs/csharp/async.md", - "redirect_url": "/dotnet/csharp/asynchronous-programming" + "source_path_from_root": "/docs/csharp/programming-guide/exceptions/compiler-generated-exceptions.md", + "redirect_url": "/dotnet/csharp/fundamentals/exceptions/compiler-generated-exceptions" }, { - "source_path_from_root": "/docs/csharp/basic-types.md", - "redirect_url": "/dotnet/csharp/fundamentals/types" + "source_path_from_root": "/docs/csharp/programming-guide/exceptions/creating-and-throwing-exceptions.md", + "redirect_url": "/dotnet/csharp/fundamentals/exceptions/creating-and-throwing-exceptions" }, { - "source_path_from_root": "/docs/csharp/classes.md", - "redirect_url": "/dotnet/csharp/fundamentals/types/classes" + "source_path_from_root": "/docs/csharp/programming-guide/exceptions/exception-handling.md", + "redirect_url": "/dotnet/csharp/fundamentals/exceptions/exception-handling" }, { - "source_path_from_root": "/docs/csharp/codedoc.md", - "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" + "source_path_from_root": "/docs/csharp/programming-guide/exceptions/exceptions-and-exception-handling.md", + "redirect_url": "/dotnet/csharp/fundamentals/exceptions" }, { - "source_path_from_root": "/docs/csharp/csharp-6.md", - "redirect_url": "/dotnet/csharp/whats-new/csharp-version-history#c-version-60" + "source_path_from_root": "/docs/csharp/programming-guide/exceptions/how-to-catch-a-non-cls-exception.md", + "redirect_url": "/dotnet/csharp/how-to/how-to-catch-a-non-cls-exception" }, { - "source_path_from_root": "/docs/csharp/csharp-7.md", - "redirect_url": "/dotnet/csharp/whats-new/csharp-version-history#c-version-70" + "source_path_from_root": "/docs/csharp/programming-guide/exceptions/how-to-execute-cleanup-code-using-finally.md", + "redirect_url": "/dotnet/csharp/fundamentals/exceptions/how-to-execute-cleanup-code-using-finally" }, { - "source_path_from_root": "/docs/csharp/csharp.md", - "redirect_url": "/dotnet/csharp" + "source_path_from_root": "/docs/csharp/programming-guide/exceptions/how-to-handle-an-exception-using-try-catch.md", + "redirect_url": "/dotnet/csharp/fundamentals/exceptions/how-to-handle-an-exception-using-try-catch" }, { - "source_path_from_root": "/docs/csharp/deconstruct.md", - "redirect_url": "/dotnet/csharp/fundamentals/functional/deconstruct" + "source_path_from_root": "/docs/csharp/programming-guide/exceptions/index.md", + "redirect_url": "/dotnet/csharp/fundamentals/exceptions" }, { - "source_path_from_root": "/docs/csharp/delegates-events.md", - "redirect_url": "/dotnet/csharp/delegates-overview" + "source_path_from_root": "/docs/csharp/programming-guide/exceptions/using-exceptions.md", + "redirect_url": "/dotnet/csharp/fundamentals/exceptions/using-exceptions" }, { - "source_path_from_root": "/docs/csharp/discards.md", - "redirect_url": "/dotnet/csharp/fundamentals/functional/discards" + "source_path_from_root": "/docs/csharp/programming-guide/file-system/how-to-copy-delete-and-move-files-and-folders.md", + "redirect_url": "/dotnet/standard/io/how-to-copy-directories" }, { - "source_path_from_root": "/docs/csharp/expression-trees.md", - "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees" + "source_path_from_root": "/docs/csharp/programming-guide/file-system/how-to-create-a-file-or-folder.md", + "redirect_url": "/dotnet/standard/io/how-to-read-and-write-to-a-newly-created-data-file" }, { - "source_path_from_root": "/docs/csharp/expression-classes.md", - "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/expression-classes" + "source_path_from_root": "/docs/csharp/programming-guide/file-system/how-to-create-a-key-in-the-registry.md", + "redirect_url": "/dotnet/api/microsoft.win32.registry" }, { - "source_path_from_root": "/docs/csharp/expression-trees-building.md", - "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/expression-trees-building" + "source_path_from_root": "/docs/csharp/programming-guide/file-system/how-to-get-information-about-files-folders-and-drives.md", + "redirect_url": "/dotnet/standard/io/common-i-o-tasks" }, { - "source_path_from_root": "/docs/csharp/expression-trees-explained.md", - "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/expression-trees-explained" + "source_path_from_root": "/docs/csharp/programming-guide/file-system/how-to-iterate-through-a-directory-tree.md", + "redirect_url": "/dotnet/standard/io/how-to-enumerate-directories-and-files" }, { - "source_path_from_root": "/docs/csharp/expression-trees-execution.md", - "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/expression-trees-execution" + "source_path_from_root": "/docs/csharp/programming-guide/file-system/how-to-provide-a-progress-dialog-box-for-file-operations.md", + "redirect_url": "dotnet/visual-basic/developing-apps/programming/drives-directories-files/how-to-copy-a-directory-to-another-directory" }, { - "source_path_from_root": "/docs/csharp/expression-trees-interpreting.md", - "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/expression-trees-interpreting" + "source_path_from_root": "/docs/csharp/programming-guide/file-system/how-to-read-a-text-file-one-line-at-a-time.md", + "redirect_url": "dotnet/standard/io/how-to-read-text-from-a-file" }, { - "source_path_from_root": "/docs/csharp/expression-trees-summary.md", - "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees" + "source_path_from_root": "/docs/csharp/programming-guide/file-system/how-to-read-from-a-text-file.md", + "redirect_url": "dotnet/standard/io/how-to-read-text-from-a-file" }, { - "source_path_from_root": "/docs/csharp/expression-trees-translating.md", - "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/expression-trees-translating" + "source_path_from_root": "/docs/csharp/programming-guide/file-system/how-to-write-to-a-text-file.md", + "redirect_url": "dotnet/standard/io/how-to-write-text-to-a-file" }, { - "source_path_from_root": "/docs/csharp/features.md", - "redirect_url": "/dotnet/csharp/programming-guide/concepts" + "source_path_from_root": "/docs/csharp/programming-guide/file-system/index.md", + "redirect_url": "/dotnet/standard/io/" }, { - "source_path_from_root": "/docs/csharp/generics.md", - "redirect_url": "/dotnet/csharp/fundamentals/types/generics" + "source_path_from_root": "/docs/csharp/programming-guide/generics/benefits-of-generics.md", + "redirect_url": "/dotnet/csharp/programming-guide/generics" }, { - "source_path_from_root": "/docs/csharp/getting-started/additional-resources.md", - "redirect_url": "/dotnet/csharp/tour-of-csharp" + "source_path_from_root": "/docs/csharp/programming-guide/generics/default-keyword-in-generics.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/default", + "redirect_document_id": true }, { - "source_path_from_root": "/docs/csharp/getting-started/breaking-changes-in-visual-studio-2013.md", - "redirect_url": "/previous-versions/visualstudio/visual-studio-2013/hh678682(v=vs.120)" + "source_path_from_root": "/docs/csharp/programming-guide/generics/generics-and-attributes.md", + "redirect_url": "/dotnet/csharp/advanced-topics/reflection-and-attributes/generics-and-attributes", + "redirect_document_id": true }, { - "source_path_from_root": "/docs/csharp/getting-started/consuming-library-with-visual-studio-2017.md", - "redirect_url": "/nuget/quickstart/install-and-use-a-package-in-visual-studio" + "source_path_from_root": "/docs/csharp/programming-guide/generics/generics-and-reflection.md", + "redirect_url": "/dotnet/csharp/advanced-topics/reflection-and-attributes/generics-and-reflection", + "redirect_document_id": true }, { - "source_path_from_root": "/docs/csharp/getting-started/consuming-library-with-visual-studio.md", - "redirect_url": "/nuget/quickstart/install-and-use-a-package-in-visual-studio" + "source_path_from_root": "/docs/csharp/programming-guide/generics/generics-in-the-net-framework-class-library.md", + "redirect_url": "/dotnet/standard/generics/index" }, { - "source_path_from_root": "/docs/csharp/getting-started/debugging-with-visual-studio-2017.md", - "redirect_url": "/dotnet/core/tutorials/debugging-with-visual-studio" + "source_path_from_root": "/docs/csharp/programming-guide/generics/index.md", + "redirect_url": "/dotnet/csharp/fundamentals/types/generics" }, { - "source_path_from_root": "/docs/csharp/getting-started/debugging-with-visual-studio.md", - "redirect_url": "/dotnet/core/tutorials/debugging-with-visual-studio" + "source_path_from_root": "/docs/csharp/programming-guide/generics/introduction-to-generics.md", + "redirect_url": "/dotnet/standard/generics/index" }, { - "source_path_from_root": "/docs/csharp/getting-started/getting-started-with-csharp.md", - "redirect_url": "/dotnet/csharp/tour-of-csharp" + "source_path_from_root": "/docs/csharp/programming-guide/index.md", + "redirect_url": "/dotnet/csharp/programming-guide/concepts" }, { - "source_path_from_root": "/docs/csharp/getting-started/index.md", - "redirect_url": "/dotnet/csharp/tour-of-csharp" + "source_path_from_root": "/docs/csharp/programming-guide/inside-a-program/coding-conventions.md", + "redirect_url": "/dotnet/csharp/fundamentals/coding-style/coding-conventions" }, { - "source_path_from_root": "/docs/csharp/getting-started/library-with-visual-studio-2017.md", - "redirect_url": "/dotnet/core/tutorials/library-with-visual-studio", - "redirect_document_id": true + "source_path_from_root": "/docs/csharp/programming-guide/inside-a-program/general-structure-of-a-csharp-program.md", + "redirect_url": "/dotnet/csharp/fundamentals/program-structure" }, { - "source_path_from_root": "/docs/csharp/getting-started/library-with-visual-studio.md", - "redirect_url": "/dotnet/core/tutorials/library-with-visual-studio" + "source_path_from_root": "/docs/csharp/programming-guide/inside-a-program/hello-world-your-first-program.md", + "redirect_url": "/dotnet/csharp/tutorials/intro-to-csharp/hello-world" }, { - "source_path_from_root": "/docs/csharp/getting-started/publishing-with-visual-studio-2017.md", - "redirect_url": "/dotnet/core/tutorials/publishing-with-visual-studio" + "source_path_from_root": "/docs/csharp/programming-guide/inside-a-program/identifier-names.md", + "redirect_url": "/dotnet/csharp/fundamentals/coding-style/identifier-names" }, { - "source_path_from_root": "/docs/csharp/getting-started/publishing-with-visual-studio.md", - "redirect_url": "/dotnet/core/tutorials/publishing-with-visual-studio" + "source_path_from_root": "/docs/csharp/programming-guide/inside-a-program/index.md", + "redirect_url": "/dotnet/csharp/fundamentals/program-structure" }, { - "source_path_from_root": "/docs/csharp/getting-started/testing-library-with-visual-studio.md", - "redirect_url": "/dotnet/core/tutorials/testing-library-with-visual-studio" + "source_path_from_root": "/docs/csharp/programming-guide/interfaces/index.md", + "redirect_url": "/dotnet/csharp/fundamentals/types/interfaces" }, { - "source_path_from_root": "/docs/csharp/getting-started/with-visual-studio-2017.md", - "redirect_url": "/dotnet/core/tutorials/with-visual-studio", - "redirect_document_id": true + "source_path_from_root": "/docs/csharp/programming-guide/interop/example-com-class.md", + "redirect_url": "/dotnet/csharp/advanced-topics/interop/example-com-class" }, { - "source_path_from_root": "/docs/csharp/getting-started/with-visual-studio-code.md", - "redirect_url": "/dotnet/core/tutorials/with-visual-studio-code", - "redirect_document_id": true + "source_path_from_root": "/docs/csharp/programming-guide/interop/how-to-access-office-onterop-objects.md", + "redirect_url": "/dotnet/csharp/advanced-topics/interop/how-to-access-office-interop-objects" }, { - "source_path_from_root": "/docs/csharp/getting-started/with-visual-studio.md", - "redirect_url": "/dotnet/core/tutorials/with-visual-studio" + "source_path_from_root": "/docs/csharp/programming-guide/interop/how-to-use-indexed-properties-in-com-interop-rogramming.md", + "redirect_url": "/dotnet/csharp/advanced-topics/interop/how-to-use-indexed-properties-in-com-interop-programming" }, { - "source_path_from_root": "/docs/csharp/how-to/safely-cast-using-pattern-matching-is-and-as-operators.md", - "redirect_url": "/dotnet/csharp/fundamentals/tutorials/safely-cast-using-pattern-matching-is-and-as-operators" + "source_path_from_root": "/docs/csharp/programming-guide/interop/how-to-use-platform-invoke-to-play-a-wave-file.md", + "redirect_url": "/dotnet/csharp/advanced-topics/interop/how-to-use-platform-invoke-to-play-a-wave-file" }, { - "source_path_from_root": "/docs/csharp/implicitly-typed-lambda-expressions.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/lambda-expressions" + "source_path_from_root": "/docs/csharp/programming-guide/interop/index.md", + "redirect_url": "/dotnet/csharp/advanced-topics/interop/index" }, { - "source_path_from_root": "/docs/csharp/indexers.md", - "redirect_url": "/dotnet/csharp/programming-guide/indexers" + "source_path_from_root": "/docs/csharp/programming-guide/interop/interoperability-overview.md", + "redirect_url": "/dotnet/csharp/advanced-topics/interop/index" }, { - "source_path_from_root": "/docs/csharp/interactive-with-bash.md", - "redirect_url": "/dotnet/csharp/index" + "source_path_from_root": "/docs/csharp/programming-guide/interop/walkthrough-office-programming.md", + "redirect_url": "/dotnet/csharp/advanced-topics/interop/walkthrough-office-programming" }, { - "source_path_from_root": "/docs/csharp/interactive-with-powershell.md", - "redirect_url": "/dotnet/csharp/index" + "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-create-a-nested-group.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/grouping-data" }, { - "source_path_from_root": "/docs/csharp/interactive-with-visualstudio.md", - "redirect_url": "/dotnet/csharp/index" + "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-dynamically-specify-predicate-filters-at-runtime.md", + "redirect_url": "/dotnet/csharp/linq/get-started/write-linq-queries" }, { - "source_path_from_root": "/docs/csharp/interactive.md", - "redirect_url": "/dotnet/csharp/index" + "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-group-query-results.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/grouping-data" }, { - "source_path_from_root": "/docs/csharp/interfaces.md", - "redirect_url": "/dotnet/csharp/fundamentals/types/interfaces" + "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-group-results-by-contiguous-keys.md", + "redirect_url": "/dotnet/csharp/linq/how-to-extend-linq" }, { - "source_path_from_root": "/docs/csharp/interop.md", - "redirect_url": "/dotnet/csharp/advanced-topics/interop/index" + "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-handle-exceptions-in-query-expressions.md", + "redirect_url": "/dotnet/csharp/linq/get-started/write-linq-queries" }, { - "source_path_from_root": "/docs/csharp/lambda-expressions.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/lambda-expressions" + "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-handle-null-values-in-query-expressions.md", + "redirect_url": "/dotnet/csharp/linq/get-started/write-linq-queries" }, { - "source_path_from_root": "/docs/csharp/language-reference/builtin-types/nint-nuint.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types#native-sized-integers" + "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-join-by-using-composite-keys.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/join-operations" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0034.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-order-the-results-of-a-join-clause.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0071.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-perform-a-subquery-on-a-grouping-operation.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/grouping-data" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0106.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-perform-custom-join-operations.md", + "redirect_url": "/dotnet/csharp/linq/" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0116.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs0116" + "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-perform-grouped-joins.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/join-operations" }, { - "source_path_from_root": "/docs/csharp/misc/cs0277.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-perform-inner-joins.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/join-operations" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0178.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-perform-left-outer-joins.md", + "redirect_url": "/dotnet/csharp/linq/standard-query-operators/join-operations" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0181.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-query-a-collection-of-objects.md", + "redirect_url": "/dotnet/csharp/linq/get-started/introduction-to-linq-queries" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0188.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/feature-version-errors" + "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-return-a-query-from-a-method.md", + "redirect_url": "/dotnet/csharp/linq/get-started/features-that-support-linq#expressions-as-data" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0233.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-store-the-results-of-a-query-in-memory.md", + "redirect_url": "/dotnet/csharp/linq/get-started/introduction-to-linq-queries" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0234.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/assembly-references" + "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-write-linq-queries.md", + "redirect_url": "/dotnet/csharp/linq/get-started/write-linq-queries" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0246.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/assembly-references" + "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/index.md", + "redirect_url": "/dotnet/csharp/linq/index" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0260.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/query-expression-basics.md", + "redirect_url": "/dotnet/csharp/linq/get-started/query-expression-basics" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0270.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + "source_path_from_root": "/docs/csharp/programming-guide/main-and-command-args/command-line-arguments.md", + "redirect_url": "/dotnet/csharp/fundamentals/program-structure/main-command-line" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0518.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors#cs0518" + "source_path_from_root": "/docs/csharp/programming-guide/main-and-command-args/how-to-access-command-line-arguments-using-foreach.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/arrays" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0545.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" + "source_path_from_root": "/docs/csharp/programming-guide/main-and-command-args/how-to-display-command-line-arguments.md", + "redirect_url": "/dotnet/csharp/fundamentals/tutorials/how-to-display-command-line-arguments" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0552.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/programming-guide/main-and-command-args/index.md", + "redirect_url": "/dotnet/csharp/fundamentals/program-structure/main-command-line" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0563.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/programming-guide/main-and-command-args/main-and-command-line-arguments.md", + "redirect_url": "/dotnet/csharp/fundamentals/program-structure/main-command-line" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0571.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" + "source_path_from_root": "/docs/csharp/programming-guide/main-and-command-args/main-return-values.md", + "redirect_url": "/dotnet/csharp/fundamentals/program-structure/main-command-line" }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0579.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + { + "source_path_from_root": "/docs/csharp/programming-guide/main-and-command-args/top-level-statements.md", + "redirect_url": "/dotnet/csharp/fundamentals/program-structure/top-level-statements" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0592.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/programming-guide/namespaces/how-to-use-the-global-namespace-alias.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/namespace-alias-qualifier" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0616.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/programming-guide/namespaces/how-to-use-the-my-namespace.md", + "redirect_url": "/dotnet/csharp/fundamentals/program-structure/namespaces" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0650.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + "source_path_from_root": "/docs/csharp/programming-guide/namespaces/index.md", + "redirect_url": "/dotnet/csharp/fundamentals/program-structure/namespaces" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0686.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/programming-guide/namespaces/using-namespaces.md", + "redirect_url": "/dotnet/csharp/fundamentals/program-structure/namespaces" }, { - "source_path_from_root": "/docs/csharp/misc/cs0736.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/programming-guide/nullable-types/boxing-nullable-types.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/nullable-value-types" }, { - "source_path_from_root": "/docs/csharp/misc/cs0737.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/programming-guide/nullable-types/how-to-identify-a-nullable-type.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/nullable-value-types#how-to-identify-a-nullable-value-type" }, { - "source_path_from_root": "/docs/csharp/misc/cs0738.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/programming-guide/nullable-types/how-to-safely-cast-from-bool-to-bool.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/nullable-value-types" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0767.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + "source_path_from_root": "/docs/csharp/programming-guide/nullable-types/index.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/nullable-value-types" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0826.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + "source_path_from_root": "/docs/csharp/programming-guide/nullable-types/using-nullable-types.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/nullable-value-types" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0834.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + "source_path_from_root": "/docs/csharp/programming-guide/statements-expressions-operators/anonymous-functions.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/lambda-expressions" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0840.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" + "source_path_from_root": "/docs/csharp/programming-guide/statements-expressions-operators/anonymous-methods.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/delegate-operator" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0843.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/feature-version-errors" + "source_path_from_root": "/docs/csharp/programming-guide/statements-expressions-operators/conversion-operators.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/user-defined-conversion-operators" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0845.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + "source_path_from_root": "/docs/csharp/programming-guide/statements-expressions-operators/default-value-expressions.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/default" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0846.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + "source_path_from_root": "/docs/csharp/programming-guide/statements-expressions-operators/expressions.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/index" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs0854.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + "source_path_from_root": "/docs/csharp/programming-guide/statements-expressions-operators/how-to-implement-user-defined-conversions-between-structs.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/user-defined-conversion-operators" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1009.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/string-literal" + "source_path_from_root": "/docs/csharp/programming-guide/statements-expressions-operators/how-to-use-lambda-expressions-in-a-query.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/lambda-expressions" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1018.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructor-calls-with-base-and-this" + "source_path_from_root": "/docs/csharp/programming-guide/statements-expressions-operators/how-to-use-lambda-expressions-outside-linq.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/lambda-expressions" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1019.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + "source_path_from_root": "/docs/csharp/programming-guide/statements-expressions-operators/how-to-use-operator-overloading-to-create-a-complex-number-class.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/operator-overloading" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1029.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/programming-guide/statements-expressions-operators/index.md", + "redirect_url": "/dotnet/csharp/programming-guide/statements-expressions-operators/statements" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1063.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + "source_path_from_root": "/docs/csharp/programming-guide/statements-expressions-operators/lambda-expressions.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/lambda-expressions" }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1065.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1067.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1112.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1501.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1502.md", - "redirect_url": "/dotnet/csharp/misc/cs1503" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1614.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1656.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1683.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/assembly-references" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1708.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1716.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1919.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1691.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1704.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/assembly-references" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1739.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1740.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1741.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1742.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1751.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1921.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1946.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1983.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1986.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1994.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1996.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1997.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1988.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs4004.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs4008.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs4014.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs4032.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs4033.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/CS4009.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs3007.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs4013.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs7000.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8145.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8153.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#conversion-to-expression-trees" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8154.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8155.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#conversion-to-expression-trees" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8166.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8167.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8168.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8169.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8175.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#syntax-limitations-in-lambda-expressions" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8176.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8177.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8178.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8373.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8374.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8400.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/feature-version-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8401.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/feature-version-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8403.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8410.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#implementing-idisposable-and-iasyncdisposable" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8411.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/async-await-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8417.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#implementing-idisposable-and-iasyncdisposable" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8418.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#implementing-idisposable-and-iasyncdisposable" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8647.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#using-variable-scope-and-control-flow" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8648.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#using-variable-scope-and-control-flow" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8649.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#using-variable-scope-and-control-flow" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8795.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8802.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/entry-point-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8803.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/entry-point-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8812.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8817.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8892.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/warning-waves#cs8892" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8964.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs9036.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs9050.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-struct-errors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/addmodule-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/inputs" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/app-deployment.md", - "redirect_url": "/dotnet/framework/deployment/deployment-guide-for-developers" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/appconfig-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/baseaddress-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/bugreport-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/checked-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/language" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/codepage-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/command-line-building-with-csc-exe.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/debug-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/code-generation" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/define-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/language" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/delaysign-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/security" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/deterministic-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/code-generation" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/doc-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/errorreport-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/filealign-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/fullpaths-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/help-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/miscellaneous" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/highentropyva-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/security" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/how-to-set-environment-variables-for-the-visual-studio-command-line.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/keycontainer-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/security" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/keyfile-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/security" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/langversion-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/language" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/lib-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/link-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/inputs" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/linkresource-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/resources" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/listed-alphabetically.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/listed-by-category.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/main-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/moduleassemblyname-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/noconfig-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/miscellaneous" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/nologo-file-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/miscellaneous" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/nostdlib-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/nowarn-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/errors-warnings" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/nowin32manifest-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/resources" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/nullable-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/language" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/optimize-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/code-generation" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/out-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/pathmap-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/pdb-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/platform-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/preferreduilang-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/publicsign-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/security" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/recurse-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/reference-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/inputs" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/refonly-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/code-generation" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/refout-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/resource-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/resources" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/response-file-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/miscellaneous" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/subsystemversion-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/target-appcontainerexe-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/target-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/target-exe-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/target-library-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/target-module-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/target-winexe-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/target-winmdobj-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/output" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/unsafe-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/language" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/utf8output-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/advanced" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/warn-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/errors-warnings" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/warnaserror-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/errors-warnings" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/win32icon-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/resources" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/win32manifest-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/resources" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-options/win32res-compiler-option.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-options/resources" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/access-keywords.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords/base" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/as.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/type-testing-and-cast#the-as-operator" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/await.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/await" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/bool.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/bool" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/break.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/jump-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/built-in-types-table.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/built-in-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/byte.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/char.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/char" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/checked.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/checked-and-unchecked" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/checked-and-unchecked.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/checked-and-unchecked" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/continue.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/jump-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/contextual-keywords.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords/index#contextual-keywords" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/conversion-keywords.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/user-defined-conversion-operators" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/decimal.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/default-values-table.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/default-values" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/delegate.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/reference-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/do.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/iteration-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/double.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/dynamic.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/reference-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/enum.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/enum" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/exception-handling-statements.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords/statement-keywords" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/explicit-numeric-conversions-table.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/numeric-conversions" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/explicit.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/user-defined-conversion-operators" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/false-literal.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/bool" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/false-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/true-false-operators" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/false.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/bool" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/fixed-statement.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/fixed" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/float.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/floating-point-types-table.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/for.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/iteration-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/foreach-in.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/iteration-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/formatting-numeric-results-table.md", - "redirect_url": "/dotnet/standard/base-types/standard-numeric-format-strings" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/global.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/namespace-alias-qualifier" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/goto.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/jump-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/if-else.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/selection-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/implicit-numeric-conversions-table.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/numeric-conversions" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/implicit.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/user-defined-conversion-operators" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/in-parameter-modifier.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords/method-parameters#in-parameter-modifier" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/int.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/integral-types-table.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/interpolated-strings.md", - "redirect_url": "/dotnet/csharp/language-reference/tokens/interpolated" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/is.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/is" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/iteration-statements.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/iteration-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/jump-statements.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords/statement-keywords" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/literal-keywords.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords/null" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/lock-statement.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/lock" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/long.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/modifiers.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/nameof.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/nameof" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/namespace-keywords.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords/namespace" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/new-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/new-operator" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/object.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/reference-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/operator-keywords.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/index" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/operator-overloading" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/out-parameter-modifier.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords/method-parameters#out-parameter-modifier" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/params.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords/method-parameters#params-modifier" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/partial-method.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords/partial-member", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/reference-tables-for-types.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/return.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/jump-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/sbyte.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/selection-statements.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/selection-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/short.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/sizeof.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/sizeof" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/stackalloc.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/stackalloc" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/string.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/reference-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/struct.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/struct" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/switch.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/selection-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/throw.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/exception-handling-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/true-false-operators.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/true-false-operators" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/true-literal.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/bool" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/true-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/true-false-operators" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/true.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/bool" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/try-catch.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/exception-handling-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/try-catch-finally.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/exception-handling-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/try-finally.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/exception-handling-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/typeof.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/type-testing-and-cast#the-typeof-operator" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/types.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/uint.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/ulong.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/unchecked.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/checked-and-unchecked" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/ushort.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/integral-numeric-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/using-statement.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/using" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/using-static.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords/using-directive" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/value-types-table.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/value-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/value-types.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/value-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/var.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/declarations#implicitly-typed-local-variables" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/void.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/void" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/while.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/iteration-statements" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/keywords/yield.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/yield" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/language-specification/index.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/introduction" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/addition-assignment-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#compound-assignment" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/and-assignment-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#compound-assignment" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/and-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#logical-and-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/bitwise-complement-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/bitwise-and-shift-operators#bitwise-complement-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/conditional-and-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#conditional-logical-and-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/conditional-or-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#conditional-logical-or-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/decrement-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#decrement-operator---" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/dereference-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/pointer-related-operators#pointer-member-access-operator--" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/division-assignment-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#compound-assignment" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/division-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#division-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/equality-comparison-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/equality-operators#equality-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/greater-than-equal-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/comparison-operators#greater-than-or-equal-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/greater-than-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/comparison-operators#greater-than-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/increment-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#increment-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/index-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/member-access-operators#indexer-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/invocation-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/member-access-operators#invocation-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/left-shift-assignment-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/bitwise-and-shift-operators#compound-assignment" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/left-shift-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/bitwise-and-shift-operators#left-shift-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/less-than-equal-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/comparison-operators#less-than-or-equal-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/less-than-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/comparison-operators#less-than-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/logical-negation-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#logical-negation-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/member-access-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/member-access-operators#member-access-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/modulus-assignment-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#compound-assignment" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/modulus-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#remainder-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/multiplication-assignment-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#compound-assignment" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/multiplication-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#multiplication-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/namespace-alias-qualifer.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/namespace-alias-qualifier" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/not-equal-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/equality-operators#inequality-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/null-conditional-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/null-coalescing-operator" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/null-conditional-operators.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/member-access-operators#null-conditional-operators--and-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/or-assignment-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#compound-assignment" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/or-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#logical-or-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/remainder-assignment-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#compound-assignment" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/remainder-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#remainder-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/right-shift-assignment-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/bitwise-and-shift-operators#compound-assignment" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/right-shift-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/bitwise-and-shift-operators#right-shift-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/null-parameter-check.md", - "redirect_url": "/dotnet/csharp/language-reference/operators" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/subtraction-assignment-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/arithmetic-operators#compound-assignment" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/type-testing-and-conversion-operators.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/type-testing-and-cast" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/xor-assignment-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#compound-assignment" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/operators/xor-operator.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/boolean-logical-operators#logical-exclusive-or-operator-" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/index.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-define.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-elif.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-else.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-endif.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-endregion.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-error.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-if.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-line.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-nullable.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-pragma-checksum.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-pragma-warning.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-pragma.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-region.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-undef.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/preprocessor-directives/preprocessor-warning.md", - "redirect_url": "/dotnet/csharp/language-reference/preprocessor-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/lambda-attributes.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#1222-anonymous-function-expressions" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/record-structs.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/structs#164-synthesized-record-struct-members" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/parameterless-struct-constructors.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/structs#1659-constructors" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/GlobalUsingDirective.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/namespaces#1452-global-using-alias-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/file-scoped-namespaces.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/namespaces#143-namespace-declarations" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/extended-property-patterns.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/patterns#1126-property-pattern" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/improved-interpolated-strings.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/attributes#23591-custom-interpolated-string-expression-handlers" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/constant_interpolated_strings.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#1283-interpolated-string-expressions" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/lambda-improvements.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#1222-anonymous-function-expressions" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/caller-argument-expression.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/attributes#23565-the-callerargumentexpression-attribute" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/enhanced-line-directives.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/lexical-structure#658-line-directives" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/improved-definite-assignment.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/variables#944-precise-rules-for-determining-definite-assignment" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/async-method-builders.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/attributes#2355-the-asyncmethodbuilder-attribute" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-7.0/index.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/readme" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-7.1/index.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/readme" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-7.2/index.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/variables#928-input-parameters" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-7.3/index.md", - "redirect_url": "/dotnet/csharp/language-reference/proposals/csharp-7.3/ref-local-reassignment" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-9.0/nullable-reference-types-specification.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/types#893-nullable-reference-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-9.0/nullable-constructor-analysis.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/types#893-nullable-reference-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-9.0/nullable-parameter-default-value-analysis.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/types#893-nullable-reference-types" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-9.0/index.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/classes#1516-synthesized-record-class-members" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-10.0/index.md", - "redirect_url": "/dotnet/csharp/language-reference/language-specification/structs#164-synthesized-record-struct-members" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/proposals/csharp-11.0/index.md", - "redirect_url": "/dotnet/csharp/language-reference/proposals/csharp-11.0/static-abstracts-in-interfaces" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/specifications.md", - "redirect_url": "/dotnet/csharp/specifications" - }, - { - "source_path_from_root": "/docs/csharp/linq/create-a-nested-group.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/grouping-data" - }, - { - "source_path_from_root": "/docs/csharp/linq/group-query-results.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/grouping-data" - }, - { - "source_path_from_root": "/docs/csharp/linq/join-by-using-composite-keys.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/join-operations" - }, - { - "source_path_from_root": "/docs/csharp/linq/perform-a-subquery-on-a-grouping-operation.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/grouping-data" - }, - { - "source_path_from_root": "/docs/csharp/linq/linq-to-objects.md", - "redirect_url": "/dotnet/csharp/linq/introduction-to-linq-queries" - }, - { - "source_path_from_root": "/docs/csharp/linq/perform-grouped-joins.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/join-operations" - }, - { - "source_path_from_root": "/docs/csharp/linq/perform-inner-joins.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/join-operations" - }, - { - "source_path_from_root": "/docs/csharp/linq/perform-left-outer-joins.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/join-operations" - }, - { - "source_path_from_root": "/docs/csharp/linq/order-the-results-of-a-join-clause.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/" - }, - { - "source_path_from_root": "/docs/csharp/linq/perform-custom-join-operations.md", - "redirect_url": "/dotnet/csharp/linq/" - }, - { - "source_path_from_root": "/docs/csharp/linq/query-expression-basics.md", - "redirect_url": "/dotnet/csharp/linq/get-started/query-expression-basics" - }, - { - "source_path_from_root": "/docs/csharp/linq/query-a-collection-of-objects.md", - "redirect_url": "/dotnet/csharp/linq/get-started/introduction-to-linq-queries" - }, - { - "source_path_from_root": "/docs/csharp/linq/return-a-query-from-a-method.md", - "redirect_url": "/dotnet/csharp/linq/get-started/features-that-support-linq#expressions-as-data" - }, - { - "source_path_from_root": "/docs/csharp/linq/dynamically-specify-predicate-filters-at-runtime.md", - "redirect_url": "/dotnet/csharp/linq/get-started/write-linq-queries" - }, - { - "source_path_from_root": "/docs/csharp/linq/handle-null-values-in-query-expressions.md", - "redirect_url": "/dotnet/csharp/linq/get-started/write-linq-queries" - }, - { - "source_path_from_root": "/docs/csharp/linq/handle-exceptions-in-query-expressions.md", - "redirect_url": "/dotnet/csharp/linq/get-started/write-linq-queries" - }, - { - "source_path_from_root": "/docs/csharp/linq/store-the-results-of-a-query-in-memory.md", - "redirect_url": "/dotnet/csharp/linq/get-started/introduction-to-linq-queries" - }, - { - "source_path_from_root": "/docs/csharp/linq/write-linq-queries.md", - "redirect_url": "/dotnet/csharp/linq/get-started/write-linq-queries" - }, - { - "source_path_from_root": "/docs/csharp/linq/linq-in-csharp.md", - "redirect_url": "/dotnet/csharp/linq/" - }, - { - "source_path_from_root": "/docs/csharp/local-functions-vs-lambdas.md", - "redirect_url": "/dotnet/csharp/programming-guide/classes-and-structs/local-functions" - }, - { - "source_path_from_root": "/docs/csharp/methods-lambda-expressions.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/lambda-expressions" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0012.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/assembly-references" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0022.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0035.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0056.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0057.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0105.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0111.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0121.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0138.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0171.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/feature-version-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0182.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0185.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lock-semantics" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0192.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0193.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0196.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0199.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0200.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0206.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0208.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0209.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0210.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0211.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0212.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0213.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0214.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0215.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0216.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0227.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0242.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0243.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0244.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0245.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#implementing-idisposable-and-iasyncdisposable" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0254.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0459.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0821.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0217.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0218.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0225.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0231.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0248.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/feature-version-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0251.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/feature-version-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0261.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0262.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0263.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0264.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0265.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0267.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0282.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0400.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/assembly-references" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0404.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0415.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0416.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0447.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0431.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0430.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0432.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0439.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0440.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0448.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0457.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0425.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs0428.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" - }, { - "source_path_from_root": "/docs/csharp/misc/cs0460.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/programming-guide/statements-expressions-operators/operators.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/index" }, { - "source_path_from_root": "/docs/csharp/misc/cs0466.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" + "source_path_from_root": "/docs/csharp/programming-guide/statements-expressions-operators/overloadable-operators.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/operator-overloading#overloadable-operators" }, { - "source_path_from_root": "/docs/csharp/misc/cs0470.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/programming-guide/statements-expressions-operators/using-conversion-operators.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/user-defined-conversion-operators" }, { - "source_path_from_root": "/docs/csharp/misc/cs0473.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/programming-guide/strings/how-to-compare-strings.md", + "redirect_url": "/dotnet/csharp/how-to/compare-strings" }, { - "source_path_from_root": "/docs/csharp/misc/cs0531.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/programming-guide/strings/how-to-concatenate-multiple-strings.md", + "redirect_url": "/dotnet/csharp/how-to/concatenate-multiple-strings" }, { - "source_path_from_root": "/docs/csharp/misc/cs0535.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/programming-guide/strings/how-to-convert-a-string-to-a-datetime.md", + "redirect_url": "/dotnet/standard/base-types/parsing-datetime" }, { - "source_path_from_root": "/docs/csharp/misc/cs0501.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + "source_path_from_root": "/docs/csharp/programming-guide/strings/how-to-convert-between-legacy-encondings-and-unicode.md", + "redirect_url": "/previous-versions/visualstudio/visual-studio-2013/cc165448(v=vs.120)" }, { - "source_path_from_root": "/docs/csharp/misc/cs0514.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#static-constructors" + "source_path_from_root": "/docs/csharp/programming-guide/strings/how-to-convert-rtf-to-plain-text.md", + "redirect_url": "/previous-versions/visualstudio/visual-studio-2013/cc488002(v=vs.120)" }, { - "source_path_from_root": "/docs/csharp/misc/cs0515.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#static-constructors" + "source_path_from_root": "/docs/csharp/programming-guide/strings/how-to-modify-string-contents.md", + "redirect_url": "/dotnet/csharp/how-to/modify-string-contents" }, { - "source_path_from_root": "/docs/csharp/misc/cs0132.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#static-constructors" + "source_path_from_root": "/docs/csharp/programming-guide/strings/how-to-parse-strings-using-string-split.md", + "redirect_url": "/dotnet/csharp/how-to/parse-strings-using-split" }, { - "source_path_from_root": "/docs/csharp/misc/cs0516.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructor-calls-with-base-and-this" + "source_path_from_root": "/docs/csharp/programming-guide/strings/how-to-search-strings-using-regular-expressions.md", + "redirect_url": "/dotnet/csharp/how-to/search-strings" }, { - "source_path_from_root": "/docs/csharp/misc/cs0517.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructor-calls-with-base-and-this" + "source_path_from_root": "/docs/csharp/programming-guide/strings/how-to-search-strings-using-string-methods.md", + "redirect_url": "/dotnet/csharp/how-to/search-strings" }, { - "source_path_from_root": "/docs/csharp/misc/cs0522.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructor-calls-with-base-and-this" + "source_path_from_root": "/docs/csharp/programming-guide/types/how-to-safely-cast-using-as-and-is-operators.md", + "redirect_url": "/dotnet/csharp/fundamentals/tutorials/safely-cast-using-pattern-matching-is-and-as-operators" }, { - "source_path_from_root": "/docs/csharp/misc/cs0526.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructor-declarations" + "source_path_from_root": "/docs/csharp/programming-guide/types/index.md", + "redirect_url": "/dotnet/csharp/fundamentals/types" }, { - "source_path_from_root": "/docs/csharp/misc/cs0538.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/programming-guide/types/using-type-dynamic.md", + "redirect_url": "/dotnet/csharp/advanced-topics/interop/using-type-dynamic" }, { - "source_path_from_root": "/docs/csharp/misc/cs0539.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/programming-guide/types/walkthrough-creating-and-using-dynamic-objects.md", + "redirect_url": "/dotnet/csharp/advanced-topics/interop/walkthrough-creating-and-using-dynamic-objects" }, { - "source_path_from_root": "/docs/csharp/misc/cs0540.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/programming-guide/unsafe-code-pointers/arithmetic-operations-on-pointers.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/pointer-related-operators#pointer-arithmetic-operators" }, { - "source_path_from_root": "/docs/csharp/misc/cs0541.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/programming-guide/unsafe-code-pointers/fixed-size-buffers.md", + "redirect_url": "/dotnet/csharp/language-reference/unsafe-code#fixed-size-buffers" }, { - "source_path_from_root": "/docs/csharp/misc/cs0550.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/programming-guide/unsafe-code-pointers/how-to-access-a-member-with-a-pointer.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/pointer-related-operators#pointer-member-access-operator--" }, { - "source_path_from_root": "/docs/csharp/misc/cs0551.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/interface-implementation-errors" + "source_path_from_root": "/docs/csharp/programming-guide/unsafe-code-pointers/how-to-access-an-array-element-with-a-pointer.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/pointer-related-operators#pointer-element-access-operator-" }, { - "source_path_from_root": "/docs/csharp/misc/cs0553.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/programming-guide/unsafe-code-pointers/how-to-increment-and-decrement-pointers.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/pointer-related-operators#pointer-increment-and-decrement" }, { - "source_path_from_root": "/docs/csharp/misc/cs0554.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/programming-guide/unsafe-code-pointers/how-to-obtain-the-address-of-a-variable.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/pointer-related-operators#address-of-operator-" }, { - "source_path_from_root": "/docs/csharp/misc/cs0555.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/programming-guide/unsafe-code-pointers/how-to-obtain-the-value-of-a-pointer-variable.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/pointer-related-operators#pointer-indirection-operator-" }, { - "source_path_from_root": "/docs/csharp/misc/cs0556.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/programming-guide/unsafe-code-pointers/how-to-use-pointers-to-copy-an-array-of-bytes.md", + "redirect_url": "/dotnet/csharp/language-reference/unsafe-code#how-to-use-pointers-to-copy-an-array-of-bytes" }, { - "source_path_from_root": "/docs/csharp/misc/cs0557.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/programming-guide/unsafe-code-pointers/index.md", + "redirect_url": "/dotnet/csharp/language-reference/unsafe-code" }, { - "source_path_from_root": "/docs/csharp/misc/cs0558.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/programming-guide/unsafe-code-pointers/manipulating-pointers.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/pointer-related-operators" }, { - "source_path_from_root": "/docs/csharp/misc/cs0559.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/programming-guide/unsafe-code-pointers/pointer-comparison.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/pointer-related-operators#pointer-comparison-operators" }, { - "source_path_from_root": "/docs/csharp/misc/cs0562.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/programming-guide/unsafe-code-pointers/pointer-conversions.md", + "redirect_url": "/dotnet/csharp/language-reference/unsafe-code#pointer-types" }, { - "source_path_from_root": "/docs/csharp/misc/cs0564.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/programming-guide/unsafe-code-pointers/pointer-expressions.md", + "redirect_url": "/dotnet/csharp/language-reference/operators/pointer-related-operators" }, { - "source_path_from_root": "/docs/csharp/misc/cs0567.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/programming-guide/unsafe-code-pointers/pointer-types.md", + "redirect_url": "/dotnet/csharp/language-reference/unsafe-code#pointer-types" }, { - "source_path_from_root": "/docs/csharp/misc/cs0590.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/code-inline.md", + "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" }, { - "source_path_from_root": "/docs/csharp/misc/cs0660.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/code.md", + "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" }, { - "source_path_from_root": "/docs/csharp/misc/cs0661.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/cref-attribute.md", + "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" }, { - "source_path_from_root": "/docs/csharp/misc/cs0715.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/delimiters-for-documentation-tags.md", + "redirect_url": "/dotnet/csharp/programming-guide/xmldoc" }, { - "source_path_from_root": "/docs/csharp/misc/cs0728.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#using-variable-scope-and-control-flow" + "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/example.md", + "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" }, { - "source_path_from_root": "/docs/csharp/misc/cs0735.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/exception.md", + "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" }, { - "source_path_from_root": "/docs/csharp/misc/cs0739.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/how-to-use-the-xml-documentation-features.md", + "redirect_url": "/dotnet/csharp/language-reference/xmldoc" }, { - "source_path_from_root": "/docs/csharp/misc/cs1037.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/include.md", + "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" }, { - "source_path_from_root": "/docs/csharp/misc/cs1553.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/index.md", + "redirect_url": "/dotnet/csharp/language-reference/xmldoc" }, { - "source_path_from_root": "/docs/csharp/misc/cs1554.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overloaded-operator-errors" + "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/inheritdoc.md", + "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" }, { - "source_path_from_root": "/docs/csharp/misc/cs0568.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructors-in-struct-types" + "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/list.md", + "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" }, { - "source_path_from_root": "/docs/csharp/misc/cs0573.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructors-in-struct-types" + "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/para.md", + "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" }, { - "source_path_from_root": "/docs/csharp/misc/cs0570.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#CS0570" + "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/param.md", + "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" }, { - "source_path_from_root": "/docs/csharp/misc/cs0576.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/paramref.md", + "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" }, { - "source_path_from_root": "/docs/csharp/misc/cs0577.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/permission.md", + "redirect_url": "/dotnet/csharp/language-reference/xmldoc/index" }, { - "source_path_from_root": "/docs/csharp/misc/cs0578.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/processing-the-xml-file.md", + "redirect_url": "/dotnet/csharp/language-reference/xmldoc" }, { - "source_path_from_root": "/docs/csharp/misc/cs0582.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/processing-the-xml-file.md#id-strings", + "redirect_url": "/dotnet/csharp/language-reference/xmldoc#id-strings" }, { - "source_path_from_root": "/docs/csharp/misc/cs0609.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/recommended-tags-for-documentation-comments.md", + "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" }, { - "source_path_from_root": "/docs/csharp/misc/cs0629.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/remarks.md", + "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" }, { - "source_path_from_root": "/docs/csharp/misc/cs0591.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/returns.md", + "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" }, { - "source_path_from_root": "/docs/csharp/misc/cs0599.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/see.md", + "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" }, { - "source_path_from_root": "/docs/csharp/misc/cs0611.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/seealso.md", + "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" }, { - "source_path_from_root": "/docs/csharp/misc/cs0617.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/summary.md", + "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" }, { - "source_path_from_root": "/docs/csharp/misc/cs0623.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/typeparam.md", + "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" }, { - "source_path_from_root": "/docs/csharp/misc/cs0625.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/typeparamref.md", + "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" }, { - "source_path_from_root": "/docs/csharp/misc/cs0631.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/value.md", + "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" }, { - "source_path_from_root": "/docs/csharp/misc/cs0633.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/xml-documentation-comments.md", + "redirect_url": "/dotnet/csharp/programming-guide/xmldoc" }, { - "source_path_from_root": "/docs/csharp/misc/cs0636.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/properties.md", + "redirect_url": "/dotnet/csharp/programming-guide/classes-and-structs/properties" }, { - "source_path_from_root": "/docs/csharp/misc/cs0637.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/quick-starts/arrays-and-collections.md", + "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials/list-collection", + "redirect_document_id": true }, { - "source_path_from_root": "/docs/csharp/misc/cs0641.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/quick-starts/branches-and-loops-local.md", + "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials/branches-and-loops", + "redirect_document_id": true }, { - "source_path_from_root": "/docs/csharp/misc/cs0646.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/quick-starts/branches-and-loops.md", + "redirect_url": "/dotnet/csharp/tutorials/intro-to-csharp/branches-and-loops" }, { - "source_path_from_root": "/docs/csharp/misc/cs0647.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/quick-starts/hello-world.md", + "redirect_url": "/dotnet/csharp/tutorials/intro-to-csharp/hello-world" }, { - "source_path_from_root": "/docs/csharp/misc/cs0643.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + "source_path_from_root": "/docs/csharp/quick-starts/index.md", + "redirect_url": "/dotnet/csharp/tutorials/intro-to-csharp/", + "redirect_document_id": true }, { - "source_path_from_root": "/docs/csharp/misc/cs0653.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/quick-starts/interpolated-strings-local.md", + "redirect_url": "/dotnet/csharp/tutorials/string-interpolation" }, { - "source_path_from_root": "/docs/csharp/misc/cs0657.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/quick-starts/interpolated-strings.yml", + "redirect_url": "/dotnet/csharp/tutorials/string-interpolation", + "redirect_document_id": true }, { - "source_path_from_root": "/docs/csharp/misc/cs0658.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/quick-starts/introduction-to-classes.md", + "redirect_url": "/dotnet/csharp/fundamentals/tutorials/classes", + "redirect_document_id": true }, { - "source_path_from_root": "/docs/csharp/misc/cs0655.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + "source_path_from_root": "/docs/csharp/quick-starts/list-collection.md", + "redirect_url": "/dotnet/csharp/tutorials/intro-to-csharp/list-collection" }, { - "source_path_from_root": "/docs/csharp/misc/cs0663.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + "source_path_from_root": "/docs/csharp/quick-starts/local-environment.md", + "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials/", + "redirect_document_id": true }, { - "source_path_from_root": "/docs/csharp/misc/cs0668.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/quick-starts/numbers-in-csharp-local.md", + "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials/numbers-in-csharp", + "redirect_document_id": true }, { - "source_path_from_root": "/docs/csharp/misc/cs0674.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" + "source_path_from_root": "/docs/csharp/quick-starts/numbers-in-csharp.md", + "redirect_url": "/dotnet/csharp/tutorials/intro-to-csharp/numbers-in-csharp" }, { - "source_path_from_root": "/docs/csharp/misc/cs0685.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/reference-semantics-with-value-types.md", + "redirect_url": "/dotnet/csharp/advanced-topics/performance" }, { - "source_path_from_root": "/docs/csharp/misc/cs0687.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + "source_path_from_root": "/docs/csharp/reflection.md", + "redirect_url": "/dotnet/framework/reflection-and-codedom" }, { - "source_path_from_root": "/docs/csharp/misc/cs0710.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructor-declarations" + "source_path_from_root": "/docs/csharp/roslyn-sdk/source-generators-overview.md", + "redirect_url": "/dotnet/csharp/roslyn-sdk/#source-generators" }, { - "source_path_from_root": "/docs/csharp/misc/cs0719.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + "source_path_from_root": "/docs/csharp/roslyn/index.md", + "redirect_url": "/dotnet/csharp/roslyn-sdk/" }, { - "source_path_from_root": "/docs/csharp/misc/cs0747.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + "source_path_from_root": "/docs/csharp/structs.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/struct" }, { - "source_path_from_root": "/docs/csharp/misc/cs0748.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#lambda-expression-parameters-and-returns" + "source_path_from_root": "/docs/csharp/tour-of-csharp/arrays.md", + "redirect_url": "/dotnet/csharp/tour-of-csharp" }, { - "source_path_from_root": "/docs/csharp/misc/cs0750.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + "source_path_from_root": "/docs/csharp/tour-of-csharp/attributes.md", + "redirect_url": "/dotnet/csharp/tour-of-csharp" }, { - "source_path_from_root": "/docs/csharp/misc/cs0751.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + "source_path_from_root": "/docs/csharp/tour-of-csharp/delegates.md", + "redirect_url": "/dotnet/csharp/tour-of-csharp" }, { - "source_path_from_root": "/docs/csharp/misc/cs0754.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + "source_path_from_root": "/docs/csharp/tour-of-csharp/enums.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/enum" }, { - "source_path_from_root": "/docs/csharp/misc/cs0755.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + "source_path_from_root": "/docs/csharp/tour-of-csharp/expressions.md", + "redirect_url": "/dotnet/csharp/tour-of-csharp" }, { - "source_path_from_root": "/docs/csharp/misc/cs0756.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + "source_path_from_root": "/docs/csharp/tour-of-csharp/features.md", + "redirect_url": "/dotnet/csharp/tour-of-csharp" }, { - "source_path_from_root": "/docs/csharp/misc/cs0757.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + "source_path_from_root": "/docs/csharp/tour-of-csharp/interfaces.md", + "redirect_url": "/dotnet/csharp/tour-of-csharp" }, { - "source_path_from_root": "/docs/csharp/misc/cs0758.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" + "source_path_from_root": "/docs/csharp/tour-of-csharp/program-building-blocks.md", + "redirect_url": "/dotnet/csharp/tour-of-csharp" }, { - "source_path_from_root": "/docs/csharp/misc/cs0759.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + "source_path_from_root": "/docs/csharp/tour-of-csharp/program-structure.md", + "redirect_url": "/dotnet/csharp/tour-of-csharp" }, { - "source_path_from_root": "/docs/csharp/misc/cs0761.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + "source_path_from_root": "/docs/csharp/tour-of-csharp/statements.md", + "redirect_url": "/dotnet/csharp/tour-of-csharp" }, { - "source_path_from_root": "/docs/csharp/misc/cs0762.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + "source_path_from_root": "/docs/csharp/tour-of-csharp/structs.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/struct" }, { - "source_path_from_root": "/docs/csharp/misc/cs0763.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + "source_path_from_root": "/docs/csharp/tour-of-csharp/tutorials/arrays-and-collections.md", + "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials/list-collection" }, { - "source_path_from_root": "/docs/csharp/misc/cs0764.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/partial-declarations" + "source_path_from_root": "/docs/csharp/tour-of-csharp/tutorials/branches-and-loops-local.md", + "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials/branches-and-loops" }, { - "source_path_from_root": "/docs/csharp/misc/cs0765.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + "source_path_from_root": "/docs/csharp/tour-of-csharp/tutorials/local-environment.md", + "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials" }, - { - "source_path_from_root": "/docs/csharp/misc/cs0815.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" - }, { - "source_path_from_root": "/docs/csharp/misc/cs0820.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + "source_path_from_root": "/docs/csharp/tour-of-csharp/tutorials/numbers-in-csharp-local.md", + "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials/numbers-in-csharp" }, { - "source_path_from_root": "/docs/csharp/misc/cs0824.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/constructor-errors#constructor-declarations" + "source_path_from_root": "/docs/csharp/tour-of-csharp/types-and-variables.md", + "redirect_url": "/dotnet/csharp/tour-of-csharp" }, - { - "source_path_from_root": "/docs/csharp/misc/cs0828.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" - }, { - "source_path_from_root": "/docs/csharp/misc/cs0831.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + "source_path_from_root": "/docs/csharp/tour-of-csharp/types.md", + "redirect_url": "/dotnet/csharp/tour-of-csharp" }, { - "source_path_from_root": "/docs/csharp/misc/cs0832.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + "source_path_from_root": "/docs/csharp/tuples.md", + "redirect_url": "/dotnet/csharp/language-reference/builtin-types/value-tuples" }, { - "source_path_from_root": "/docs/csharp/misc/cs0835.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + "source_path_from_root": "/docs/csharp/tutorials/attributes.md", + "redirect_url": "/dotnet/csharp/advanced-topics/reflection-and-attributes/attribute-tutorial" }, - { - "source_path_from_root": "/docs/csharp/misc/cs0837.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" - }, { - "source_path_from_root": "/docs/csharp/misc/cs0838.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" + "source_path_from_root": "/docs/csharp/tutorials/default-interface-members-versions.md", + "redirect_url": "/dotnet/csharp/advanced-topics/interface-implementation/default-interface-methods-versions" }, { - "source_path_from_root": "/docs/csharp/misc/cs0839.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + "source_path_from_root": "/docs/csharp/tutorials/default-interface-methods-versions.md", + "redirect_url": "/dotnet/csharp/advanced-topics/interface-implementation/default-interface-methods-versions" }, { - "source_path_from_root": "/docs/csharp/misc/cs1007.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + "source_path_from_root": "/docs/csharp/tutorials/exploration/csharp-6.yml", + "redirect_url": "/dotnet/csharp/whats-new/csharp-version-history#c-version-70" }, { - "source_path_from_root": "/docs/csharp/misc/cs1011.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/string-literal" + "source_path_from_root": "/docs/csharp/tutorials/exploration/csharp-7.yml", + "redirect_url": "/dotnet/csharp/whats-new/csharp-version-history#c-version-70" }, { - "source_path_from_root": "/docs/csharp/misc/cs1012.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/string-literal" + "source_path_from_root": "/docs/csharp/tutorials/exploration/interpolated-strings-local.md", + "redirect_url": "/dotnet/csharp/tutorials/string-interpolation" }, { - "source_path_from_root": "/docs/csharp/misc/cs1014.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" + "source_path_from_root": "/docs/csharp/tutorials/exploration/interpolated-strings.yml", + "redirect_url": "/dotnet/csharp/tutorials/string-interpolation" }, { - "source_path_from_root": "/docs/csharp/misc/cs1016.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/parameter-argument-mismatch" + "source_path_from_root": "/docs/csharp/tutorials/exploration/patterns-objects.md", + "redirect_url": "/dotnet/csharp/tutorials/patterns-objects" }, { - "source_path_from_root": "/docs/csharp/misc/cs1020.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + "source_path_from_root": "/docs/csharp/tutorials/exploration/records.md", + "redirect_url": "/dotnet/csharp/tutorials/records" }, { - "source_path_from_root": "/docs/csharp/misc/cs1024.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/tutorials/exploration/top-level-statements.md", + "redirect_url": "/dotnet/csharp/tutorials/top-level-statements" }, { - "source_path_from_root": "/docs/csharp/misc/cs1025.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/tutorials/generate-consume-asynchronous-stream.md", + "redirect_url": "/dotnet/csharp/asynchronous-programming/generate-consume-asynchronous-stream" }, { - "source_path_from_root": "/docs/csharp/misc/cs1027.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/tutorials/index.md", + "redirect_url": "/dotnet/csharp/fundamentals/tutorials/how-to-display-command-line-arguments" }, { - "source_path_from_root": "/docs/csharp/misc/cs1028.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/tutorials/inheritance.md", + "redirect_url": "/dotnet/csharp/fundamentals/object-oriented/inheritance" }, { - "source_path_from_root": "/docs/csharp/misc/cs1030.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/tutorials/intro-to-csharp/arrays-and-collections.md", + "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials/list-collection" }, { - "source_path_from_root": "/docs/csharp/misc/cs1032.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/tutorials/intro-to-csharp/branches-and-loops-local.md", + "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials/branches-and-loops" }, { - "source_path_from_root": "/docs/csharp/misc/cs1038.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/tutorials/intro-to-csharp/branches-and-loops.yml", + "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials/branches-and-loops" }, { - "source_path_from_root": "/docs/csharp/misc/cs1039.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/string-literal" + "source_path_from_root": "/docs/csharp/tutorials/intro-to-csharp/hello-world.yml", + "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials/hello-world" }, { - "source_path_from_root": "/docs/csharp/misc/cs1040.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/tutorials/intro-to-csharp/index.md", + "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials/" }, { - "source_path_from_root": "/docs/csharp/misc/cs1043.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/property-declaration-errors" + "source_path_from_root": "/docs/csharp/tutorials/intro-to-csharp/interpolated-strings-local.md", + "redirect_url": "/dotnet/csharp/tutorials/interpolated-strings" }, { - "source_path_from_root": "/docs/csharp/misc/cs1100.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + "source_path_from_root": "/docs/csharp/tutorials/intro-to-csharp/interpolated-strings.yml", + "redirect_url": "/dotnet/csharp/tutorials/interpolated-strings" }, { - "source_path_from_root": "/docs/csharp/misc/cs1101.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + "source_path_from_root": "/docs/csharp/tutorials/intro-to-csharp/introduction-to-classes.md", + "redirect_url": "/dotnet/csharp/fundamentals/tutorials/classes" }, { - "source_path_from_root": "/docs/csharp/misc/cs1102.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + "source_path_from_root": "/docs/csharp/tutorials/intro-to-csharp/list-collection.yml", + "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials/list-collection" }, { - "source_path_from_root": "/docs/csharp/misc/cs1103.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + "source_path_from_root": "/docs/csharp/tutorials/intro-to-csharp/local-environment.md", + "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials" }, { - "source_path_from_root": "/docs/csharp/misc/cs1104.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" + "source_path_from_root": "/docs/csharp/tutorials/intro-to-csharp/numbers-in-csharp-local.md", + "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials/numbers-in-csharp" }, { - "source_path_from_root": "/docs/csharp/misc/cs1105.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + "source_path_from_root": "/docs/csharp/tutorials/intro-to-csharp/numbers-in-csharp.yml", + "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials/numbers-in-csharp" }, { - "source_path_from_root": "/docs/csharp/misc/cs1106.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + "source_path_from_root": "/docs/csharp/tutorials/intro-to-csharp/object-oriented-programming.md", + "redirect_url": "/dotnet/csharp/fundamentals/tutorials/oop" }, { - "source_path_from_root": "/docs/csharp/misc/cs1109.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + "source_path_from_root": "/docs/csharp/tutorials/microservices.md", + "redirect_url": "/dotnet/core/docker/" }, { - "source_path_from_root": "/docs/csharp/misc/cs1110.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + "source_path_from_root": "/docs/csharp/tutorials/mixins-with-default-interface-methods.md", + "redirect_url": "/dotnet/csharp/advanced-topics/interface-implementation/mixins-with-default-interface-methods" }, { - "source_path_from_root": "/docs/csharp/misc/cs1113.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/extension-declarations" + "source_path_from_root": "/docs/csharp/tutorials/nullable-reference-types.md", + "redirect_url": "/dotnet/csharp/fundamentals/tutorials/nullable-reference-types" }, { - "source_path_from_root": "/docs/csharp/misc/cs1510.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + "source_path_from_root": "/docs/csharp/tutorials/pattern-matching.md", + "redirect_url": "/dotnet/csharp/fundamentals/tutorials/pattern-matching" }, { - "source_path_from_root": "/docs/csharp/misc/cs1517.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/tutorials/records.md", + "redirect_url": "/dotnet/csharp/fundamentals/tutorials/records" }, { - "source_path_from_root": "/docs/csharp/misc/cs1529.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + "source_path_from_root": "/docs/csharp/tutorials/upgrade-to-nullable-references.md", + "redirect_url": "/dotnet/csharp/fundamentals/null-safety/migration-strategies" }, { - "source_path_from_root": "/docs/csharp/misc/cs1534.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + "source_path_from_root": "/docs/csharp/type-system.md", + "redirect_url": "/dotnet/csharp/fundamentals/types" }, { - "source_path_from_root": "/docs/csharp/misc/cs1535.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" + "source_path_from_root": "/docs/csharp/walkthroughs.md", + "redirect_url": "/dotnet/csharp" }, { - "source_path_from_root": "/docs/csharp/misc/cs1537.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + "source_path_from_root": "/docs/csharp/whats-new.md", + "redirect_url": "/dotnet/csharp/whats-new/csharp-15", + "redirect_document_id": true }, { - "source_path_from_root": "/docs/csharp/misc/cs1552.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + "source_path_from_root": "/docs/csharp/whats-new/csharp-10.md", + "redirect_url": "/dotnet/csharp/whats-new/csharp-version-history#c-version-10" }, { - "source_path_from_root": "/docs/csharp/misc/cs1560.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/whats-new/csharp-11.md", + "redirect_url": "/dotnet/csharp/whats-new/csharp-version-history#c-version-11" }, { - "source_path_from_root": "/docs/csharp/misc/cs1576.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/whats-new/csharp-6.md", + "redirect_url": "/dotnet/csharp/whats-new/csharp-version-history#c-version-60" }, { - "source_path_from_root": "/docs/csharp/misc/cs1578.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/whats-new/csharp-7-1.md", + "redirect_url": "/dotnet/csharp/whats-new/csharp-version-history#c-version-71" }, { - "source_path_from_root": "/docs/csharp/misc/cs1586.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" + "source_path_from_root": "/docs/csharp/whats-new/csharp-7-2.md", + "redirect_url": "/dotnet/csharp/whats-new/csharp-version-history#c-version-72" }, { - "source_path_from_root": "/docs/csharp/misc/cs1605.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + "source_path_from_root": "/docs/csharp/whats-new/csharp-7-3.md", + "redirect_url": "/dotnet/csharp/whats-new/csharp-version-history#c-version-73" }, { - "source_path_from_root": "/docs/csharp/misc/cs1608.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/whats-new/csharp-7.md", + "redirect_url": "/dotnet/csharp/whats-new/csharp-version-history#c-version-70" }, { - "source_path_from_root": "/docs/csharp/misc/cs1611.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" + "source_path_from_root": "/docs/csharp/whats-new/csharp-8.md", + "redirect_url": "/dotnet/csharp/whats-new/csharp-version-history#c-version-80" }, { - "source_path_from_root": "/docs/csharp/misc/cs1618.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/docs/csharp/whats-new/csharp-9.md", + "redirect_url": "/dotnet/csharp/whats-new/csharp-version-history#c-version-9" }, { - "source_path_from_root": "/docs/csharp/misc/cs1621.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#syntax-limitations-in-lambda-expressions" + "source_path_from_root": "/docs/csharp/whats-new/index.md", + "redirect_url": "/dotnet/csharp/whats-new/csharp-15", + "ms.custom": "updateeachrelease" }, { - "source_path_from_root": "/docs/csharp/misc/cs1622.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + "source_path_from_root": "/docs/csharp/whats-new/tutorials/default-interface-methods-versions.md", + "redirect_url": "/dotnet/csharp/advanced-topics/interface-implementation/default-interface-methods-versions" }, { - "source_path_from_root": "/docs/csharp/misc/cs1623.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + "source_path_from_root": "/docs/csharp/whats-new/tutorials/generate-consume-asynchronous-stream.md", + "redirect_url": "/dotnet/csharp/asynchronous-programming/generate-consume-asynchronous-stream" }, { - "source_path_from_root": "/docs/csharp/misc/cs1624.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + "source_path_from_root": "/docs/csharp/whats-new/tutorials/interpolated-string-handler.md", + "redirect_url": "/dotnet/csharp/advanced-topics/performance/interpolated-string-handler" }, { - "source_path_from_root": "/docs/csharp/misc/cs1625.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + "source_path_from_root": "/docs/csharp/whats-new/tutorials/mixins-with-default-interface-methods.md", + "redirect_url": "/dotnet/csharp/advanced-topics/interface-implementation/mixins-with-default-interface-methods" }, { - "source_path_from_root": "/docs/csharp/misc/cs1626.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + "source_path_from_root": "/docs/csharp/whats-new/tutorials/nullable-reference-types.md", + "redirect_url": "/dotnet/csharp/tutorials/nullable-reference-types" }, { - "source_path_from_root": "/docs/csharp/misc/cs1627.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + "source_path_from_root": "/docs/csharp/whats-new/tutorials/patterns-objects.md", + "redirect_url": "/dotnet/csharp/tutorials/patterns-objects" }, { - "source_path_from_root": "/docs/csharp/misc/cs1628.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#syntax-limitations-in-lambda-expressions" + "source_path_from_root": "/docs/csharp/whats-new/tutorials/ranges-indexes.md", + "redirect_url": "/dotnet/csharp/tutorials/ranges-indexes" }, { - "source_path_from_root": "/docs/csharp/misc/cs1629.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + "source_path_from_root": "/docs/csharp/whats-new/tutorials/records.md", + "redirect_url": "/dotnet/csharp/tutorials/records" }, { - "source_path_from_root": "/docs/csharp/misc/cs1631.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + "source_path_from_root": "/docs/csharp/whats-new/tutorials/static-abstract-interface-methods.md", + "redirect_url": "/dotnet/advanced-topics/interface-implementation/static-virtual-interface-members" }, { - "source_path_from_root": "/docs/csharp/misc/cs1632.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#syntax-limitations-in-lambda-expressions" + "source_path_from_root": "/docs/csharp/whats-new/tutorials/static-virtual-interface-members.md", + "redirect_url": "/dotnet/advanced-topics/interface-implementation/static-virtual-interface-members" }, { - "source_path_from_root": "/docs/csharp/misc/cs1633.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/whats-new/tutorials/top-level-statements.md", + "redirect_url": "/dotnet/csharp/tutorials/top-level-statements" }, { - "source_path_from_root": "/docs/csharp/misc/cs1634.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/whats-new/tutorials/upgrade-to-nullable-references.md", + "redirect_url": "/dotnet/csharp/fundamentals/null-safety/migration-strategies" }, { - "source_path_from_root": "/docs/csharp/misc/cs1635.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/docs/csharp/write-safe-efficient-code.md", + "redirect_url": "/dotnet/csharp/advanced-topics/performance" }, { - "source_path_from_root": "/docs/csharp/misc/cs1637.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/iterator-yield" + "source_path_from_root": "/redirections/proposals/csharp-10.0/generic-attributes.md", + "redirect_url": "/dotnet/csharp/language-reference/proposals/csharp-11.0/generic-attributes" }, { - "source_path_from_root": "/docs/csharp/misc/cs1641.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + "source_path_from_root": "/redirections/proposals/csharp-7.0/binary-literals.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/lexical-structure#6453-integer-literals" }, { - "source_path_from_root": "/docs/csharp/misc/cs1642.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + "source_path_from_root": "/redirections/proposals/csharp-7.0/digit-separators.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/lexical-structure#6453-integer-literals" }, - { - "source_path_from_root": "/docs/csharp/misc/cs1643.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" - }, { - "source_path_from_root": "/docs/csharp/misc/cs1649.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + "source_path_from_root": "/redirections/proposals/csharp-7.0/local-functions.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/statements#1364-local-function-declarations" }, { - "source_path_from_root": "/docs/csharp/misc/cs1651.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + "source_path_from_root": "/redirections/proposals/csharp-7.0/out-var.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#1217-declaration-expressions" }, { - "source_path_from_root": "/docs/csharp/misc/cs1655.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + "source_path_from_root": "/redirections/proposals/csharp-7.0/pattern-matching.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/patterns" }, { - "source_path_from_root": "/docs/csharp/misc/cs1663.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + "source_path_from_root": "/redirections/proposals/csharp-7.0/task-types.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/classes#15152-task-type-builder-pattern" }, { - "source_path_from_root": "/docs/csharp/misc/cs1665.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + "source_path_from_root": "/redirections/proposals/csharp-7.0/throw-expression.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#1215-the-throw-expression-operator" }, { - "source_path_from_root": "/docs/csharp/misc/cs1666.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/unsafe-code-errors" + "source_path_from_root": "/redirections/proposals/csharp-7.1/async-main.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/basic-concepts#71-application-startup" }, { - "source_path_from_root": "/docs/csharp/misc/cs1667.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/redirections/proposals/csharp-7.1/generics-pattern-match.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/patterns" }, { - "source_path_from_root": "/docs/csharp/misc/cs1657.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" + "source_path_from_root": "/redirections/proposals/csharp-7.1/infer-tuple-names.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/types#8311-tuple-types" }, - { - "source_path_from_root": "/docs/csharp/misc/cs1660.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs1661.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs1662.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" - }, { - "source_path_from_root": "/docs/csharp/misc/cs1670.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/params-arrays" + "source_path_from_root": "/redirections/proposals/csharp-7.1/target-typed-default.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#12719-default-value-expressions" }, { - "source_path_from_root": "/docs/csharp/misc/cs1671.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + "source_path_from_root": "/redirections/proposals/csharp-7.2/conditional-ref.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#1219-conditional-operator" }, { - "source_path_from_root": "/docs/csharp/misc/cs1673.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#syntax-limitations-in-lambda-expressions" + "source_path_from_root": "/redirections/proposals/csharp-7.2/non-trailing-named-arguments.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#12621-general" }, - { - "source_path_from_root": "/docs/csharp/misc/cs1676.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs1677.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs1678.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" - }, { - "source_path_from_root": "/docs/csharp/misc/cs1679.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + "source_path_from_root": "/redirections/proposals/csharp-7.2/private-protected.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/classes#1536-access-modifiers" }, { - "source_path_from_root": "/docs/csharp/misc/cs1680.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + "source_path_from_root": "/redirections/proposals/csharp-7.2/readonly-ref.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/variables#97-reference-variables-and-returns" }, { - "source_path_from_root": "/docs/csharp/misc/cs1681.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + "source_path_from_root": "/redirections/proposals/csharp-7.2/readonly-struct.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/structs#1624-struct-interfaces" }, { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs1674.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-statement-declaration-errors#implementing-idisposable-and-iasyncdisposable" + "source_path_from_root": "/redirections/proposals/csharp-7.2/span-safety.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/variables#97-reference-variables-and-returns" }, { - "source_path_from_root": "/docs/csharp/misc/cs1686.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#syntax-limitations-in-lambda-expressions" + "source_path_from_root": "/redirections/proposals/csharp-7.3/auto-prop-field-attrs.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/attributes#223-attribute-specification" }, - { - "source_path_from_root": "/docs/csharp/misc/cs1688.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" - }, { - "source_path_from_root": "/docs/csharp/misc/cs1689.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/attribute-usage-errors" + "source_path_from_root": "/redirections/proposals/csharp-7.3/blittable.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/classes#1525-type-parameter-constraints" }, { - "source_path_from_root": "/docs/csharp/misc/cs1692.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/redirections/proposals/csharp-7.3/expression-variables-in-initializers.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#1217-declaration-expressions" }, { - "source_path_from_root": "/docs/csharp/misc/cs1694.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/redirections/proposals/csharp-7.3/improved-overload-candidates.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#12642-applicable-function-member" }, { - "source_path_from_root": "/docs/csharp/misc/cs1695.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/redirections/proposals/csharp-7.3/indexing-movable-fixed-fields.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/unsafe-code#2383-fixed-size-buffers-in-expressions" }, { - "source_path_from_root": "/docs/csharp/misc/cs1696.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/redirections/proposals/csharp-7.3/leading-digit-separator.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/lexical-structure#6453-integer-literals" }, { - "source_path_from_root": "/docs/csharp/misc/cs1706.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors#syntax-limitations-in-lambda-expressions" + "source_path_from_root": "/redirections/proposals/csharp-7.3/pattern-based-fixed.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/unsafe-code#247-the-fixed-statement" }, { - "source_path_from_root": "/docs/csharp/misc/cs1709.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/preprocessor-errors" + "source_path_from_root": "/redirections/proposals/csharp-7.3/ref-local-reassignment.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/variables#97-reference-variables-and-returns" }, { - "source_path_from_root": "/docs/csharp/misc/cs1714.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/assembly-references" + "source_path_from_root": "/redirections/proposals/csharp-7.3/stackalloc-array-initializers.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#12821-stack-allocation" }, { - "source_path_from_root": "/docs/csharp/misc/cs1730.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" + "source_path_from_root": "/redirections/proposals/csharp-7.3/tuple-equality.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/expressions#121211-tuple-equality-operators" }, - { - "source_path_from_root": "/docs/csharp/misc/cs1731.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs1732.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs1911.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs1920.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs1925.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs1928.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs1929.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs1939.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/ref-modifiers-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs1944.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs1945.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs1950.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs1951.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs1952.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/expression-tree-restrictions" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs1953.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/lambda-expression-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs1954.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs2034.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/using-directive-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs3006.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/overload-resolution" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs3016.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/array-declaration-errors" - }, - { - "source_path_from_root": "/docs/csharp/misc/cs8506.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/pattern-matching-warnings" - }, - { - "source_path_from_root": "/docs/csharp/language-reference/compiler-messages/cs8515.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/pattern-matching-warnings" - }, - { - "source_path_from_root": "/docs/csharp/namespaces-and-assemblies.md", - "redirect_url": "/dotnet/csharp/fundamentals/program-structure/namespaces" - }, - { - "source_path_from_root": "/docs/csharp/nullable-attributes.md", - "redirect_url": "/dotnet/csharp/nullable-migration-strategies" - }, - { - "source_path_from_root": "/docs/csharp/nullable-warnings.md", - "redirect_url": "/dotnet/csharp/language-reference/compiler-messages/nullable-warnings" - }, - { - "source_path_from_root": "/docs/csharp/parallel.md", - "redirect_url": "/dotnet/standard/parallel-programming/index" - }, - { - "source_path_from_root": "/docs/csharp/pattern-matching.md", - "redirect_url": "/dotnet/csharp/fundamentals/functional/pattern-matching" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/arrays/arrays-as-objects.md", - "redirect_url": "/dotnet/csharp/programming-guide/arrays" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/arrays/passing-arrays-using-ref-and-out.md", - "redirect_url": "/dotnet/csharp/programming-guide/arrays" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/classes.md", - "redirect_url": "/dotnet/csharp/fundamentals/types/classes" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/destructors.md", - "redirect_url": "/dotnet/csharp/programming-guide/classes-and-structs/finalizers" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/how-to-access-a-collection-class-with-foreach.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/iteration-statements" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/how-to-know-the-difference-passing-a-struct-and-passing-a-class-to-a-method.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords/method-parameters" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/how-to-use-named-and-optional-arguments-in-office-programming.md", - "redirect_url": "/dotnet/csharp/advanced-topics/interop/how-to-use-named-and-optional-arguments-in-office-programming" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/index.md", - "redirect_url": "/dotnet/csharp/fundamentals/object-oriented" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/inheritance.md", - "redirect_url": "/dotnet/csharp/fundamentals/object-oriented/inheritance" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/objects.md", - "redirect_url": "/dotnet/csharp/fundamentals/object-oriented/objects" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/passing-parameters.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords/method-parameters" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/passing-reference-type-parameters.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords/method-parameters" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/passing-value-type-parameters.md", - "redirect_url": "/dotnet/csharp/language-reference/keywords/method-parameters" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/polymorphism.md", - "redirect_url": "/dotnet/csharp/fundamentals/object-oriented/polymorphism" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/records.md", - "redirect_url": "/dotnet/csharp/fundamentals/types/records" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/ref-returns.md", - "redirect_url": "/dotnet/csharp/language-reference/statements/declarations" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/structs.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/struct" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/classes-and-structs/using-structs.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/struct" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/arrays/implicitly-typed-arrays.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/arrays#implicitly-typed-arrays" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/arrays/index.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/arrays" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/arrays/jagged-arrays.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/arrays#jagged-arrays" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/arrays/multidimensional-arrays.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/arrays#multidimensional-arrays" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/arrays/passing-arrays-as-arguments.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/arrays#passing-arrays-as-arguments" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/arrays/single-dimensional-arrays.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/arrays#single-dimensional-arrays" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/arrays/using-foreach-with-arrays.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/arrays" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/assemblies-gac/friend-assemblies.md", - "redirect_url": "/dotnet/standard/assembly/friend", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/assemblies-gac/how-to-create-and-use-assemblies-using-the-command-line.md", - "redirect_url": "/dotnet/standard/assembly/index" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/assemblies-gac/how-to-create-signed-friend-assemblies.md", - "redirect_url": "/dotnet/standard/assembly/create-signed-friend" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/assemblies-gac/how-to-create-unsigned-friend-assemblies.md", - "redirect_url": "/dotnet/standard/assembly/create-unsigned-friend" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/assemblies-gac/how-to-determine-if-a-file-is-an-assembly.md", - "redirect_url": "/dotnet/standard/assembly/identify" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/assemblies-gac/how-to-load-and-unload-assemblies.md", - "redirect_url": "/dotnet/standard/assembly/load-unload" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/assemblies-gac/how-to-share-an-assembly-with-other-applications.md", - "redirect_url": "/dotnet/framework/app-domains/how-to-share-an-assembly-with-other-applications" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/assemblies-gac/index.md", - "redirect_url": "/dotnet/standard/assembly/index", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/assemblies-gac/walkthrough-embedding-type-information-from-microsoft-office-assemblies.md", - "redirect_url": "/previous-versions/visualstudio/visual-studio-2013/ee317478(v%3dvs.120)" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/assemblies-gac/walkthrough-embedding-types-from-managed-assemblies-in-visual-studio.md", - "redirect_url": "/dotnet/standard/assembly/embed-types-visual-studio" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/async/asynchronous-programming-with-async-and-await.md", - "redirect_url": "/dotnet/csharp/asynchronous-programming" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/async/cancel-remaining-async-tasks-after-one-is-complete.md", - "redirect_url": "/dotnet/csharp/asynchronous-programming" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/async/control-flow-in-async-programs.md", - "redirect_url": "/dotnet/csharp/asynchronous-programming/task-asynchronous-programming-model#BKMK_WhatHappensUnderstandinganAsyncMethod" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/async/fine-tuning-your-async-application.md", - "redirect_url": "/dotnet/csharp/asynchronous-programming" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/async/handling-reentrancy-in-async-apps.md", - "redirect_url": "/dotnet/csharp/asynchronous-programming" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/async/how-to-extend-the-async-walkthrough-by-using-task-whenall.md", - "redirect_url": "/dotnet/csharp/asynchronous-programming" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/async/how-to-make-multiple-web-requests-in-parallel-by-using-async-and-await.md", - "redirect_url": "/dotnet/csharp/asynchronous-programming" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/async/walkthrough-accessing-the-web-by-using-async-and-await.md", - "redirect_url": "/dotnet/csharp/asynchronous-programming" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/async/async-return-types.md", - "redirect_url": "/dotnet/csharp/asynchronous-programming/async-return-types" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/async/cancel-async-tasks-after-a-period-of-time.md", - "redirect_url": "/dotnet/csharp/asynchronous-programming/cancel-async-tasks-after-a-period-of-time" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/async/index.md", - "redirect_url": "/dotnet/csharp/asynchronous-programming/async-scenarios" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/async/start-multiple-async-tasks-and-process-them-as-they-complete.md", - "redirect_url": "/dotnet/csharp/asynchronous-programming/start-multiple-async-tasks-and-process-them-as-they-complete" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/async/task-asynchronous-programming-model.md", - "redirect_url": "/dotnet/csharp/asynchronous-programming/task-asynchronous-programming-model" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/async/using-async-for-file-access.md", - "redirect_url": "/dotnet/csharp/asynchronous-programming/using-async-for-file-access" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/async/cancel-an-async-task-or-a-list-of-tasks.md", - "redirect_url": "/dotnet/csharp/asynchronous-programming/cancel-an-async-task-or-a-list-of-tasks" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/attributes/index.md", - "redirect_url": "/dotnet/csharp/advanced-topics/reflection-and-attributes/" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/attributes/attributeusage.md", - "redirect_url": "/dotnet/csharp/language-reference/attributes/general" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/attributes/common-attributes.md", - "redirect_url": "/dotnet/csharp/language-reference/attributes/global" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/attributes/creating-custom-attributes.md", - "redirect_url": "/dotnet/csharp/advanced-topics/reflection-and-attributes/creating-custom-attributes" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/attributes/accessing-attributes-by-using-reflection.md", - "redirect_url": "/dotnet/csharp/advanced-topics/reflection-and-attributes/accessing-attributes-by-using-reflection" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/attributes/how-to-create-a-c-cpp-union-by-using-attributes.md", - "redirect_url": "/dotnet/csharp/advanced-topics/reflection-and-attributes/how-to-create-a-c-cpp-union-by-using-attributes" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/caller-information.md", - "redirect_url": "/dotnet/csharp/language-reference/attributes/caller-information" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/collections.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/collections", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/expression-trees/index.md", - "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/index" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/expression-trees/how-to-execute-expression-trees.md", - "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/expression-trees-execution" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/expression-trees/how-to-modify-expression-trees.md", - "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/expression-trees-translating" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/expression-trees/debugging-expression-trees-in-visual-studio.md", - "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/debugging-expression-trees-in-visual-studio" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/expression-trees/debugview-syntax.md", - "redirect_url": "/dotnet/csharp/linq/how-to-build-dynamic-queries" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/expression-trees/how-to-use-expression-trees-to-build-dynamic-queries.md", - "redirect_url": "/dotnet/csharp/advanced-topics/expression-trees/debugview-syntax" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/adding-elements-attributes-and-nodes-to-an-xml-tree.md", - "redirect_url": "/dotnet/standard/linq/add-elements-attributes-nodes-xml-tree", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/advanced-query-techniques-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/join-two-collections" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/aggregation-operations.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/applicability-of-functional-transformation.md", - "redirect_url": "/dotnet/standard/linq/applicability-functional-transformation", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/atomized-xname-and-xnamespace-objects-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/atomized-xname-xnamespace-objects", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/basic-linq-query-operations.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/classification-of-standard-query-operators-by-manner-of-execution.md", - "redirect_url": "/dotnet/csharp/linq/get-started/introduction-to-linq-queries" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-reorder-the-fields-of-a-delimited-file-linq.md", - "redirect_url": "/dotnet/csharp/linq/how-to-query-files-and-directories" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-split-a-file-into-many-files-by-using-groups-linq.md", - "redirect_url": "/dotnet/csharp/linq/how-to-query-files-and-directories" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-join-content-from-dissimilar-files-linq.md", - "redirect_url": "/dotnet/csharp/linq/how-to-query-files-and-directories" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-compute-column-values-in-a-csv-text-file-linq.md", - "redirect_url": "/dotnet/csharp/linq/how-to-query-files-and-directories" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-query-for-characters-in-a-string-linq.md", - "redirect_url": "/dotnet/csharp/linq/how-to-query-strings" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-count-occurrences-of-a-word-in-a-string-linq.md", - "redirect_url": "/dotnet/csharp/linq/how-to-query-strings" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-sort-or-filter-text-data-by-any-word-or-field-linq.md", - "redirect_url": "/dotnet/csharp/linq/how-to-query-strings" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-query-for-sentences-that-contain-a-specified-set-of-words-linq.md", - "redirect_url": "/dotnet/csharp/linq/how-to-query-strings" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-combine-linq-queries-with-regular-expressions.md", - "redirect_url": "/dotnet/csharp/linq/how-to-query-strings" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-populate-object-collections-from-multiple-sources-linq.md", - "redirect_url": "/dotnet/csharp/linq/how-to-query-collections" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-combine-and-compare-string-collections-linq.md", - "redirect_url": "/dotnet/csharp/linq/how-to-query-collections" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-query-an-arraylist-with-linq.md", - "redirect_url": "/dotnet/csharp/linq/how-to-query-collections" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-the-set-difference-between-two-lists-linq.md", - "redirect_url": "/dotnet/csharp/linq/how-to-query-collections" - }, - { - "source_path_from_root": "/docs/csharp/linq/group-results-by-contiguous-keys.md", - "redirect_url": "/dotnet/csharp/linq/how-to-extend-linq" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-use-expression-trees-to-build-dynamic-queries.md", - "redirect_url": "/dotnet/csharp/linq/how-to-build-dynamic-queries" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-add-custom-methods-for-linq-queries.md", - "redirect_url": "/dotnet/csharp/linq/how-to-extend-linq" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/query-expression-syntax-for-standard-query-operators.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/basic-queries-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/basic-queries-linq-to-xml", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/chaining-queries-example.md", - "redirect_url": "/dotnet/standard/linq/chain-queries-example", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/chaining-standard-query-operators-together.md", - "redirect_url": "/dotnet/standard/linq/chain-standard-query-operators-together", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/cloning-vs-attaching.md", - "redirect_url": "/dotnet/standard/linq/create-xml-trees#example-attach-vs-clone" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/comparison-of-xpath-and-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/comparison-xpath-linq-xml", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/concatenation-operations.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/concepts-and-terminology-functional-transformation.md", - "redirect_url": "/dotnet/standard/linq/concepts-terminology-functional-transformation", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/converting-data-types.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/converting-data-types", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/creating-the-source-office-open-xml-document.md", - "redirect_url": "/dotnet/standard/linq/create-source-office-open-xml-document", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/creating-xml-trees-linq-to-xml-2.md", - "redirect_url": "/dotnet/standard/linq/create-xml-trees", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/creating-xml-trees.md", - "redirect_url": "/dotnet/standard/linq/create-xml-trees" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/data-transformations-with-linq.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/deferred-execution-and-lazy-evaluation-in-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/deferred-execution-lazy-evaluation", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/deferred-execution-example.md", - "redirect_url": "/dotnet/standard/linq/deferred-execution-example", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/element-operations.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/equality-operations.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/example-that-outputs-office-open-xml-document-parts.md", - "redirect_url": "/dotnet/standard/linq/example-outputs-office-open-xml-document-parts", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/filtering-data.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/filtering-data", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/finding-text-in-word-documents.md", - "redirect_url": "/dotnet/standard/linq/find-text-word-documents", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/finding-the-default-paragraph-style.md", - "redirect_url": "/dotnet/standard/linq/find-default-paragraph-style", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/functional-construction-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/functional-construction", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/functional-programming-vs-imperative-programming.md", - "redirect_url": "/dotnet/standard/linq/functional-vs-imperative-programming", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/functional-transformation-of-xml.md", - "redirect_url": "/dotnet/standard/linq/functional-transformation-xml", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/functional-vs-procedural-programming-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/functional-vs-procedural-programming", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/generation-operations.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/getting-started-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/linq-xml-overview" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/getting-started-with-linq.md", - "redirect_url": "/dotnet/csharp/linq/" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-build-linq-to-xml-examples.md", - "redirect_url": "/dotnet/standard/linq/build-linq-xml-examples", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-calculate-intermediate-values.md", - "redirect_url": "/dotnet/standard/linq/calculate-intermediate-values", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-catch-parsing-errors.md", - "redirect_url": "/dotnet/standard/linq/catch-parsing-errors", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-chain-axis-method-calls-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/chain-axis-method-calls", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-change-the-namespace-for-an-entire-xml-tree.md", - "redirect_url": "/dotnet/standard/linq/change-namespace-entire-xml-tree", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-control-namespace-prefixes-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/control-namespace-prefixes", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-control-the-type-of-a-projection.md", - "redirect_url": "/dotnet/standard/linq/control-type-projection", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-create-a-document-with-namespaces-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/create-document-namespaces-csharp", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-create-a-tree-from-an-xmlreader.md", - "redirect_url": "/dotnet/standard/linq/create-tree-xmlreader", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-create-hierarchy-using-grouping.md", - "redirect_url": "/dotnet/standard/linq/create-hierarchy-grouping", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-debug-empty-query-results-sets.md", - "redirect_url": "/dotnet/standard/linq/debug-empty-query-results-sets", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-filter-on-an-attribute-xpath-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/filter-attribute", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-filter-on-an-optional-element.md", - "redirect_url": "/dotnet/standard/linq/filter-optional-element", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-filter-on-element-names-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/filter-element-names", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-a-child-element-xpath-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/find-child-element", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-a-list-of-child-elements-xpath-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/find-list-child-elements", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-a-single-descendant-using-the-descendants-method.md", - "redirect_url": "/dotnet/standard/linq/find-single-descendant-descendants-method", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-a-union-of-two-location-paths-xpath-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/find-union-two-location-paths", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-all-nodes-in-a-namespace.md", - "redirect_url": "/dotnet/standard/linq/find-all-nodes-namespace", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-an-attribute-of-the-parent-xpath-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/find-attribute-parent", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-an-element-with-a-specific-attribute.md", - "redirect_url": "/dotnet/standard/linq/find-element-specific-attribute", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-an-element-with-a-specific-child-element.md", - "redirect_url": "/dotnet/standard/linq/find-element-specific-child-element", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-attributes-of-siblings-with-a-specific-name-xpath-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/find-attributes-siblings-specific-name", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-child-elements-based-on-position-xpath-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/find-child-elements-based-position", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-descendant-elements-xpath-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/find-descendant-elements", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-descendants-of-a-child-element-xpath-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/find-descendants-child-element", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-descendants-with-a-specific-element-name.md", - "redirect_url": "/dotnet/standard/linq/find-descendants-specific-element-name", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-elements-in-a-namespace-xpath-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/find-elements-namespace", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-elements-with-a-specific-attribute-xpath-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/find-elements-specific-attribute", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-preceding-siblings-xpath-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/find-preceding-siblings", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-related-elements-xpath-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/find-related-elements", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-sibling-nodes-xpath-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/find-sibling-nodes", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-the-immediate-preceding-sibling-xpath-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/find-immediate-preceding-sibling", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-find-the-root-element-xpath-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/find-root-element", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-generate-text-files-from-xml.md", - "redirect_url": "/dotnet/standard/linq/generate-text-files-xml", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-generate-xml-from-csv-files.md", - "redirect_url": "/dotnet/standard/linq/generate-xml-csv-files", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-join-two-collections-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/join-two-collections", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-list-all-nodes-in-a-tree.md", - "redirect_url": "/dotnet/standard/linq/list-all-nodes-tree", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-load-xml-from-a-file.md", - "redirect_url": "/dotnet/standard/linq/load-xml-file", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-modify-an-office-open-xml-document.md", - "redirect_url": "/dotnet/standard/linq/modify-office-open-xml-document", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-parse-a-string.md", - "redirect_url": "/dotnet/standard/linq/parse-string", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-perform-streaming-transform-of-large-xml-documents.md", - "redirect_url": "/dotnet/standard/linq/perform-streaming-transform-large-xml-documents", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-perform-streaming-transformations-of-text-to-xml.md", - "redirect_url": "/dotnet/standard/linq/perform-streaming-transformations-text-xml", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-populate-an-xml-tree-from-the-file-system.md", - "redirect_url": "/dotnet/standard/linq/populate-xml-tree-file-system", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-populate-an-xml-tree-with-an-xmlwriter-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/populate-xml-tree-xmlwriter", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-project-a-new-type-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/project-new-type", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-project-an-anonymous-type.md", - "redirect_url": "/dotnet/standard/linq/project-anonymous-type", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-project-an-object-graph.md", - "redirect_url": "/dotnet/standard/linq/project-object-graph", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-query-an-assembly-s-metadata-with-reflection-linq.md", - "redirect_url": "/dotnet/csharp/advanced-topics/reflection-and-attributes/how-to-query-assembly-metadata-with-reflection-linq", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-query-linq-to-xml-using-xpath.md", - "redirect_url": "/dotnet/standard/linq/query-linq-xml-xpath", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-read-and-write-an-encoded-document.md", - "redirect_url": "/dotnet/standard/linq/read-write-encoded-document", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-retrieve-a-collection-of-attributes-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/retrieve-collection-attributes", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-retrieve-a-collection-of-elements-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/retrieve-collection-elements", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-retrieve-a-single-attribute-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/retrieve-single-attribute", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-retrieve-a-single-child-element-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/retrieve-single-child-element", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-retrieve-paragraphs-from-an-office-open-xml-document.md", - "redirect_url": "/dotnet/standard/linq/retrieve-paragraphs-office-open-xml-document", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-retrieve-the-shallow-value-of-an-element.md", - "redirect_url": "/dotnet/standard/linq/retrieve-shallow-value-element", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-retrieve-the-value-of-an-attribute-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/retrieve-value-attribute", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-retrieve-the-value-of-an-element-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/retrieve-value-element", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-serialize-using-datacontractserializer.md", - "redirect_url": "/dotnet/standard/linq/serialize-datacontractserializer", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-serialize-using-xmlserializer.md", - "redirect_url": "/dotnet/standard/linq/serialize-xmlserializer", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-sort-elements-on-multiple-keys.md", - "redirect_url": "/dotnet/standard/linq/sort-elements-multiple-keys", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-sort-elements.md", - "redirect_url": "/dotnet/standard/linq/sort-elements", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-stream-xml-fragments-from-an-xmlreader.md", - "redirect_url": "/dotnet/standard/linq/stream-xml-fragments-xmlreader", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-stream-xml-fragments-with-access-to-header-information.md", - "redirect_url": "/dotnet/standard/linq/stream-xml-fragments-access-header-information", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-transform-the-shape-of-an-xml-tree.md", - "redirect_url": "/dotnet/standard/linq/transform-shape-xml-tree", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-use-annotations-to-transform-linq-to-xml-trees-in-an-xslt-style.md", - "redirect_url": "/dotnet/standard/linq/use-annotations-transform-linq-xml-trees-xslt-style", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-validate-using-xsd-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/validate-xsd", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-work-with-dictionaries-using-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/work-dictionaries-linq-xml", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-write-a-linq-to-xml-axis-method.md", - "redirect_url": "/dotnet/standard/linq/write-linq-xml-axis-method", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-write-a-query-that-finds-elements-based-on-context.md", - "redirect_url": "/dotnet/standard/linq/write-query-finds-elements-based-context", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-write-queries-on-xml-in-namespaces.md", - "redirect_url": "/dotnet/standard/linq/write-queries-xml-namespaces", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-write-queries-with-complex-filtering.md", - "redirect_url": "/dotnet/standard/linq/write-queries-complex-filtering", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/in-memory-xml-tree-modification-vs-functional-construction-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/in-memory-xml-tree-modification-vs-functional-construction", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/intermediate-materialization.md", - "redirect_url": "/dotnet/standard/linq/intermediate-materialization", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/index.md", - "redirect_url": "/dotnet/csharp/linq/" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/introduction-to-linq.md", - "redirect_url": "/dotnet/csharp/programming-guide/concepts/linq" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/introduction-to-linq-queries.md", - "redirect_url": "/dotnet/csharp/linq/get-started/introduction-to-linq-queries" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/type-relationships-in-linq-query-operations.md", - "redirect_url": "/dotnet/csharp/linq/get-started/type-relationships-in-linq-query-operations" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/features-that-support-linq.md", - "redirect_url": "/dotnet/csharp/linq/get-started/features-that-support-linq" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/grouping-data.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/grouping-data" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/introduction-to-pure-functional-transformations.md", - "redirect_url": "/dotnet/standard/linq/introduction-pure-functional-transformations", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/join-operations.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/join-operations" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-and-generic-types.md", - "redirect_url": "/dotnet/csharp/linq/get-started/type-relationships-in-linq-query-operations" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-and-reflection.md", - "redirect_url": "/dotnet/csharp/advanced-topics/reflection-and-attributes/how-to-query-assembly-metadata-with-reflection-linq" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-and-strings.md", - "redirect_url": "/dotnet/csharp/linq" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-to-objects.md", - "redirect_url": "/dotnet/csharp/linq/get-started/introduction-to-linq-queries" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-to-xml-annotations.md", - "redirect_url": "/dotnet/standard/linq/linq-xml-annotations", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-to-xml-axes-overview.md", - "redirect_url": "/dotnet/standard/linq/linq-xml-axes-overview", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-to-xml-axes.md", - "redirect_url": "/dotnet/standard/linq/linq-xml-axes-overview" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-to-xml-classes-overview.md", - "redirect_url": "/dotnet/standard/linq/linq-xml-classes-overview", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-to-xml-events.md", - "redirect_url": "/dotnet/standard/linq/linq-xml-events", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-to-xml-for-xpath-users.md", - "redirect_url": "/dotnet/standard/linq/comparison-xpath-linq-xml" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-to-xml-overview.md", - "redirect_url": "/dotnet/standard/linq/linq-xml-overview", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-to-xml-programming-overview.md", - "redirect_url": "/dotnet/standard/linq/linq-xml-overview" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-to-xml-security.md", - "redirect_url": "/dotnet/standard/linq/linq-xml-security", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-to-xml-vs-dom.md", - "redirect_url": "/dotnet/standard/linq/linq-xml-vs-dom", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-to-xml-vs-other-xml-technologies.md", - "redirect_url": "/dotnet/standard/linq/linq-xml-vs-xml-technologies", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/linq-xml-overview" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/maintaining-name-value-pairs.md", - "redirect_url": "/dotnet/standard/linq/maintain-name-value-pairs", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/mixed-declarative-code-imperative-code-bugs-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/mixed-declarative-imperative-code-bugs", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/modifying-elements-attributes-and-nodes-in-an-xml-tree.md", - "redirect_url": "/dotnet/standard/linq/modify-elements-attributes-nodes-xml-tree", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/modifying-xml-trees-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/in-memory-xml-tree-modification-vs-functional-construction" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/namespaces-overview-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/namespaces-overview", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/parsing-xml.md", - "redirect_url": "/dotnet/standard/linq/parse-string" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/partitioning-data.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/partitioning-data", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/performance-of-chained-queries-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/performance-chained-queries", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/pre-atomization-of-xname-objects-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/pre-atomization-xname-objects", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/preserving-white-space-while-loading-or-parsing-xml1.md", - "redirect_url": "/dotnet/standard/linq/preserve-white-space-loading-parsing-xml", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/preserving-white-space-while-serializing.md", - "redirect_url": "/dotnet/standard/linq/preserve-white-space-serializing", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/programming-guide-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/linq-xml-overview" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/programming-with-nodes.md", - "redirect_url": "/dotnet/standard/linq/program-nodes", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/projecting-xml-in-a-different-shape.md", - "redirect_url": "/dotnet/standard/linq/project-xml-different-shape", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/projection-operations.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/projection-operations", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/projections-and-transformations-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/work-dictionaries-linq-xml" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/pure-functional-transformations-of-xml.md", - "redirect_url": "/dotnet/standard/linq/introduction-pure-functional-transformations" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/quantifier-operations.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/quantifier-operations", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/query-syntax-and-method-syntax-in-linq.md", - "redirect_url": "/dotnet/csharp/linq/get-started/write-linq-queries", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/querying-an-xdocument-vs-querying-an-xelement.md", - "redirect_url": "/dotnet/standard/linq/query-xdocument-vs-query-xelement", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/querying-xml-trees.md", - "redirect_url": "/dotnet/standard/linq/query-xml-trees-overview", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/refactoring-into-pure-functions.md", - "redirect_url": "/dotnet/standard/linq/refactor-pure-functions", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/refactoring-using-a-pure-function.md", - "redirect_url": "/dotnet/standard/linq/refactor-pure-function", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/refactoring-using-an-extension-method.md", - "redirect_url": "/dotnet/standard/linq/refactor-extension-method", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/reference-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/reference", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/removing-elements-attributes-and-nodes-from-an-xml-tree.md", - "redirect_url": "/dotnet/standard/linq/remove-elements-attributes-nodes-xml-tree", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/retrieving-the-paragraphs-and-their-styles.md", - "redirect_url": "/dotnet/standard/linq/retrieve-paragraphs-styles", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/retrieving-the-text-of-the-paragraphs.md", - "redirect_url": "/dotnet/standard/linq/retrieve-text-paragraphs", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/sample-xml-documents-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/sample-xml-file-typical-purchase-order" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/sample-xml-file-books-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/sample-xml-file-books", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/sample-xml-file-consolidated-purchase-orders.md", - "redirect_url": "/dotnet/standard/linq/sample-xml-file-consolidated-purchase-orders", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/sample-xml-file-customers-and-orders-in-a-namespace.md", - "redirect_url": "/dotnet/standard/linq/sample-xml-file-customers-orders-namespace", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/sample-xml-file-customers-and-orders-linq-to-xml-2.md", - "redirect_url": "/dotnet/standard/linq/sample-xml-file-customers-orders", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/sample-xml-file-multiple-purchase-orders-in-a-namespace.md", - "redirect_url": "/dotnet/standard/linq/sample-xml-file-multiple-purchase-orders-namespace", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/sample-xml-file-multiple-purchase-orders-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/sample-xml-file-multiple-purchase-orders", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/sample-xml-file-numerical-data-in-a-namespace.md", - "redirect_url": "/dotnet/standard/linq/sample-xml-file-numerical-data-namespace", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/sample-xml-file-numerical-data-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/sample-xml-file-numerical-data", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/sample-xml-file-test-configuration-in-a-namespace1.md", - "redirect_url": "/dotnet/standard/linq/sample-xml-file-test-configuration-namespace", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/sample-xml-file-test-configuration-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/sample-xml-file-test-configuration", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/sample-xml-file-typical-purchase-order-in-a-namespace.md", - "redirect_url": "/dotnet/standard/linq/sample-xml-file-typical-purchase-order-namespace", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/sample-xml-file-typical-purchase-order-linq-to-xml-1.md", - "redirect_url": "/dotnet/standard/linq/sample-xml-file-typical-purchase-order", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/sample-xsd-file-customers-and-orders1.md", - "redirect_url": "/dotnet/standard/linq/sample-xsd-file-customers-orders", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/scope-of-default-namespaces.md", - "redirect_url": "/dotnet/standard/linq/scope-default-namespaces", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/serializing-to-an-xmlreader-invoking-xslt.md", - "redirect_url": "/dotnet/standard/linq/serialize-xmlreader-invoke-xslt", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/serializing-to-files-textwriters-and-xmlwriters.md", - "redirect_url": "/dotnet/standard/linq/serialize-files-textwriters-xmlwriters", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/serializing-with-an-xml-declaration.md", - "redirect_url": "/dotnet/standard/linq/serialize-xml-declaration", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/serializing-xml-trees.md", - "redirect_url": "/dotnet/standard/linq/serialize-files-textwriters-xmlwriters" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/set-operations.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/set-operations", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/shape-of-wordprocessingml-documents.md", - "redirect_url": "/dotnet/standard/linq/xml-shape-wordprocessingml-documents", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/sorting-data.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/sorting-data", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/standard-query-operators-overview.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/statically-compiled-queries-linq-to-xml.md", - "redirect_url": "/dotnet/standard/linq/statically-compiled-queries", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/style-part-of-a-wordprocessingml-document.md", - "redirect_url": "/dotnet/standard/linq/style-part-wordprocessingml-document", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/tutorial-chaining-queries-together.md", - "redirect_url": "/dotnet/standard/linq/chain-queries-example" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/tutorial-manipulating-content-in-a-wordprocessingml-document.md", - "redirect_url": "/dotnet/standard/linq/xml-shape-wordprocessingml-documents" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/using-xslt-to-transform-an-xml-tree.md", - "redirect_url": "/dotnet/standard/linq/use-xslt-transform-xml-tree", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/valid-content-of-xelement-and-xdocument-objects3.md", - "redirect_url": "/dotnet/standard/linq/valid-content-xelement-xdocument-objects", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/wordprocessingml-document-with-styles.md", - "redirect_url": "/dotnet/standard/linq/wordprocessingml-document-styles", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/working-with-xml-namespaces.md", - "redirect_url": "/dotnet/standard/linq/namespaces-overview" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/xattribute-class-overview.md", - "redirect_url": "/dotnet/standard/linq/xattribute-class-overview", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/xdocument-class-overview.md", - "redirect_url": "/dotnet/standard/linq/xdocument-class-overview", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/xelement-class-overview.md", - "redirect_url": "/dotnet/standard/linq/xelement-class-overview", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-to-adonet-portal-page.md", - "redirect_url": "/dotnet/csharp/linq/" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/enabling-a-data-source-for-linq-querying1.md", - "redirect_url": "/dotnet/csharp/linq/" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/visual-studio-ide-and-tools-support-for-linq.md", - "redirect_url": "/dotnet/csharp/linq/" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/walkthrough-writing-queries-linq.md", - "redirect_url": "/dotnet/csharp/linq/get-started/walkthrough-writing-queries-linq" - }, - { - "source_path_from_root": "/docs/csharp/linq/walkthrough-writing-queries-linq.md", - "redirect_url": "/dotnet/csharp/linq/get-started/walkthrough-writing-queries-linq" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/linq-and-file-directories.md", - "redirect_url": "/dotnet/csharp/linq//how-to-query-files-and-directories" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-query-for-files-with-a-specified-attribute-or-name.md", - "redirect_url": "/dotnet/csharp/linq//how-to-query-files-and-directories" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-group-files-by-extension-linq.md", - "redirect_url": "/dotnet/csharp/linq//how-to-query-files-and-directories" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-query-for-the-total-number-of-bytes-in-a-set-of-folders-linq.md", - "redirect_url": "/dotnet/csharp/linq//how-to-query-files-and-directories" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-compare-the-contents-of-two-folders-linq.md", - "redirect_url": "/dotnet/csharp/linq//how-to-query-files-and-directories" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-query-for-the-largest-file-or-files-in-a-directory-tree-linq.md", - "redirect_url": "/dotnet/csharp/linq//how-to-query-files-and-directories" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-query-for-duplicate-files-in-a-directory-tree-linq.md", - "redirect_url": "/dotnet/csharp/linq//how-to-query-files-and-directories" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/linq/how-to-query-the-contents-of-files-in-a-folder-lin.md", - "redirect_url": "/dotnet/csharp/linq//how-to-query-files-and-directories" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/object-oriented-programming.md", - "redirect_url": "/dotnet/csharp/fundamentals/tutorials/oop", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/reflection.md", - "redirect_url": "/dotnet/csharp/advanced-topics/reflection-and-attributes/", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/serialization/index.md", - "redirect_url": "/dotnet/standard/serialization/" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/serialization/how-to-read-object-data-from-an-xml-file.md", - "redirect_url": "dotnet/standard/serialization/how-to-deserialize-an-object" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/serialization/how-to-write-object-data-to-an-xml-file.md", - "redirect_url": "/dotnet/standard/serialization/how-to-serialize-an-object" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/serialization/walkthrough-persisting-an-object-in-visual-studio.md", - "redirect_url": "/dotnet/standard/serialization/system-text-json/how-to" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/threading/how-to-use-a-thread-pool.md", - "redirect_url": "/dotnet/api/system.threading.threadpool.queueuserworkitem" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/threading/index.md", - "redirect_url": "/dotnet/standard/threading/" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/threading/multithreaded-applications.md", - "redirect_url": "/dotnet/standard/threading/using-threads-and-threading" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/threading/parameters-and-return-values-for-multithreaded-procedures.md", - "redirect_url": "/dotnet/standard/threading/creating-threads-and-passing-data-at-start-time" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/threading/thread-pooling.md", - "redirect_url": "/dotnet/standard/threading/the-managed-thread-pool" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/threading/thread-synchronization.md", - "redirect_url": "/dotnet/standard/threading/overview-of-synchronization-primitives" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/threading/thread-timers.md", - "redirect_url": "/dotnet/standard/threading/timers" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/concepts/threading/walkthrough-multithreading-with-the-backgroundworker-component.md", - "redirect_url": "/dotnet/api/system.componentmodel.backgroundworker" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/enumeration-types.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/enum" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/events/how-to-use-a-dictionary-to-store-event-instances.md", - "redirect_url": "/dotnet/standard/events/how-to-handle-multiple-events-using-event-properties" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/events/how-to-publish-events-that-conform-to-net-framework-guidelines.md", - "redirect_url": "/dotnet/standard/events" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/exceptions/compiler-generated-exceptions.md", - "redirect_url": "/dotnet/csharp/fundamentals/exceptions/compiler-generated-exceptions" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/exceptions/creating-and-throwing-exceptions.md", - "redirect_url": "/dotnet/csharp/fundamentals/exceptions/creating-and-throwing-exceptions" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/exceptions/exception-handling.md", - "redirect_url": "/dotnet/csharp/fundamentals/exceptions/exception-handling" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/exceptions/exceptions-and-exception-handling.md", - "redirect_url": "/dotnet/csharp/fundamentals/exceptions" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/exceptions/how-to-catch-a-non-cls-exception.md", - "redirect_url": "/dotnet/csharp/how-to/how-to-catch-a-non-cls-exception" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/exceptions/how-to-execute-cleanup-code-using-finally.md", - "redirect_url": "/dotnet/csharp/fundamentals/exceptions/how-to-execute-cleanup-code-using-finally" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/exceptions/how-to-handle-an-exception-using-try-catch.md", - "redirect_url": "/dotnet/csharp/fundamentals/exceptions/how-to-handle-an-exception-using-try-catch" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/exceptions/index.md", - "redirect_url": "/dotnet/csharp/fundamentals/exceptions" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/exceptions/using-exceptions.md", - "redirect_url": "/dotnet/csharp/fundamentals/exceptions/using-exceptions" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/file-system/index.md", - "redirect_url": "/dotnet/standard/io/" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/file-system/how-to-copy-delete-and-move-files-and-folders.md", - "redirect_url": "/dotnet/standard/io/how-to-copy-directories" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/file-system/how-to-create-a-file-or-folder.md", - "redirect_url": "/dotnet/standard/io/how-to-read-and-write-to-a-newly-created-data-file" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/file-system/how-to-create-a-key-in-the-registry.md", - "redirect_url": "/dotnet/api/microsoft.win32.registry" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/file-system/how-to-get-information-about-files-folders-and-drives.md", - "redirect_url": "/dotnet/standard/io/common-i-o-tasks" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/file-system/how-to-iterate-through-a-directory-tree.md", - "redirect_url": "/dotnet/standard/io/how-to-enumerate-directories-and-files" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/file-system/how-to-provide-a-progress-dialog-box-for-file-operations.md", - "redirect_url": "dotnet/visual-basic/developing-apps/programming/drives-directories-files/how-to-copy-a-directory-to-another-directory" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/file-system/how-to-read-from-a-text-file.md", - "redirect_url": "dotnet/standard/io/how-to-read-text-from-a-file" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/file-system/how-to-read-a-text-file-one-line-at-a-time.md", - "redirect_url": "dotnet/standard/io/how-to-read-text-from-a-file" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/file-system/how-to-write-to-a-text-file.md", - "redirect_url": "dotnet/standard/io/how-to-write-text-to-a-file" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/generics/benefits-of-generics.md", - "redirect_url": "/dotnet/csharp/programming-guide/generics" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/generics/generics-and-attributes.md", - "redirect_url": "/dotnet/csharp/advanced-topics/reflection-and-attributes/generics-and-attributes", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/generics/generics-and-reflection.md", - "redirect_url": "/dotnet/csharp/advanced-topics/reflection-and-attributes/generics-and-reflection", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/generics/default-keyword-in-generics.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/default", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/generics/generics-in-the-net-framework-class-library.md", - "redirect_url": "/dotnet/standard/generics/index" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/generics/index.md", - "redirect_url": "/dotnet/csharp/fundamentals/types/generics" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/generics/introduction-to-generics.md", - "redirect_url": "/dotnet/standard/generics/index" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/index.md", - "redirect_url": "/dotnet/csharp/programming-guide/concepts" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/inside-a-program/coding-conventions.md", - "redirect_url": "/dotnet/csharp/fundamentals/coding-style/coding-conventions" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/inside-a-program/general-structure-of-a-csharp-program.md", - "redirect_url": "/dotnet/csharp/fundamentals/program-structure" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/inside-a-program/hello-world-your-first-program.md", - "redirect_url": "/dotnet/csharp/tutorials/intro-to-csharp/hello-world" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/inside-a-program/identifier-names.md", - "redirect_url": "/dotnet/csharp/fundamentals/coding-style/identifier-names" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/inside-a-program/index.md", - "redirect_url": "/dotnet/csharp/fundamentals/program-structure" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/interfaces/index.md", - "redirect_url": "/dotnet/csharp/fundamentals/types/interfaces" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/interop/example-com-class.md", - "redirect_url": "/dotnet/csharp/advanced-topics/interop/example-com-class" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/interop/how-to-access-office-onterop-objects.md", - "redirect_url": "/dotnet/csharp/advanced-topics/interop/how-to-access-office-interop-objects" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/interop/how-to-use-indexed-properties-in-com-interop-rogramming.md", - "redirect_url": "/dotnet/csharp/advanced-topics/interop/how-to-use-indexed-properties-in-com-interop-programming" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/interop/how-to-use-platform-invoke-to-play-a-wave-file.md", - "redirect_url": "/dotnet/csharp/advanced-topics/interop/how-to-use-platform-invoke-to-play-a-wave-file" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/interop/index.md", - "redirect_url": "/dotnet/csharp/advanced-topics/interop/index" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/interop/interoperability-overview.md", - "redirect_url": "/dotnet/csharp/advanced-topics/interop/index" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/interop/walkthrough-office-programming.md", - "redirect_url": "/dotnet/csharp/advanced-topics/interop/walkthrough-office-programming" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-create-a-nested-group.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/grouping-data" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-dynamically-specify-predicate-filters-at-runtime.md", - "redirect_url": "/dotnet/csharp/linq/get-started/write-linq-queries" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-group-query-results.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/grouping-data" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-group-results-by-contiguous-keys.md", - "redirect_url": "/dotnet/csharp/linq/how-to-extend-linq" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-handle-exceptions-in-query-expressions.md", - "redirect_url": "/dotnet/csharp/linq/get-started/write-linq-queries" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-handle-null-values-in-query-expressions.md", - "redirect_url": "/dotnet/csharp/linq/get-started/write-linq-queries" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-join-by-using-composite-keys.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/join-operations" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-order-the-results-of-a-join-clause.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-perform-a-subquery-on-a-grouping-operation.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/grouping-data" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-perform-custom-join-operations.md", - "redirect_url": "/dotnet/csharp/linq/" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-perform-grouped-joins.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/join-operations" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-perform-inner-joins.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/join-operations" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-perform-left-outer-joins.md", - "redirect_url": "/dotnet/csharp/linq/standard-query-operators/join-operations" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-query-a-collection-of-objects.md", - "redirect_url": "/dotnet/csharp/linq/get-started/introduction-to-linq-queries" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-return-a-query-from-a-method.md", - "redirect_url": "/dotnet/csharp/linq/get-started/features-that-support-linq#expressions-as-data" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-store-the-results-of-a-query-in-memory.md", - "redirect_url": "/dotnet/csharp/linq/get-started/introduction-to-linq-queries" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/how-to-write-linq-queries.md", - "redirect_url": "/dotnet/csharp/linq/get-started/write-linq-queries" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/index.md", - "redirect_url": "/dotnet/csharp/linq/index" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/linq-query-expressions/query-expression-basics.md", - "redirect_url": "/dotnet/csharp/linq/get-started/query-expression-basics" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/main-and-command-args/command-line-arguments.md", - "redirect_url": "/dotnet/csharp/fundamentals/program-structure/main-command-line" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/main-and-command-args/how-to-access-command-line-arguments-using-foreach.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/arrays" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/main-and-command-args/how-to-display-command-line-arguments.md", - "redirect_url": "/dotnet/csharp/fundamentals/tutorials/how-to-display-command-line-arguments" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/main-and-command-args/index.md", - "redirect_url": "/dotnet/csharp/fundamentals/program-structure/main-command-line" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/main-and-command-args/main-and-command-line-arguments.md", - "redirect_url": "/dotnet/csharp/fundamentals/program-structure/main-command-line" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/main-and-command-args/main-return-values.md", - "redirect_url": "/dotnet/csharp/fundamentals/program-structure/main-command-line" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/main-and-command-args/top-level-statements.md", - "redirect_url": "/dotnet/csharp/fundamentals/program-structure/top-level-statements" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/namespaces/how-to-use-the-global-namespace-alias.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/namespace-alias-qualifier" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/namespaces/how-to-use-the-my-namespace.md", - "redirect_url": "/dotnet/csharp/fundamentals/program-structure/namespaces" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/namespaces/index.md", - "redirect_url": "/dotnet/csharp/fundamentals/program-structure/namespaces" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/namespaces/using-namespaces.md", - "redirect_url": "/dotnet/csharp/fundamentals/program-structure/namespaces" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/nullable-types/boxing-nullable-types.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/nullable-value-types" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/nullable-types/how-to-identify-a-nullable-type.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/nullable-value-types#how-to-identify-a-nullable-value-type" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/nullable-types/how-to-safely-cast-from-bool-to-bool.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/nullable-value-types" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/nullable-types/index.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/nullable-value-types" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/nullable-types/using-nullable-types.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/nullable-value-types" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/statements-expressions-operators/anonymous-functions.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/lambda-expressions" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/statements-expressions-operators/anonymous-methods.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/delegate-operator" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/statements-expressions-operators/conversion-operators.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/user-defined-conversion-operators" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/statements-expressions-operators/default-value-expressions.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/default" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/statements-expressions-operators/expressions.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/index" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/statements-expressions-operators/how-to-implement-user-defined-conversions-between-structs.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/user-defined-conversion-operators" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/statements-expressions-operators/how-to-use-lambda-expressions-in-a-query.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/lambda-expressions" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/statements-expressions-operators/how-to-use-lambda-expressions-outside-linq.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/lambda-expressions" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/statements-expressions-operators/how-to-use-operator-overloading-to-create-a-complex-number-class.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/operator-overloading" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/statements-expressions-operators/index.md", - "redirect_url": "/dotnet/csharp/programming-guide/statements-expressions-operators/statements" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/statements-expressions-operators/lambda-expressions.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/lambda-expressions" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/statements-expressions-operators/operators.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/index" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/statements-expressions-operators/overloadable-operators.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/operator-overloading#overloadable-operators" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/statements-expressions-operators/using-conversion-operators.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/user-defined-conversion-operators" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/strings/how-to-compare-strings.md", - "redirect_url": "/dotnet/csharp/how-to/compare-strings" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/strings/how-to-concatenate-multiple-strings.md", - "redirect_url": "/dotnet/csharp/how-to/concatenate-multiple-strings" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/strings/how-to-convert-a-string-to-a-datetime.md", - "redirect_url": "/dotnet/standard/base-types/parsing-datetime" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/strings/how-to-convert-between-legacy-encondings-and-unicode.md", - "redirect_url": "/previous-versions/visualstudio/visual-studio-2013/cc165448(v=vs.120)" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/strings/how-to-convert-rtf-to-plain-text.md", - "redirect_url": "/previous-versions/visualstudio/visual-studio-2013/cc488002(v=vs.120)" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/strings/how-to-modify-string-contents.md", - "redirect_url": "/dotnet/csharp/how-to/modify-string-contents" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/strings/how-to-parse-strings-using-string-split.md", - "redirect_url": "/dotnet/csharp/how-to/parse-strings-using-split" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/strings/how-to-search-strings-using-regular-expressions.md", - "redirect_url": "/dotnet/csharp/how-to/search-strings" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/strings/how-to-search-strings-using-string-methods.md", - "redirect_url": "/dotnet/csharp/how-to/search-strings" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/types/how-to-safely-cast-using-as-and-is-operators.md", - "redirect_url": "/dotnet/csharp/fundamentals/tutorials/safely-cast-using-pattern-matching-is-and-as-operators" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/types/index.md", - "redirect_url": "/dotnet/csharp/fundamentals/types" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/types/using-type-dynamic.md", - "redirect_url": "/dotnet/csharp/advanced-topics/interop/using-type-dynamic" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/types/walkthrough-creating-and-using-dynamic-objects.md", - "redirect_url": "/dotnet/csharp/advanced-topics/interop/walkthrough-creating-and-using-dynamic-objects" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/unsafe-code-pointers/arithmetic-operations-on-pointers.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/pointer-related-operators#pointer-arithmetic-operators" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/unsafe-code-pointers/fixed-size-buffers.md", - "redirect_url": "/dotnet/csharp/language-reference/unsafe-code#fixed-size-buffers" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/unsafe-code-pointers/how-to-access-a-member-with-a-pointer.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/pointer-related-operators#pointer-member-access-operator--" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/unsafe-code-pointers/how-to-access-an-array-element-with-a-pointer.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/pointer-related-operators#pointer-element-access-operator-" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/unsafe-code-pointers/how-to-increment-and-decrement-pointers.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/pointer-related-operators#pointer-increment-and-decrement" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/unsafe-code-pointers/how-to-obtain-the-address-of-a-variable.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/pointer-related-operators#address-of-operator-" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/unsafe-code-pointers/how-to-obtain-the-value-of-a-pointer-variable.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/pointer-related-operators#pointer-indirection-operator-" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/unsafe-code-pointers/how-to-use-pointers-to-copy-an-array-of-bytes.md", - "redirect_url": "/dotnet/csharp/language-reference/unsafe-code#how-to-use-pointers-to-copy-an-array-of-bytes" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/unsafe-code-pointers/index.md", - "redirect_url": "/dotnet/csharp/language-reference/unsafe-code" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/unsafe-code-pointers/manipulating-pointers.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/pointer-related-operators" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/unsafe-code-pointers/pointer-comparison.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/pointer-related-operators#pointer-comparison-operators" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/unsafe-code-pointers/pointer-conversions.md", - "redirect_url": "/dotnet/csharp/language-reference/unsafe-code#pointer-types" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/unsafe-code-pointers/pointer-expressions.md", - "redirect_url": "/dotnet/csharp/language-reference/operators/pointer-related-operators" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/unsafe-code-pointers/pointer-types.md", - "redirect_url": "/dotnet/csharp/language-reference/unsafe-code#pointer-types" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/code-inline.md", - "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/code.md", - "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/cref-attribute.md", - "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/delimiters-for-documentation-tags.md", - "redirect_url": "/dotnet/csharp/programming-guide/xmldoc" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/example.md", - "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/exception.md", - "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/how-to-use-the-xml-documentation-features.md", - "redirect_url": "/dotnet/csharp/language-reference/xmldoc" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/include.md", - "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/index.md", - "redirect_url": "/dotnet/csharp/language-reference/xmldoc" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/inheritdoc.md", - "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/list.md", - "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/para.md", - "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/param.md", - "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/paramref.md", - "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/permission.md", - "redirect_url": "/dotnet/csharp/language-reference/xmldoc/index" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/processing-the-xml-file.md", - "redirect_url": "/dotnet/csharp/language-reference/xmldoc" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/processing-the-xml-file.md#id-strings", - "redirect_url": "/dotnet/csharp/language-reference/xmldoc#id-strings" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/recommended-tags-for-documentation-comments.md", - "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/remarks.md", - "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/returns.md", - "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/see.md", - "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/seealso.md", - "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/summary.md", - "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/typeparam.md", - "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/typeparamref.md", - "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/value.md", - "redirect_url": "/dotnet/csharp/language-reference/xmldoc/recommended-tags" - }, - { - "source_path_from_root": "/docs/csharp/programming-guide/xmldoc/xml-documentation-comments.md", - "redirect_url": "/dotnet/csharp/programming-guide/xmldoc" - }, - { - "source_path_from_root": "/docs/csharp/properties.md", - "redirect_url": "/dotnet/csharp/programming-guide/classes-and-structs/properties" - }, - { - "source_path_from_root": "/docs/csharp/quick-starts/arrays-and-collections.md", - "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials/list-collection", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/quick-starts/branches-and-loops-local.md", - "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials/branches-and-loops", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/quick-starts/branches-and-loops.md", - "redirect_url": "/dotnet/csharp/tutorials/intro-to-csharp/branches-and-loops" - }, - { - "source_path_from_root": "/docs/csharp/quick-starts/hello-world.md", - "redirect_url": "/dotnet/csharp/tutorials/intro-to-csharp/hello-world" - }, - { - "source_path_from_root": "/docs/csharp/quick-starts/index.md", - "redirect_url": "/dotnet/csharp/tutorials/intro-to-csharp/", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/quick-starts/interpolated-strings-local.md", - "redirect_url": "/dotnet/csharp/tutorials/string-interpolation" - }, - { - "source_path_from_root": "/docs/csharp/quick-starts/interpolated-strings.yml", - "redirect_url": "/dotnet/csharp/tutorials/string-interpolation", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/quick-starts/introduction-to-classes.md", - "redirect_url": "/dotnet/csharp/fundamentals/tutorials/classes", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/quick-starts/list-collection.md", - "redirect_url": "/dotnet/csharp/tutorials/intro-to-csharp/list-collection" - }, - { - "source_path_from_root": "/docs/csharp/quick-starts/local-environment.md", - "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials/", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/quick-starts/numbers-in-csharp-local.md", - "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials/numbers-in-csharp", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/quick-starts/numbers-in-csharp.md", - "redirect_url": "/dotnet/csharp/tutorials/intro-to-csharp/numbers-in-csharp" - }, - { - "source_path_from_root": "/docs/csharp/reference-semantics-with-value-types.md", - "redirect_url": "/dotnet/csharp/advanced-topics/performance" - }, - { - "source_path_from_root": "/docs/csharp/reflection.md", - "redirect_url": "/dotnet/framework/reflection-and-codedom" - }, - { - "source_path_from_root": "/docs/csharp/roslyn/index.md", - "redirect_url": "/dotnet/csharp/roslyn-sdk/" - }, - { - "source_path_from_root": "/docs/csharp/roslyn-sdk/source-generators-overview.md", - "redirect_url": "/dotnet/csharp/roslyn-sdk/#source-generators" - }, - { - "source_path_from_root": "/docs/csharp/whats-new/tutorials/static-abstract-interface-methods.md", - "redirect_url": "/dotnet/advanced-topics/interface-implementation/static-virtual-interface-members" - }, - { - "source_path_from_root": "/docs/csharp/whats-new/tutorials/static-virtual-interface-members.md", - "redirect_url": "/dotnet/advanced-topics/interface-implementation/static-virtual-interface-members" - }, - { - "source_path_from_root": "/docs/csharp/whats-new/tutorials/top-level-statements.md", - "redirect_url": "/dotnet/csharp/tutorials/top-level-statements" - }, - { - "source_path_from_root": "/docs/csharp/whats-new/tutorials/records.md", - "redirect_url": "/dotnet/csharp/tutorials/records" - }, - { - "source_path_from_root": "/docs/csharp/structs.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/struct" - }, - { - "source_path_from_root": "/docs/csharp/tour-of-csharp/arrays.md", - "redirect_url": "/dotnet/csharp/tour-of-csharp" - }, - { - "source_path_from_root": "/docs/csharp/tour-of-csharp/attributes.md", - "redirect_url": "/dotnet/csharp/tour-of-csharp" - }, - { - "source_path_from_root": "/docs/csharp/tour-of-csharp/delegates.md", - "redirect_url": "/dotnet/csharp/tour-of-csharp" - }, - { - "source_path_from_root": "/docs/csharp/tour-of-csharp/enums.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/enum" - }, - { - "source_path_from_root": "/docs/csharp/tour-of-csharp/expressions.md", - "redirect_url": "/dotnet/csharp/tour-of-csharp" - }, - { - "source_path_from_root": "/docs/csharp/tour-of-csharp/interfaces.md", - "redirect_url": "/dotnet/csharp/tour-of-csharp" - }, - { - "source_path_from_root": "/docs/csharp/tour-of-csharp/program-structure.md", - "redirect_url": "/dotnet/csharp/tour-of-csharp" - }, - { - "source_path_from_root": "/docs/csharp/tour-of-csharp/statements.md", - "redirect_url": "/dotnet/csharp/tour-of-csharp" - }, - { - "source_path_from_root": "/docs/csharp/tour-of-csharp/structs.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/struct" - }, - { - "source_path_from_root": "/docs/csharp/tour-of-csharp/types-and-variables.md", - "redirect_url": "/dotnet/csharp/tour-of-csharp" - }, - { - "source_path_from_root": "/docs/csharp/tour-of-csharp/features.md", - "redirect_url": "/dotnet/csharp/tour-of-csharp" - }, - { - "source_path_from_root": "/docs/csharp/tour-of-csharp/program-building-blocks.md", - "redirect_url": "/dotnet/csharp/tour-of-csharp" - }, - { - "source_path_from_root": "/docs/csharp/tour-of-csharp/types.md", - "redirect_url": "/dotnet/csharp/tour-of-csharp" - }, - { - "source_path_from_root": "/docs/csharp/tour-of-csharp/tutorials/arrays-and-collections.md", - "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials/list-collection" - }, - { - "source_path_from_root": "/docs/csharp/tour-of-csharp/tutorials/local-environment.md", - "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials" - }, - { - "source_path_from_root": "/docs/csharp/tour-of-csharp/tutorials/branches-and-loops-local.md", - "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials/branches-and-loops" - }, - { - "source_path_from_root": "/docs/csharp/tour-of-csharp/tutorials/numbers-in-csharp-local.md", - "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials/numbers-in-csharp" - }, - { - "source_path_from_root": "/docs/csharp/tuples.md", - "redirect_url": "/dotnet/csharp/language-reference/builtin-types/value-tuples" - }, - { - "source_path_from_root": "/docs/csharp/tutorials/attributes.md", - "redirect_url": "/dotnet/csharp/advanced-topics/reflection-and-attributes/attribute-tutorial" - }, - { - "source_path_from_root": "/docs/csharp/tutorials/default-interface-members-versions.md", - "redirect_url": "/dotnet/csharp/advanced-topics/interface-implementation/default-interface-methods-versions" - }, - { - "source_path_from_root": "/docs/csharp/tutorials/default-interface-methods-versions.md", - "redirect_url": "/dotnet/csharp/advanced-topics/interface-implementation/default-interface-methods-versions" - }, - { - "source_path_from_root": "/docs/csharp/tutorials/exploration/csharp-6.yml", - "redirect_url": "/dotnet/csharp/whats-new/csharp-version-history#c-version-70" - }, - { - "source_path_from_root": "/docs/csharp/tutorials/exploration/csharp-7.yml", - "redirect_url": "/dotnet/csharp/whats-new/csharp-version-history#c-version-70" - }, - { - "source_path_from_root": "/docs/csharp/tutorials/exploration/patterns-objects.md", - "redirect_url": "/dotnet/csharp/tutorials/patterns-objects" - }, - { - "source_path_from_root": "/docs/csharp/tutorials/exploration/records.md", - "redirect_url": "/dotnet/csharp/tutorials/records" - }, - { - "source_path_from_root": "/docs/csharp/tutorials/exploration/top-level-statements.md", - "redirect_url": "/dotnet/csharp/tutorials/top-level-statements" - }, - { - "source_path_from_root": "/docs/csharp/tutorials/exploration/interpolated-strings-local.md", - "redirect_url": "/dotnet/csharp/tutorials/string-interpolation" - }, - { - "source_path_from_root": "/docs/csharp/tutorials/exploration/interpolated-strings.yml", - "redirect_url": "/dotnet/csharp/tutorials/string-interpolation" - }, - { - "source_path_from_root": "/docs/csharp/tutorials/generate-consume-asynchronous-stream.md", - "redirect_url": "/dotnet/csharp/asynchronous-programming/generate-consume-asynchronous-stream" - }, - { - "source_path_from_root": "/docs/csharp/tutorials/index.md", - "redirect_url": "/dotnet/csharp/fundamentals/tutorials/how-to-display-command-line-arguments" - }, - { - "source_path_from_root": "/docs/csharp/tutorials/inheritance.md", - "redirect_url": "/dotnet/csharp/fundamentals/object-oriented/inheritance" - }, - { - "source_path_from_root": "/docs/csharp/tutorials/intro-to-csharp/arrays-and-collections.md", - "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials/list-collection" - }, - { - "source_path_from_root": "/docs/csharp/tutorials/intro-to-csharp/branches-and-loops-local.md", - "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials/branches-and-loops" - }, - { - "source_path_from_root": "/docs/csharp/tutorials/intro-to-csharp/branches-and-loops.yml", - "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials/branches-and-loops" - }, - { - "source_path_from_root": "/docs/csharp/tutorials/intro-to-csharp/hello-world.yml", - "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials/hello-world" - }, - { - "source_path_from_root": "/docs/csharp/tutorials/intro-to-csharp/index.md", - "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials/" - }, - { - "source_path_from_root": "/docs/csharp/tutorials/intro-to-csharp/interpolated-strings-local.md", - "redirect_url": "/dotnet/csharp/tutorials/interpolated-strings" - }, - { - "source_path_from_root": "/docs/csharp/tutorials/intro-to-csharp/interpolated-strings.yml", - "redirect_url": "/dotnet/csharp/tutorials/interpolated-strings" - }, - { - "source_path_from_root": "/docs/csharp/tutorials/intro-to-csharp/introduction-to-classes.md", - "redirect_url": "/dotnet/csharp/fundamentals/tutorials/classes" - }, - { - "source_path_from_root": "/docs/csharp/tutorials/intro-to-csharp/list-collection.yml", - "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials/list-collection" - }, - { - "source_path_from_root": "/docs/csharp/tutorials/intro-to-csharp/local-environment.md", - "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials" - }, - { - "source_path_from_root": "/docs/csharp/tutorials/mixins-with-default-interface-methods.md", - "redirect_url": "/dotnet/csharp/advanced-topics/interface-implementation/mixins-with-default-interface-methods" - }, - { - "source_path_from_root": "/docs/csharp/tutorials/intro-to-csharp/numbers-in-csharp-local.md", - "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials/numbers-in-csharp" - }, - { - "source_path_from_root": "/docs/csharp/tutorials/intro-to-csharp/numbers-in-csharp.yml", - "redirect_url": "/dotnet/csharp/tour-of-csharp/tutorials/numbers-in-csharp" - }, - { - "source_path_from_root": "/docs/csharp/tutorials/intro-to-csharp/object-oriented-programming.md", - "redirect_url": "/dotnet/csharp/fundamentals/tutorials/oop" - }, - { - "source_path_from_root": "/docs/csharp/tutorials/microservices.md", - "redirect_url": "/dotnet/core/docker/" - }, - { - "source_path_from_root": "/docs/csharp/tutorials/pattern-matching.md", - "redirect_url": "/dotnet/csharp/fundamentals/tutorials/pattern-matching" - }, - { - "source_path_from_root": "/docs/csharp/tutorials/records.md", - "redirect_url": "/dotnet/csharp/fundamentals/tutorials/records" - }, - { - "source_path_from_root": "/docs/csharp/tutorials/upgrade-to-nullable-references.md", - "redirect_url": "/dotnet/csharp/nullable-migration-strategies" - }, - { - "source_path_from_root": "/docs/csharp/type-system.md", - "redirect_url": "/dotnet/csharp/fundamentals/types" - }, - { - "source_path_from_root": "/docs/csharp/walkthroughs.md", - "redirect_url": "/dotnet/csharp" - }, - { - "source_path_from_root": "/docs/csharp/whats-new.md", - "redirect_url": "/dotnet/csharp/whats-new/csharp-15", - "redirect_document_id": true - }, - { - "source_path_from_root": "/docs/csharp/whats-new/csharp-6.md", - "redirect_url": "/dotnet/csharp/whats-new/csharp-version-history#c-version-60" - }, - { - "source_path_from_root": "/docs/csharp/whats-new/csharp-7-1.md", - "redirect_url": "/dotnet/csharp/whats-new/csharp-version-history#c-version-71" - }, - { - "source_path_from_root": "/docs/csharp/whats-new/csharp-7-2.md", - "redirect_url": "/dotnet/csharp/whats-new/csharp-version-history#c-version-72" - }, - { - "source_path_from_root": "/docs/csharp/whats-new/csharp-7-3.md", - "redirect_url": "/dotnet/csharp/whats-new/csharp-version-history#c-version-73" - }, - { - "source_path_from_root": "/docs/csharp/whats-new/csharp-7.md", - "redirect_url": "/dotnet/csharp/whats-new/csharp-version-history#c-version-70" - }, - { - "source_path_from_root": "/docs/csharp/whats-new/csharp-8.md", - "redirect_url": "/dotnet/csharp/whats-new/csharp-version-history#c-version-80" - }, - { - "source_path_from_root": "/docs/csharp/whats-new/csharp-9.md", - "redirect_url": "/dotnet/csharp/whats-new/csharp-version-history#c-version-9" - }, - { - "source_path_from_root": "/docs/csharp/whats-new/csharp-10.md", - "redirect_url": "/dotnet/csharp/whats-new/csharp-version-history#c-version-10" - }, - { - "source_path_from_root": "/docs/csharp/whats-new/csharp-11.md", - "redirect_url": "/dotnet/csharp/whats-new/csharp-version-history#c-version-11" - }, - { - "source_path_from_root": "/docs/csharp/whats-new/index.md", - "redirect_url": "/dotnet/csharp/whats-new/csharp-15", - "ms.custom": "updateeachrelease" - }, - { - "source_path_from_root": "/docs/csharp/whats-new/tutorials/upgrade-to-nullable-references.md", - "redirect_url": "/dotnet/csharp/nullable-migration-strategies" - }, - { - "source_path_from_root": "/docs/csharp/whats-new/tutorials/default-interface-methods-versions.md", - "redirect_url": "/dotnet/csharp/advanced-topics/interface-implementation/default-interface-methods-versions" - }, - { - "source_path_from_root": "/docs/csharp/whats-new/tutorials/generate-consume-asynchronous-stream.md", - "redirect_url": "/dotnet/csharp/asynchronous-programming/generate-consume-asynchronous-stream" - }, - { - "source_path_from_root": "/docs/csharp/whats-new/tutorials/mixins-with-default-interface-methods.md", - "redirect_url": "/dotnet/csharp/advanced-topics/interface-implementation/mixins-with-default-interface-methods" - }, - { - "source_path_from_root": "/docs/csharp/whats-new/tutorials/nullable-reference-types.md", - "redirect_url": "/dotnet/csharp/tutorials/nullable-reference-types" - }, - { - "source_path_from_root": "/docs/csharp/whats-new/tutorials/ranges-indexes.md", - "redirect_url": "/dotnet/csharp/tutorials/ranges-indexes" - }, - { - "source_path_from_root": "/docs/csharp/whats-new/tutorials/interpolated-string-handler.md", - "redirect_url": "/dotnet/csharp/advanced-topics/performance/interpolated-string-handler" - }, - { - "source_path_from_root": "/docs/csharp/whats-new/tutorials/patterns-objects.md", - "redirect_url": "/dotnet/csharp/tutorials/patterns-objects" - }, - { - "source_path_from_root": "/docs/csharp/write-safe-efficient-code.md", - "redirect_url": "/dotnet/csharp/advanced-topics/performance" - } - ] + { + "source_path_from_root": "/redirections/proposals/csharp-9.0/nullable-reference-types-specification.md", + "redirect_url": "/dotnet/csharp/language-reference/language-specification/types#893-nullable-reference-types" + } + ] } diff --git a/docs/core/compatibility/sdk/6.0/csharp-template-code.md b/docs/core/compatibility/sdk/6.0/csharp-template-code.md index ec96037fe4635..27bb566087d6e 100644 --- a/docs/core/compatibility/sdk/6.0/csharp-template-code.md +++ b/docs/core/compatibility/sdk/6.0/csharp-template-code.md @@ -11,7 +11,7 @@ Starting in .NET 6, the project templates that ship with the .NET SDK use the la - [Global using directives](/dotnet/csharp/language-reference/language-specification/namespaces#1452-global-using-alias-directives) - [File-scoped namespaces](/dotnet/csharp/language-reference/language-specification/namespaces#143-namespace-declarations) - [Target-typed new expressions](/dotnet/csharp/language-reference/language-specification/expressions#128172-object-creation-expressions) -- [Nullable reference types](../../../../csharp/nullable-references.md) +- [Nullable reference types](../../../../csharp/fundamentals/null-safety/nullable-reference-types.md) - [Async Main return values](../../../../csharp/fundamentals/program-structure/main-command-line.md#main-return-values) Some of the latest C# language features are not supported by previous target frameworks, so you might experience issues in the following scenarios: diff --git a/docs/core/extensions/windows-service.md b/docs/core/extensions/windows-service.md index 0fb6c8d185f3e..8fab1bb1a7a30 100644 --- a/docs/core/extensions/windows-service.md +++ b/docs/core/extensions/windows-service.md @@ -53,7 +53,7 @@ After successfully adding the packages, your project file should now contain the ## Update project file -This worker project makes use of C#'s [nullable reference types](../../csharp/nullable-references.md). To enable them for the entire project, update the project file accordingly: +This worker project makes use of C#'s [nullable reference types](../../csharp/fundamentals/null-safety/nullable-reference-types.md). To enable them for the entire project, update the project file accordingly: :::code language="xml" source="snippets/workers/windows-service/App.WindowsService.csproj" range="1-7,12-20" highlight="5"::: diff --git a/docs/core/whats-new/dotnet-5.md b/docs/core/whats-new/dotnet-5.md index 1dd3cf5e6d669..f3508c9c21f65 100644 --- a/docs/core/whats-new/dotnet-5.md +++ b/docs/core/whats-new/dotnet-5.md @@ -24,7 +24,7 @@ ASP.NET Core 5.0 is based on .NET 5 but retains the name "Core" to avoid confusi - [App trimming](https://devblogs.microsoft.com/dotnet/app-trimming-in-net-5) - Windows Arm64 and Arm64 intrinsics - Tooling support for dump debugging -- The runtime libraries are 80% annotated for [nullable reference types](../../csharp/nullable-references.md) +- The runtime libraries are 80% annotated for [nullable reference types](../../csharp/fundamentals/null-safety/nullable-reference-types.md) - Performance improvements: - [Garbage Collection (GC)](https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-5/#gc) - [System.Text.Json](https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-5/#json) diff --git a/docs/core/whats-new/dotnet-core-3-0.md b/docs/core/whats-new/dotnet-core-3-0.md index 3e3011f5bc28f..f3651754f5479 100644 --- a/docs/core/whats-new/dotnet-core-3-0.md +++ b/docs/core/whats-new/dotnet-core-3-0.md @@ -28,7 +28,7 @@ C# 8.0 is also part of this release, which includes the [nullable reference type Tutorials related to C# 8.0 language features: -- [Tutorial: Express your design intent more clearly with nullable and non-nullable reference types](../../csharp/tutorials/nullable-reference-types.md) +- [Tutorial: Express your design intent more clearly with nullable and non-nullable reference types](../../csharp/fundamentals/tutorials/nullable-reference-types.md) - [Tutorial: Generate and consume async streams using C# 8.0 and .NET Core 3.0](../../csharp/asynchronous-programming/generate-consume-asynchronous-stream.md) - [Tutorial: Use pattern matching to build type-driven and data-driven algorithms](../../csharp/fundamentals/tutorials/pattern-matching.md) diff --git a/docs/csharp/fundamentals/null-safety/migration-strategies.md b/docs/csharp/fundamentals/null-safety/migration-strategies.md new file mode 100644 index 0000000000000..98c27266e3a25 --- /dev/null +++ b/docs/csharp/fundamentals/null-safety/migration-strategies.md @@ -0,0 +1,91 @@ +--- +title: Nullable migration strategies +description: Learn how to enable nullable reference types in an existing C# codebase. Choose a default context, address warnings progressively, and fully migrate. +ms.date: 05/04/2026 +ms.topic: concept-article +ms.subservice: null-safety +ai-usage: ai-assisted +--- +# Nullable migration strategies + +> [!TIP] +> **Starting a new project?** New projects created from .NET 6 or later templates already have `enable` set. You don't need a migration strategy—skip to [Resolve nullable warnings](resolve-warnings.md). +> +> **Maintaining an existing codebase?** Read [Nullable reference types](nullable-reference-types.md) first to understand contexts, annotations, and null-state. This article assumes you're familiar with those concepts and ready to plan a rollout. + +When you turn on nullable reference types in a project that wasn't built for the feature, the compiler produces many warnings at once. Migration is about *sequencing* the work: choosing a default context, exposing warnings file by file or section by section, and converging on `enable` for the whole project. The right sequence depends on how active the codebase is and how much risk you can take in a single pass. + +The end state is the same in every case—the project sets `enable` and contains no `#nullable` preprocessor directives. + +## Choose a default context + +The nullable context has two independent flags: *annotations* (whether `?` declares a nullable reference type) and *warnings* (whether the compiler emits diagnostics). You set them together as a single `` value: + +| Default value | Annotations | Warnings | Best for | +| --------------------- | :---------: | :------: | --------------------------------------------------------------------- | +| `disable` *(implicit)* | off | off | Stable libraries that won't take new feature work in this pass. | +| `enable` | on | on | Active codebases with frequent new files. New code starts opted in. | +| `warnings` | off | on | Two-phase migration: address warnings first, annotate later. | +| `annotations` | on | off | Annotate the public API before fixing the internal warnings. | + +Pick the strategy that makes the next file you create do the right thing automatically: + +- **Disable as the default.** Add `#nullable enable` at the top of each file as you migrate it. Existing files stay nullable-oblivious until you touch them. This is the lowest-friction option for stable libraries because new feature work is rare. +- **Enable as the default.** Set `enable` and add `#nullable disable` at the top of every file you haven't migrated yet. Every new file is nullable-aware from the start, so the migration backlog can only shrink. This is the better choice when development is active. +- **Warnings as the default.** Choose this default for a two-phase migration: address warnings while every reference type is still treated as oblivious, then turn on annotations. The two-phase split keeps each step's diff focused. +- **Annotations as the default.** Start by annotating your public API (`?` on members that allow `null`) before chasing warnings. The compiler doesn't emit warnings yet, so you can settle the API surface without distraction. + +Your project file controls the global default. The `#nullable` preprocessor directives override it locally: + +:::code language="xml" source="snippets/migration-strategies/project-snippet.xml"::: + +:::code language="csharp" source="snippets/migration-strategies/Program.cs" id="DirectiveOverrides"::: + +## Migrate file by file + +The most predictable way to migrate a large project is to enable warnings or annotations file by file. The pattern is the same regardless of which default you picked: + +1. Pick a file. Start with the deepest leaf types in your dependency graph, then move outward. Annotating a type causes new warnings in its callers, so working bottom-up minimizes rework. +1. Add the `#nullable` directive that opts the file into the new behavior. Use `#nullable enable` if you want both flags. Use `#nullable enable warnings` for warning-only. +1. Address the warnings in the file using the techniques in [Resolve nullable warnings](resolve-warnings.md). +1. Repeat for the next file. +1. When every file in the project has its directive, remove the directives and set `enable` at the project level. + +If your codebase already has `enable` and you're driving the *opposite* direction—suppressing warnings in unmigrated files until you're ready—use `#nullable disable` to opt files out, then remove the suppressions one at a time. + +## Migrate in two phases + +A two-phase migration separates the two kinds of work that nullable reference types involve: + +1. **Phase 1 — Address warnings.** Set the project default to `warnings`. Reference types remain nullable-oblivious, so the type system doesn't change yet. The compiler emits warnings everywhere your existing code might already throw a . Add null checks, restructure flow, or apply attributes until the project is warning-clean. Each fix makes the production code more resilient even before annotations exist. +1. **Phase 2 — Add annotations.** Switch the project default to `enable`. Reference types are now non-nullable by default, and `var` locals become nullable. New warnings reflect declarations that don't match how the variables are used. Add `?` to types that should allow `null`. Tighten APIs that should require non-null inputs. + +The advantage of separating the phases is that each diff is smaller and reviewable. Phase 1 changes only behavior; phase 2 changes only types. The disadvantage is that you visit each file twice. For mature, stable code where every change carries risk, the two passes are usually worth it. + +## Generated code is excluded + +The compiler treats files marked as generated as if the nullable context were disabled, regardless of the project's setting. A file is considered generated when any of the following is true: + +- An `.editorconfig` rule sets `generated_code = true` for the file. +- The first comment in the file contains `` or ``. +- The file name starts with `TemporaryGeneratedFile_`. +- The file name ends with `.designer.cs`, `.generated.cs`, `.g.cs`, or `.g.i.cs`. + +Generators that produce nullable-aware output can opt back in by emitting `#nullable enable` at the top of the generated file. + +## When you're done + +After every file participates in the project default and the `enable` element is set: + +- Remove every `#nullable` directive in your source. +- Remove `null!` and `default!` initializers that you added only to silence warnings during migration. Replace them with proper initialization, or change the member type to nullable. +- Spot-check the public API. Every member that returns or accepts `null` should be annotated with `?`. The annotations are part of your contract once the package ships. + +You're now in the same state as new projects: nullable reference types are part of the type system, and any new warnings reflect a real mismatch between declarations and code. Use [Resolve nullable warnings](resolve-warnings.md) to address them as they come up. + +## Related content + +- [Nullable reference types](nullable-reference-types.md) +- [Resolve nullable warnings](resolve-warnings.md) +- [Nullable static analysis attributes](../../language-reference/attributes/nullable-analysis.md) +- [Working with nullable reference types in EF Core](/ef/core/miscellaneous/nullable-reference-types) diff --git a/docs/csharp/fundamentals/null-safety/nullable-reference-types.md b/docs/csharp/fundamentals/null-safety/nullable-reference-types.md new file mode 100644 index 0000000000000..24ef89469c02c --- /dev/null +++ b/docs/csharp/fundamentals/null-safety/nullable-reference-types.md @@ -0,0 +1,126 @@ +--- +title: Nullable reference types +description: Use nullable reference types to express your intent about which variables can be null. The compiler then warns when your code might dereference null. +ms.date: 05/04/2026 +ms.topic: concept-article +ms.subservice: null-safety +ai-usage: ai-assisted +--- +# Nullable reference types + +> [!TIP] +> **New to developing software?** Start with the [Get started](../../tour-of-csharp/tutorials/index.md) tutorials first. You'll see warnings about possible `null` values once you compile any project that has nullable reference types enabled. +> +> **Experienced in another language?** If you've worked with Kotlin's nullable types, TypeScript's `strictNullChecks`, or Swift's optionals, the model is familiar. C# uses static analysis and warning diagnostics instead of a separate type. Skim [Express intent with annotations](#express-intent-with-annotations) and [Null-state analysis](#null-state-analysis), then jump to the [Tutorial: Express your design intent with nullable and non-nullable reference types](../tutorials/nullable-reference-types.md) to apply the feature. + +*Nullable reference types* are a group of features that minimize the chance your code throws . You declare which variables are intended to hold `null` and which aren't, and the compiler warns when those declarations don't match how your code uses them. The runtime behavior of your program is unchanged—nullable reference types are entirely a compile-time feature. + +Three building blocks work together: + +- *Variable annotations* (`string` vs. `string?`) express which references are intended to allow `null`. +- *Null-state analysis* tracks whether the value of an expression is known to be `null` or known not to be `null` at each point in your code. +- *Attributes* on APIs describe more nuanced contracts, such as "this argument can be `null`, but the return value is null only when the argument is null." + +The compiler combines these signals to produce diagnostics. Warnings on a non-nullable variable mean the variable might receive `null`. Warnings on a nullable variable mean the code might dereference it without a null check. Either kind of warning is a hint that the code's behavior doesn't match its stated design. + +## Enable nullable reference types + +For new projects targeting .NET 6 or later, the `enable` element is in the project template by default. To enable the feature in an existing project, add it manually: + +:::code language="xml" source="snippets/nullable-reference-types/project-snippet.xml"::: + +For migration approaches that enable the feature gradually—file by file or warning-only first—see [Nullable migration strategies](migration-strategies.md). + +## Express intent with annotations + +When the feature is enabled, every reference type variable is *non-nullable* by default. Append `?` to declare a *nullable* reference type: + +:::code language="csharp" source="snippets/nullable-reference-types/Program.cs" id="Annotations"::: + +The annotation doesn't change the runtime type. `string` and `string?` are both . The `?` is a hint to the compiler about your intent. That intent shapes the warnings the compiler produces: + +- A non-nullable variable has a default *null-state* of *not-null*. The compiler warns if you assign a value that might be `null`. +- A nullable variable has a default *null-state* of *maybe-null*. The compiler warns if you dereference the variable without first checking it. + +Use the annotation to make required and optional values visible in the type system. A `Person` whose name must always be set is different from a `Person` whose middle name might be missing: + +:::code language="csharp" source="snippets/nullable-reference-types/Program.cs" id="DesignIntent"::: + +The compiler enforces the difference: code that passes a maybe-null value where a non-nullable one is expected produces a warning. The compiler also warns when a constructor leaves a non-nullable member uninitialized. + +## Null-state analysis + +The compiler tracks the *null-state* of every expression. The state is one of two values: + +- *not-null* — the expression is known to be not `null`. +- *maybe-null* — the expression might be `null`. + +Local variables move between these states as your code runs. Assigning a non-null value or checking against `null` makes a variable *not-null*. Assigning a *maybe-null* expression or returning from a method without further information makes it *maybe-null*: + +:::code language="csharp" source="snippets/nullable-reference-types/Program.cs" id="NullStateTracking"::: + +In the preceding example, the first dereference produces a warning because `message` is *maybe-null*. After the assignment to a non-null literal, the compiler knows `message` is *not-null*, so the second dereference is safe. The third statement warns because `originalMessage` was captured while it was still `null`. + +Null-state analysis works across `if` checks, pattern matching, and control flow that loops or returns early: + +:::code language="csharp" source="snippets/nullable-reference-types/Program.cs" id="FlowAnalysis"::: + +The analysis doesn't trace into the bodies of methods. If you need a method to communicate null-state to its callers, use [nullable analysis attributes](../../language-reference/attributes/nullable-analysis.md) on its signature. + +## Override the warnings with `!` + +Sometimes you know more than the compiler. The *null-forgiving operator* `!` declares that an expression is *not-null*, even when the analysis says otherwise: + +:::code language="csharp" source="snippets/nullable-reference-types/Program.cs" id="NullForgiving"::: + +Use `!` sparingly. Each occurrence is a place the compiler can no longer protect you. Prefer adding a null check, restructuring the code, or annotating the relevant API so the compiler reaches the right conclusion on its own. + +## Attributes that describe API contracts + +Annotations on a parameter or return type aren't always expressive enough. A method might accept a possibly-null argument but guarantee a non-null result. A test method might return `true` only when its argument isn't null. Use the [nullable analysis attributes](../../language-reference/attributes/nullable-analysis.md) to convey these contracts: + +:::code language="csharp" source="snippets/nullable-reference-types/Program.cs" id="NullAnalysisAttributes"::: + +The tells the compiler that when `IsPresent` returns `true`, the argument is *not-null*. Inside the `if` block, the compiler treats `value` as *not-null* with no null-forgiving operator required. As of .NET 5, all .NET runtime APIs are annotated, so the analysis benefits any code that calls them. + +## Generics + +Generic type parameters can be reference types or value types, so `T?` follows different rules depending on the type argument: + +- If `T` is a non-nullable reference type, `T?` is the corresponding nullable reference type. +- If `T` is a value type, `T?` is the same value type. (Add the `struct` constraint to get behavior.) +- If `T` is already nullable, `T?` is the same type. + +Constraints refine the rules: + +- `class` requires a non-nullable reference type. +- `class?` allows either a nullable or a non-nullable reference type. +- `notnull` requires a non-nullable reference or value type. + +The constraints help the compiler reason about how a generic type parameter is used: + +:::code language="csharp" source="snippets/nullable-reference-types/Program.cs" id="Generics"::: + +## Known pitfalls + +Two patterns can leave a non-nullable reference holding `null` without a warning. Both are limitations of the static analysis, not bugs in your code. + +**Default structs.** A struct with non-nullable reference fields can be created with `default` or `new()`, leaving its fields uninitialized: + +:::code language="csharp" source="snippets/nullable-reference-types/Program.cs" id="DefaultStructPitfall"::: + +The fields hold `null` at run time, but the compiler doesn't warn. If you must use a struct, prefer required members or a parameterized constructor that callers must invoke. + +**Arrays of references.** A new array of a non-nullable reference type contains all `null` elements until you assign each one: + +:::code language="csharp" source="snippets/nullable-reference-types/Program.cs" id="ArrayPitfall"::: + +Initialize array elements as soon as you create the array. Collection expressions and target-typed `new` make full initialization concise. + +## Related content + +- [Tutorial: Express your design intent with nullable and non-nullable reference types](../tutorials/nullable-reference-types.md) +- [Resolve nullable warnings](resolve-warnings.md) +- [Nullable migration strategies](migration-strategies.md) +- [Nullable static analysis attributes](../../language-reference/attributes/nullable-analysis.md) +- [Resolve nullable warnings (compiler reference)](../../language-reference/compiler-messages/nullable-warnings.md) diff --git a/docs/csharp/fundamentals/null-safety/resolve-warnings.md b/docs/csharp/fundamentals/null-safety/resolve-warnings.md new file mode 100644 index 0000000000000..a2e13b6e46167 --- /dev/null +++ b/docs/csharp/fundamentals/null-safety/resolve-warnings.md @@ -0,0 +1,132 @@ +--- +title: Resolve nullable warnings +description: Learn the five techniques you use to address nullable warnings in C# and make your code resilient to null reference exceptions. +ms.date: 05/04/2026 +ms.topic: concept-article +ms.subservice: null-safety +ai-usage: ai-assisted +--- +# Resolve nullable warnings + +> [!TIP] +> **New to nullable reference types?** Read [Nullable reference types](nullable-reference-types.md) first to understand annotations and null-state analysis. This article assumes you're seeing warnings in a project where the feature is enabled. +> +> **Looking for a specific compiler error code?** The [Resolve nullable warnings](../../language-reference/compiler-messages/nullable-warnings.md) reference article catalogs every CS86xx warning with the matching technique. + +When you enable nullable reference types, the compiler issues warnings everywhere your code's behavior doesn't match its annotations. Most warnings fall into a small set of patterns. Once you recognize the pattern, the fix is usually one of five techniques: + +- Configure the nullable context. +- Add a null check. +- Add or remove a `?` or `!` annotation. +- Add an attribute that describes the null contract. +- Initialize variables correctly. + +This article walks through each technique with a representative example. The goal isn't to silence warnings; it's to make the code's null-handling intent explicit so the compiler reaches the same conclusions you do. + +## Configure the nullable context + +The first warnings you see in an existing project often have nothing to do with your code's logic. They're about the nullable context itself: + +- The annotation `?` is used while annotations are disabled. +- A `` value isn't recognized. +- A `#nullable` directive is malformed. + +Enable the feature project-wide in your `.csproj`: + +:::code language="xml" source="snippets/resolve-warnings/project-snippet.xml"::: + +Or scope it to part of a file with a preprocessor directive: + +:::code language="csharp" source="snippets/resolve-warnings/Program.cs" id="NullableDirective"::: + +The context has two independent flags. The *annotation* flag controls whether `?` and `!` are meaningful in declarations. The *warning* flag controls whether the compiler emits diagnostics. You can enable warnings while leaving annotations off (a useful migration step) or enable annotations while leaving warnings off (rare). For the migration trade-offs, see [Nullable migration strategies](migration-strategies.md). + +## Add a null check + +The most common warning is *possible dereference of null*. The compiler tracked a variable's null-state to *maybe-null* and saw the variable used without a check: + +:::code language="csharp" source="snippets/resolve-warnings/Program.cs" id="DereferenceWarning"::: + +The fix is usually a guard clause. Once the check runs, the compiler updates the variable's null-state to *not-null* on the safe path: + +:::code language="csharp" source="snippets/resolve-warnings/Program.cs" id="DereferenceFixed"::: + +Pattern matching, `??`, and `??=` produce the same effect: + +:::code language="csharp" source="snippets/resolve-warnings/Program.cs" id="NullOperatorsFix"::: + +For an in-depth tour of the operators, see [Null operators](null-operators.md). + +## Adjust annotations + +The compiler also warns when a *maybe-null* expression is assigned to a non-nullable variable. That warning means one of two things: + +- The variable shouldn't be non-nullable. Add a `?` to the type. +- The expression shouldn't be maybe-null. Annotate the API that produced it. + +:::code language="csharp" source="snippets/resolve-warnings/Program.cs" id="AssignmentWarning"::: + +If `Lookup` legitimately returns nothing, change the call site to accept the missing value: + +:::code language="csharp" source="snippets/resolve-warnings/Program.cs" id="AssignmentFixed"::: + +Use the null-forgiving operator `!` only when you can guarantee a value isn't null but can't express that guarantee in the type system. Each `!` is a place the compiler can no longer protect you, so prefer adding a check or annotating the source API. + +## Add a null-analysis attribute + +Sometimes the right fix isn't at the call site. A method's signature doesn't capture the relationship between its inputs and outputs precisely enough, and the compiler issues warnings inside otherwise-safe code: + +:::code language="csharp" source="snippets/resolve-warnings/Program.cs" id="MissingAttribute"::: + +The body of `IsPresent` proves the argument isn't null when the method returns `true`, but the signature doesn't say so. Add a [nullable analysis attribute](../../language-reference/attributes/nullable-analysis.md) to make the contract part of the API: + +:::code language="csharp" source="snippets/resolve-warnings/Program.cs" id="WithAttribute"::: + +Common attributes include: + +- — the argument is *not-null* when the method returns the specified Boolean. +- — the return value is *not-null* whenever the named argument is *not-null*. +- — the listed members are *not-null* after the method returns. +- — the method never returns normally (for example, it always throws). + +The full list is in [Nullable static analysis attributes](../../language-reference/attributes/nullable-analysis.md). + +## Initialize non-nullable members + +A constructor warning means a non-nullable field, property, or auto-property exits the constructor without being assigned a non-null value: + +:::code language="csharp" source="snippets/resolve-warnings/Program.cs" id="UninitializedMember"::: + +You have several ways to address it. Pick the one that best matches your design intent. + +**Require the value as a constructor argument.** Use a primary constructor or a regular constructor that initializes the property: + +:::code language="csharp" source="snippets/resolve-warnings/Program.cs" id="ConstructorInjected"::: + +**Make the property `required`.** The caller must initialize it through an object initializer: + +:::code language="csharp" source="snippets/resolve-warnings/Program.cs" id="RequiredMember"::: + +**Initialize with a default.** When the type has a meaningful empty value, initialize at the declaration: + +:::code language="csharp" source="snippets/resolve-warnings/Program.cs" id="InitializedMember"::: + +**Make the property nullable.** When the value really might be missing, change the type to nullable: + +:::code language="csharp" source="snippets/resolve-warnings/Program.cs" id="NullableMember"::: + +If a helper method initializes the member, annotate the helper with so the compiler can credit calls to it. + +## Where to go next + +When a warning doesn't fit any of these patterns, the [Resolve nullable warnings](../../language-reference/compiler-messages/nullable-warnings.md) reference article lists the technique for every CS86xx warning the compiler emits. + +To plan a migration that progressively enables nullable reference types in an existing codebase, see [Nullable migration strategies](migration-strategies.md). + +## Related content + +- [Nullable reference types](nullable-reference-types.md) +- [Null operators](null-operators.md) +- [Nullable migration strategies](migration-strategies.md) +- [Nullable static analysis attributes](../../language-reference/attributes/nullable-analysis.md) +- [Resolve nullable warnings (compiler reference)](../../language-reference/compiler-messages/nullable-warnings.md) diff --git a/docs/csharp/fundamentals/null-safety/snippets/migration-strategies/Program.cs b/docs/csharp/fundamentals/null-safety/snippets/migration-strategies/Program.cs new file mode 100644 index 0000000000000..39c53f50a605a --- /dev/null +++ b/docs/csharp/fundamentals/null-safety/snippets/migration-strategies/Program.cs @@ -0,0 +1,35 @@ +namespace MigrationStrategies; + +internal static class Examples +{ + public static void RunAll() + { + Console.WriteLine(LegacyHelper.GetGreeting("ada")); + Console.WriteLine(MigratedHelper.GetGreeting("ada")); + } +} + +// +#nullable disable +public static class LegacyHelper +{ + // This file is nullable-oblivious. Reference types use the legacy rules. + public static string GetGreeting(string name) => + name == null ? "hello" : $"hello {name}"; +} +#nullable restore + +#nullable enable +public static class MigratedHelper +{ + // This file is fully migrated. Reference types are non-nullable by default. + public static string GetGreeting(string? name) => + name is null ? "hello" : $"hello {name}"; +} +#nullable restore +// + +internal static class Program +{ + private static void Main() => Examples.RunAll(); +} diff --git a/docs/csharp/fundamentals/null-safety/snippets/migration-strategies/migration-strategies.csproj b/docs/csharp/fundamentals/null-safety/snippets/migration-strategies/migration-strategies.csproj new file mode 100644 index 0000000000000..dfb40caafcf9a --- /dev/null +++ b/docs/csharp/fundamentals/null-safety/snippets/migration-strategies/migration-strategies.csproj @@ -0,0 +1,10 @@ + + + + Exe + net10.0 + enable + enable + + + diff --git a/docs/csharp/fundamentals/null-safety/snippets/migration-strategies/project-snippet.xml b/docs/csharp/fundamentals/null-safety/snippets/migration-strategies/project-snippet.xml new file mode 100644 index 0000000000000..53fe807717199 --- /dev/null +++ b/docs/csharp/fundamentals/null-safety/snippets/migration-strategies/project-snippet.xml @@ -0,0 +1,3 @@ + + enable + diff --git a/docs/csharp/fundamentals/null-safety/snippets/nullable-reference-types/Program.cs b/docs/csharp/fundamentals/null-safety/snippets/nullable-reference-types/Program.cs new file mode 100644 index 0000000000000..2757604b4787b --- /dev/null +++ b/docs/csharp/fundamentals/null-safety/snippets/nullable-reference-types/Program.cs @@ -0,0 +1,183 @@ +using System.Diagnostics.CodeAnalysis; + +namespace NullableReferenceTypes; + +internal static class Examples +{ + public static void RunAll() + { + Annotations(); + DesignIntent(); + NullStateTracking(); + FlowAnalysis(new Node("root")); + NullForgiving(); + NullAnalysisAttributes(); + Generics(); + DefaultStructPitfall(); + ArrayPitfall(); + } + + // + public static void Annotations() + { + string required = "always set"; // non-nullable: assigning null produces a warning + string? optional = null; // nullable: holding null is allowed + + Console.WriteLine(required.Length); + + if (optional is not null) + { + Console.WriteLine(optional.Length); + } + } + // + + // + public sealed class Person(string firstName, string lastName) + { + public string FirstName { get; } = firstName; + public string? MiddleName { get; init; } + public string LastName { get; } = lastName; + + public string FullName => MiddleName is null + ? $"{FirstName} {LastName}" + : $"{FirstName} {MiddleName} {LastName}"; + } + + public static void DesignIntent() + { + Person p = new("Ada", "Lovelace") { MiddleName = "King" }; + Console.WriteLine(p.FullName); + } + // + + // + public static void NullStateTracking() + { + string? message = null; + + // Warning: dereference of a possibly null reference. + // Console.WriteLine(message.Length); + + string? originalMessage = message; + message = "Hello, World!"; + + // No warning: the compiler tracks that message is now not-null. + Console.WriteLine(message.Length); + + // Warning: originalMessage might be null. + // Console.WriteLine(originalMessage.Length); + _ = originalMessage; + } + // + + // + public sealed class Node(string name) + { + public string Name { get; } = name; + public Node? Parent { get; init; } + } + + public static void FlowAnalysis(Node start) + { + for (Node? current = start; current is not null; current = current.Parent) + { + // Inside the loop, the compiler knows current is not-null. + Console.WriteLine(current.Name); + } + } + // + + // + public static void NullForgiving() + { + string? maybeName = LookUpName("ada"); + + // The compiler can't prove maybeName isn't null. The developer can. + int length = maybeName!.Length; + Console.WriteLine(length); + } + + private static string? LookUpName(string id) => id switch + { + "ada" => "Ada Lovelace", + _ => null, + }; + // + + // + public static bool IsPresent([NotNullWhen(true)] string? value) => + !string.IsNullOrEmpty(value); + + public static void NullAnalysisAttributes() + { + string? input = ReadInput(); + + if (IsPresent(input)) + { + // No null-forgiving operator needed: the attribute tells the compiler + // input is not-null when IsPresent returns true. + Console.WriteLine(input.Length); + } + } + + private static string? ReadInput() => "hello"; + // + + // + public static T? FirstOrDefault(IEnumerable source) + { + foreach (T item in source) + { + return item; + } + return default; + } + + public static void RequireNotNull(T value) where T : notnull + { + ArgumentNullException.ThrowIfNull(value); + } + + public static void Generics() + { + string? first = FirstOrDefault([]); + Console.WriteLine(first ?? ""); + + RequireNotNull("not null"); + } + // + + // +#pragma warning disable CS0649 // Fields are deliberately uninitialized to show the pitfall. + public struct Student + { + public string FirstName; + public string? MiddleName; + public string LastName; + } +#pragma warning restore CS0649 + + public static void DefaultStructPitfall() + { + Student s = default; // No warning, but FirstName and LastName are null. + Console.WriteLine(s.FirstName?.Length ?? -1); + } + // + + // + public static void ArrayPitfall() + { + string[] values = new string[3]; // Elements are null at run time. + Console.WriteLine(values[0]?.Length ?? -1); + + string[] initialized = ["a", "b", "c"]; // Collection expression initializes every slot. + Console.WriteLine(initialized[0].Length); + } + // +} + +internal static class Program +{ + private static void Main() => Examples.RunAll(); +} diff --git a/docs/csharp/fundamentals/null-safety/snippets/nullable-reference-types/nullable-reference-types.csproj b/docs/csharp/fundamentals/null-safety/snippets/nullable-reference-types/nullable-reference-types.csproj new file mode 100644 index 0000000000000..dfb40caafcf9a --- /dev/null +++ b/docs/csharp/fundamentals/null-safety/snippets/nullable-reference-types/nullable-reference-types.csproj @@ -0,0 +1,10 @@ + + + + Exe + net10.0 + enable + enable + + + diff --git a/docs/csharp/fundamentals/null-safety/snippets/nullable-reference-types/project-snippet.xml b/docs/csharp/fundamentals/null-safety/snippets/nullable-reference-types/project-snippet.xml new file mode 100644 index 0000000000000..53fe807717199 --- /dev/null +++ b/docs/csharp/fundamentals/null-safety/snippets/nullable-reference-types/project-snippet.xml @@ -0,0 +1,3 @@ + + enable + diff --git a/docs/csharp/fundamentals/null-safety/snippets/resolve-warnings/Program.cs b/docs/csharp/fundamentals/null-safety/snippets/resolve-warnings/Program.cs new file mode 100644 index 0000000000000..46cee7fa64fd7 --- /dev/null +++ b/docs/csharp/fundamentals/null-safety/snippets/resolve-warnings/Program.cs @@ -0,0 +1,162 @@ +using System.Diagnostics.CodeAnalysis; + +namespace ResolveWarnings; + +internal static class Examples +{ + public static void RunAll() + { + DereferenceFixed("hello"); + NullOperatorsFix(null); + AssignmentFixed("ada"); + CallerWithAttribute("ada"); + UseInitialized(); + } + + // +#nullable enable + public static int Length(string? message) => + message?.Length ?? 0; + // + + // + public static int LengthOfMessageUnsafe(string? message) + { + // Warning CS8602: dereference of a possibly null reference. + // return message.Length; + return message?.Length ?? 0; + } + // + + // + public static int DereferenceFixed(string? message) + { + if (message is null) + { + return 0; + } + + // No warning: the compiler knows message is not-null on this path. + return message.Length; + } + // + + // + public static int NullOperatorsFix(string? message) + { + // ?. evaluates to null if message is null; ?? supplies the fallback value. + int length = message?.Length ?? 0; + + // Pattern matching narrows the type on the matching branch. + if (message is { Length: > 0 } nonEmpty) + { + length = nonEmpty.Length; + } + + return length; + } + // + + private static string? Lookup(string id) => id == "ada" ? "Ada Lovelace" : null; + + // + public static void AssignmentWarning() + { + // Warning CS8600: converting null literal or possible null value to non-nullable type. + // string name = Lookup("nobody"); + string name = Lookup("nobody") ?? string.Empty; + Console.WriteLine(name); + } + // + + // + public static void AssignmentFixed(string id) + { + string? name = Lookup(id); + if (name is not null) + { + Console.WriteLine(name); + } + } + // + + // + public static bool IsPresentNoAttribute(string? value) => + !string.IsNullOrEmpty(value); + + public static void CallerWithoutAttribute(string? value) + { + if (IsPresentNoAttribute(value)) + { + // Warning CS8602: dereference of a possibly null reference. + // The signature doesn't tell the compiler value is not-null here. + Console.WriteLine(value!.Length); + } + } + // + + // + public static bool IsPresent([NotNullWhen(true)] string? value) => + !string.IsNullOrEmpty(value); + + public static void CallerWithAttribute(string? value) + { + if (IsPresent(value)) + { + // No warning: the attribute tells the compiler value is not-null. + Console.WriteLine(value.Length); + } + } + // + + // + public class PersonUninitialized + { + // Warning CS8618: Non-nullable property 'Name' is uninitialized. + public string Name { get; set; } = null!; + } + // + + // + public class PersonInjected(string name) + { + public string Name { get; } = name; + } + // + + // + public class PersonRequired + { + public required string Name { get; init; } + } + // + + // + public class PersonInitialized + { + public string Name { get; set; } = string.Empty; + } + // + + // + public class PersonOptional + { + public string? Name { get; set; } + } + // + + public static void UseInitialized() + { + PersonInjected p1 = new("Ada"); + PersonRequired p2 = new() { Name = "Ada" }; + PersonInitialized p3 = new(); + PersonOptional p4 = new(); + + Console.WriteLine($"{p1.Name}|{p2.Name}|{p3.Name}|{p4.Name ?? ""}"); + } +} + +internal static class Program +{ + private static void Main() => Examples.RunAll(); +} diff --git a/docs/csharp/fundamentals/null-safety/snippets/resolve-warnings/project-snippet.xml b/docs/csharp/fundamentals/null-safety/snippets/resolve-warnings/project-snippet.xml new file mode 100644 index 0000000000000..53fe807717199 --- /dev/null +++ b/docs/csharp/fundamentals/null-safety/snippets/resolve-warnings/project-snippet.xml @@ -0,0 +1,3 @@ + + enable + diff --git a/docs/csharp/fundamentals/null-safety/snippets/resolve-warnings/resolve-warnings.csproj b/docs/csharp/fundamentals/null-safety/snippets/resolve-warnings/resolve-warnings.csproj new file mode 100644 index 0000000000000..dfb40caafcf9a --- /dev/null +++ b/docs/csharp/fundamentals/null-safety/snippets/resolve-warnings/resolve-warnings.csproj @@ -0,0 +1,10 @@ + + + + Exe + net10.0 + enable + enable + + + diff --git a/docs/csharp/fundamentals/tutorials/nullable-reference-types.md b/docs/csharp/fundamentals/tutorials/nullable-reference-types.md new file mode 100644 index 0000000000000..4f7b9ac6ea1cc --- /dev/null +++ b/docs/csharp/fundamentals/tutorials/nullable-reference-types.md @@ -0,0 +1,180 @@ +--- +title: "Tutorial: Express your design intent with nullable and non-nullable reference types" +description: Build a small survey app that uses nullable and non-nullable reference types to declare which references can be null and have the compiler enforce that intent. +ms.date: 05/04/2026 +ms.topic: tutorial +ms.subservice: null-safety +ai-usage: ai-assisted + +#customer intent: As a C# developer, I want to use nullable and non-nullable reference types in a real design so that the compiler catches null-handling mistakes for me. +--- +# Tutorial: Express your design intent with nullable and non-nullable reference types + +> [!TIP] +> **New to nullable reference types?** Read [Nullable reference types](../null-safety/nullable-reference-types.md) first. This tutorial assumes you understand the difference between non-nullable and nullable reference types and how the compiler tracks null-state. +> +> **Coming from another language?** If you've used Kotlin's nullable types, TypeScript's `strictNullChecks`, or Swift's optionals, the conceptual model maps directly. The exercise here is about *expressing design intent*, not learning the syntax. + +In this tutorial, you build a small library that models running a survey. The data has two kinds of "missing" values that nullable reference types let you distinguish: + +- A *survey question* must always be present. The list of questions and the text of each question can never be `null`. +- A *response to a question* might be missing. Respondents can decline to answer some or all questions, and the model should make that explicit. + +You declare those rules with non-nullable and nullable reference types. The compiler then warns whenever the code's behavior doesn't match the design. + +In this tutorial, you: + +> [!div class="checklist"] +> +> - Create a console app that has nullable reference types enabled. +> - Build the survey with non-nullable reference types for required values. +> - Generate respondents that use nullable reference types for missing answers. +> - Read the survey results without writing any null checks the compiler hasn't asked for. + +## Prerequisites + +[!INCLUDE [Prerequisites](../../../../includes/prerequisites-basic.md)] + +This tutorial assumes you're familiar with C# and either Visual Studio or the .NET CLI. + +## Create the application and enable nullable reference types + +Create a new console application named `NullableIntroduction`: + +```dotnetcli +dotnet new console -n NullableIntroduction +cd NullableIntroduction +``` + +Open `NullableIntroduction.csproj` and confirm the `enable` element is set in the `PropertyGroup`. Templates from .NET 6 onward include it by default; add it manually if it's missing: + +:::code language="xml" source="snippets/NullableIntroduction/NullableIntroduction.csproj"::: + +With the feature enabled, every reference type variable is non-nullable unless you append `?`. The compiler issues warnings when your code's null-handling doesn't match those declarations. + +## Design the survey types + +Three classes model the survey: + +- `SurveyQuestion` — one question. The text and question type are required. +- `SurveyRun` — the collection of questions plus the list of respondents. +- `SurveyResponse` — one respondent's answers, which might be missing. + +Each type uses non-nullable reference types for required values and nullable reference types where missing values are part of the design. + +## Build the survey questions + +Replace the contents of `SurveyQuestion.cs` with the following code. The text and the question type are non-nullable, so the compiler requires the constructor to initialize both: + +:::code language="csharp" source="snippets/NullableIntroduction/SurveyQuestion.cs"::: + +The constructor parameters are non-nullable reference types, so the compiler warns the caller if either argument might be `null`. + +Next, add a `SurveyRun` class to hold the list of questions: + +```csharp +namespace NullableIntroduction; + +public class SurveyRun +{ + private List surveyQuestions = new(); + + public void AddQuestion(QuestionType type, string question) => + AddQuestion(new SurveyQuestion(type, question)); + + public void AddQuestion(SurveyQuestion surveyQuestion) => + surveyQuestions.Add(surveyQuestion); +} +``` + +The `surveyQuestions` field is a non-nullable `List`. Initializing it at the declaration satisfies the non-nullable contract. Both `AddQuestion` overloads accept non-nullable parameters, so the compiler enforces that callers don't pass `null`. + +In `Program.cs`, create a `SurveyRun` and add three questions: + +:::code language="csharp" source="snippets/NullableIntroduction/Program.cs" id="SnippetAddQuestions"::: + +To see how the compiler enforces non-nullable parameters, try adding the following line and rebuilding: + +```csharp +surveyRun.AddQuestion(QuestionType.Text, default); +``` + +The compiler issues warning *CS8625* because `default` evaluates to `null` for a reference type, and `AddQuestion` expects a non-nullable `string`. Remove the line before continuing. + +## Create respondents and capture answers + +A respondent's answers are different from a survey's questions: any individual answer might be missing, and a respondent might decline to participate at all. Both are valid states, and both are expressed with `null`. + +Add a `SurveyResponse` class. Start with the always-required `Id` property and a constructor that initializes it: + +```csharp +namespace NullableIntroduction; + +public class SurveyResponse +{ + public int Id { get; } + + public SurveyResponse(int id) => Id = id; +} +``` + +Add a static factory method that creates respondents with a random ID: + +:::code language="csharp" source="snippets/NullableIntroduction/SurveyResponse.cs" id="SnippetRandom"::: + +Next, add the method that asks the survey to a respondent. Store the answers in a nullable dictionary so the type itself communicates that the respondent might decline: + +:::code language="csharp" source="snippets/NullableIntroduction/SurveyResponse.cs" id="SnippetAnswerSurvey"::: + +The `surveyResponses` field is `Dictionary?`. Anywhere the field is dereferenced without first checking against `null`, the compiler issues a warning. Inside `AnswerSurvey`, the compiler tracks that `surveyResponses` is *not-null* immediately after the `new` expression, so the loop body needs no extra check. + +Add a method on `SurveyRun` that builds up a list of respondents until enough consent to participate: + +:::code language="csharp" source="snippets/NullableIntroduction/SurveyRun.cs" id="SnippetPerformSurvey"::: + +The `respondents` field is `List?`—it's `null` until the survey runs. + +Call `PerformSurvey` from `Main`: + +:::code language="csharp" source="snippets/NullableIntroduction/Program.cs" id="SnippetRunSurvey"::: + +## Examine the survey results + +To report results, expose a few helpers from `SurveyResponse` and `SurveyRun`. On `SurveyResponse`, add expression-bodied members that handle the nullable dictionary: + +:::code language="csharp" source="snippets/NullableIntroduction/SurveyResponse.cs" id="SnippetSurveyStatus"::: + +`AnsweredSurvey` checks the field against `null`. `Answer` uses the `?.` operator to dereference safely and the `??` operator to substitute a non-null fallback. The method's return type is non-nullable `string`, so callers don't need null checks. + +On `SurveyRun`, add expression-bodied members that expose the list of participants and questions: + +:::code language="csharp" source="snippets/NullableIntroduction/SurveyRun.cs" id="SnippetRunReport"::: + +`AllParticipants` returns a non-nullable sequence even though `respondents` might be `null`. The `??` operator substitutes `Enumerable.Empty()` when the field hasn't been populated yet. If you remove the `??` clause, the compiler warns that the method might return `null` despite a non-nullable return type. + +Finally, write the report at the bottom of `Main`: + +:::code language="csharp" source="snippets/NullableIntroduction/Program.cs" id="SnippetWriteAnswers"::: + +Notice that no null check is needed for `participant`, `surveyRun.Questions`, or `surveyRun.GetQuestion(i)`. The types declare those values as non-nullable, so the compiler treats them as *not-null* throughout the loop. + +Run the application: + +```dotnetcli +dotnet run +``` + +The output is different on each run because respondents are generated randomly, but every line either reports a participant's answers or notes that they declined. + +## Get the code + +The finished sample is in the [csharp/NullableIntroduction](https://github.com/dotnet/samples/tree/main/csharp/NullableIntroduction) folder of the [dotnet/samples](https://github.com/dotnet/samples) repository. + +Experiment by changing types between nullable and non-nullable. Removing a `?` where the design allows missing values produces compiler warnings that point to every place the missing value matters. + +## Related content + +- [Nullable reference types](../null-safety/nullable-reference-types.md) +- [Resolve nullable warnings](../null-safety/resolve-warnings.md) +- [Nullable migration strategies](../null-safety/migration-strategies.md) +- [Working with nullable reference types in EF Core](/ef/core/miscellaneous/nullable-reference-types) diff --git a/docs/csharp/tutorials/snippets/NullableIntroduction/NullableIntroduction.csproj b/docs/csharp/fundamentals/tutorials/snippets/NullableIntroduction/NullableIntroduction.csproj similarity index 100% rename from docs/csharp/tutorials/snippets/NullableIntroduction/NullableIntroduction.csproj rename to docs/csharp/fundamentals/tutorials/snippets/NullableIntroduction/NullableIntroduction.csproj diff --git a/docs/csharp/tutorials/snippets/NullableIntroduction/Program.cs b/docs/csharp/fundamentals/tutorials/snippets/NullableIntroduction/Program.cs similarity index 100% rename from docs/csharp/tutorials/snippets/NullableIntroduction/Program.cs rename to docs/csharp/fundamentals/tutorials/snippets/NullableIntroduction/Program.cs diff --git a/docs/csharp/tutorials/snippets/NullableIntroduction/SurveyQuestion.cs b/docs/csharp/fundamentals/tutorials/snippets/NullableIntroduction/SurveyQuestion.cs similarity index 100% rename from docs/csharp/tutorials/snippets/NullableIntroduction/SurveyQuestion.cs rename to docs/csharp/fundamentals/tutorials/snippets/NullableIntroduction/SurveyQuestion.cs diff --git a/docs/csharp/tutorials/snippets/NullableIntroduction/SurveyResponse.cs b/docs/csharp/fundamentals/tutorials/snippets/NullableIntroduction/SurveyResponse.cs similarity index 100% rename from docs/csharp/tutorials/snippets/NullableIntroduction/SurveyResponse.cs rename to docs/csharp/fundamentals/tutorials/snippets/NullableIntroduction/SurveyResponse.cs diff --git a/docs/csharp/tutorials/snippets/NullableIntroduction/SurveyRun.cs b/docs/csharp/fundamentals/tutorials/snippets/NullableIntroduction/SurveyRun.cs similarity index 100% rename from docs/csharp/tutorials/snippets/NullableIntroduction/SurveyRun.cs rename to docs/csharp/fundamentals/tutorials/snippets/NullableIntroduction/SurveyRun.cs diff --git a/docs/csharp/language-reference/attributes/nullable-analysis.md b/docs/csharp/language-reference/attributes/nullable-analysis.md index 2bc55795b5700..970d0d24e6f0d 100644 --- a/docs/csharp/language-reference/attributes/nullable-analysis.md +++ b/docs/csharp/language-reference/attributes/nullable-analysis.md @@ -100,7 +100,7 @@ You likely wrote a method like this to return `null` when the name sought isn't public Customer? FindCustomer(string lastName, string firstName) ``` -For reasons covered under [Generics nullability](../../nullable-references.md#generics) that technique might not produce the static analysis that matches your API. You might have a generic method that follows a similar pattern: +For reasons covered under [Generics nullability](../../fundamentals/null-safety/nullable-reference-types.md#generics) that technique might not produce the static analysis that matches your API. You might have a generic method that follows a similar pattern: :::code language="csharp" source="snippets/NullableAttributes.cs" ID="FindMethod" ::: diff --git a/docs/csharp/language-reference/builtin-types/arrays.md b/docs/csharp/language-reference/builtin-types/arrays.md index a2c2d2d9d8cdb..244a0e5b20c69 100644 --- a/docs/csharp/language-reference/builtin-types/arrays.md +++ b/docs/csharp/language-reference/builtin-types/arrays.md @@ -28,7 +28,7 @@ You can store multiple variables of the same type in an array data structure. Yo type[] arrayName; ``` -An array is a reference type, so the array can be a [nullable reference](../../nullable-references.md) type. The element types might be reference types, so you can declare an array to hold nullable reference types. The following example declarations show the different syntax used to declare the nullability of the array or the elements: +An array is a reference type, so the array can be a [nullable reference](../../fundamentals/null-safety/nullable-reference-types.md) type. The element types might be reference types, so you can declare an array to hold nullable reference types. The following example declarations show the different syntax used to declare the nullability of the array or the elements: ```csharp type?[] arrayName; // non nullable array of nullable element types. @@ -55,7 +55,7 @@ An array has the following properties: - Array elements can be of any type, including an array type. - Array types are [reference types](../keywords/reference-types.md) derived from the abstract base type . All arrays implement and . You can use the [foreach](../statements/iteration-statements.md#the-foreach-statement) statement to iterate through an array. Single-dimensional arrays also implement and . -You can initialize the elements of an array to known values when you create the array. Beginning with C# 12, you can use a [Collection expression](../operators/collection-expressions.md) to initialize all of the collection types. Elements that you don't initialize are set to the [default value](default-values.md). The default value is the 0-bit pattern. All reference types (including [non-nullable](../../nullable-references.md#known-pitfalls) types) have the value `null`. All value types have the 0-bit patterns. That means the property is `false` and the property is undefined. In the .NET implementation, the `Value` property throws an exception. +You can initialize the elements of an array to known values when you create the array. Beginning with C# 12, you can use a [Collection expression](../operators/collection-expressions.md) to initialize all of the collection types. Elements that you don't initialize are set to the [default value](default-values.md). The default value is the 0-bit pattern. All reference types (including [non-nullable](../../fundamentals/null-safety/nullable-reference-types.md#known-pitfalls) types) have the value `null`. All value types have the 0-bit patterns. That means the property is `false` and the property is undefined. In the .NET implementation, the `Value` property throws an exception. The following example creates single-dimensional, multidimensional, and jagged arrays: diff --git a/docs/csharp/language-reference/builtin-types/nullable-reference-types.md b/docs/csharp/language-reference/builtin-types/nullable-reference-types.md index 3574da06dc8be..55802a0473970 100644 --- a/docs/csharp/language-reference/builtin-types/nullable-reference-types.md +++ b/docs/csharp/language-reference/builtin-types/nullable-reference-types.md @@ -70,7 +70,7 @@ The preceding examples demonstrate how compiler's static analysis determines the ## Setting the nullable context -You can control the nullable context in two ways. At the project level, add the `enable` project setting. In a single C# source file, add the `#nullable enable` pragma to enable the nullable context. See the article on [setting a nullable strategy](../../nullable-migration-strategies.md). Before .NET 6, new projects use the default, `disable`. Beginning with .NET 6, new projects include the `enable` element in the project file. +You can control the nullable context in two ways. At the project level, add the `enable` project setting. In a single C# source file, add the `#nullable enable` pragma to enable the nullable context. See the article on [setting a nullable strategy](../../fundamentals/null-safety/migration-strategies.md). Before .NET 6, new projects use the default, `disable`. Beginning with .NET 6, new projects include the `enable` element in the project file. ## C# language specification diff --git a/docs/csharp/language-reference/compiler-messages/interface-implementation-errors.md b/docs/csharp/language-reference/compiler-messages/interface-implementation-errors.md index aad25e16b3e2e..339f09307e209 100644 --- a/docs/csharp/language-reference/compiler-messages/interface-implementation-errors.md +++ b/docs/csharp/language-reference/compiler-messages/interface-implementation-errors.md @@ -168,7 +168,7 @@ You can correct these errors using the following techniques: - Apply the `default` constraint to resolve ambiguities with nullable reference types in override and explicit interface implementations when using C# 9 or later (**CS0460**). This exception to the constraint inheritance rule allows you to explicitly specify the default constraint to disambiguate nullable annotation contexts. - Explicitly specify `where T : class` or `where T : struct` constraints on override and explicit interface implementation methods when using C# 8 or later to enable nullable reference type annotations (**CS0460**). These specific constraints are permitted to support nullable reference type analysis on type parameters that are constrained to reference or value types. -For more information, see [Constraints on type parameters](../../programming-guide/generics/constraints-on-type-parameters.md), [Interfaces](../../fundamentals/types/interfaces.md), and [Nullable reference types](../../nullable-references.md). +For more information, see [Constraints on type parameters](../../programming-guide/generics/constraints-on-type-parameters.md), [Interfaces](../../fundamentals/types/interfaces.md), and [Nullable reference types](../../fundamentals/null-safety/nullable-reference-types.md). ## Method visibility and modifiers diff --git a/docs/csharp/language-reference/compiler-messages/nullable-warnings.md b/docs/csharp/language-reference/compiler-messages/nullable-warnings.md index 759115dea1396..7db37a8aac46c 100644 --- a/docs/csharp/language-reference/compiler-messages/nullable-warnings.md +++ b/docs/csharp/language-reference/compiler-messages/nullable-warnings.md @@ -196,7 +196,7 @@ This article covers the following compiler warnings: - [**CS8847**](#exhaustive-switch-expression) - *The switch expression does not handle some null inputs (it is not exhaustive). However, a pattern with a 'when' clause might successfully match this value.* > [!NOTE] -> The static analysis can't always deduce in what order, in a specific scenario, methods are accessed, and whether the method completes successfully without throwing an exception. Those known pitfalls are well described in [Known pitfalls](../../nullable-references.md#known-pitfalls) section. +> The static analysis can't always deduce in what order, in a specific scenario, methods are accessed, and whether the method completes successfully without throwing an exception. Those known pitfalls are well described in [Known pitfalls](../../fundamentals/null-safety/nullable-reference-types.md#known-pitfalls) section. You address almost all warnings using one of five techniques: @@ -206,7 +206,7 @@ You address almost all warnings using one of five techniques: - Adding attributes that describe null semantics. - Initializing variables correctly. -If you're new to using nullable reference types, the [overview of nullable reference types](../../nullable-references.md) provides a background on what nullable reference types solve and how they work to provide warnings to possible mistakes in your code. You can also check the guidance on [migrating to nullable reference types](../../nullable-migration-strategies.md) to learn more about enabling nullable reference types in an existing project. +If you're new to using nullable reference types, the [overview of nullable reference types](../../fundamentals/null-safety/nullable-reference-types.md) provides a background on what nullable reference types solve and how they work to provide warnings to possible mistakes in your code. You can also check the guidance on [migrating to nullable reference types](../../fundamentals/null-safety/migration-strategies.md) to learn more about enabling nullable reference types in an existing project. ## Configure nullable context @@ -240,8 +240,8 @@ The nullable context has two independent flags that control different aspects: For detailed information about nullable contexts and migration strategies, see: -- [Nullable reference types overview](../../nullable-references.md#nullable-context) -- [Update a codebase with nullable reference types](../../nullable-migration-strategies.md) +- [Nullable reference types overview](../../fundamentals/null-safety/nullable-reference-types.md#nullable-context) +- [Update a codebase with nullable reference types](../../fundamentals/null-safety/migration-strategies.md) ## Incorrect annotation syntax diff --git a/docs/csharp/language-reference/compiler-options/language.md b/docs/csharp/language-reference/compiler-options/language.md index 941674e46c912..607512d28c781 100644 --- a/docs/csharp/language-reference/compiler-options/language.md +++ b/docs/csharp/language-reference/compiler-options/language.md @@ -149,7 +149,7 @@ The **Nullable** option lets you specify the nullable context. It can be set in enable ``` -The argument must be one of `enable`, `disable`, `warnings`, or `annotations`. The `enable` argument enables the nullable context. Specifying `disable` will disable the nullable context. When you specify the `warnings` argument, the nullable warning context is enabled. When you specify the `annotations` argument, the nullable annotation context is enabled. The values are described and explained in the article on [Nullable contexts](../../nullable-references.md#nullable-context). You can learn more about the tasks involved in enabling nullable reference types in an existing codebase in our article on [nullable migration strategies](../../nullable-migration-strategies.md). +The argument must be one of `enable`, `disable`, `warnings`, or `annotations`. The `enable` argument enables the nullable context. Specifying `disable` will disable the nullable context. When you specify the `warnings` argument, the nullable warning context is enabled. When you specify the `annotations` argument, the nullable annotation context is enabled. The values are described and explained in the article on [Nullable contexts](../../fundamentals/null-safety/nullable-reference-types.md#nullable-context). You can learn more about the tasks involved in enabling nullable reference types in an existing codebase in our article on [nullable migration strategies](../../fundamentals/null-safety/migration-strategies.md). > [!NOTE] > When there's no value set, the default value `disable` is applied, however the .NET 6 templates are by default provided with the **Nullable** value set to `enable`. diff --git a/docs/csharp/language-reference/keywords/where-generic-type-constraint.md b/docs/csharp/language-reference/keywords/where-generic-type-constraint.md index 192f53715ed47..42c57159ca711 100644 --- a/docs/csharp/language-reference/keywords/where-generic-type-constraint.md +++ b/docs/csharp/language-reference/keywords/where-generic-type-constraint.md @@ -37,7 +37,7 @@ The `where` clause can specify that the type is a `class` or a `struct`. The `st In a nullable context, the `class` constraint requires a type to be a non-nullable reference type. To allow nullable reference types, use the `class?` constraint, which allows both nullable and non-nullable reference types. -The `where` clause can include the `notnull` constraint. The `notnull` constraint limits the type parameter to non-nullable types. The type can be a [value type](../builtin-types/value-types.md) or a non-nullable reference type. The `notnull` constraint is available for code compiled in a [`nullable enable` context](../../nullable-references.md#nullable-context). Unlike other constraints, if a type argument violates the `notnull` constraint, the compiler generates a warning instead of an error. Warnings are only generated in a `nullable enable` context. +The `where` clause can include the `notnull` constraint. The `notnull` constraint limits the type parameter to non-nullable types. The type can be a [value type](../builtin-types/value-types.md) or a non-nullable reference type. The `notnull` constraint is available for code compiled in a [`nullable enable` context](../../fundamentals/null-safety/nullable-reference-types.md#nullable-context). Unlike other constraints, if a type argument violates the `notnull` constraint, the compiler generates a warning instead of an error. Warnings are only generated in a `nullable enable` context. The addition of nullable reference types introduces a potential ambiguity in the meaning of `T?` in generic methods. If `T` is a `struct`, `T?` is the same as . However, if `T` is a reference type, `T?` means that `null` is a valid value. The ambiguity arises because overriding methods can't include constraints. The new `default` constraint resolves this ambiguity. Add it when a base class or interface declares two overloads of a method, one that specifies the `struct` constraint, and one that doesn't have either the `struct` or `class` constraint applied: diff --git a/docs/csharp/language-reference/operators/null-forgiving.md b/docs/csharp/language-reference/operators/null-forgiving.md index 0753dee393434..1b2e5a0b017fb 100644 --- a/docs/csharp/language-reference/operators/null-forgiving.md +++ b/docs/csharp/language-reference/operators/null-forgiving.md @@ -10,7 +10,7 @@ helpviewer_keywords: --- # ! (null-forgiving) operator (C# reference) -The unary postfix `!` operator is the null-forgiving, or null-suppression, operator. In an enabled [nullable annotation context](../../nullable-references.md#nullable-context), use the null-forgiving operator to suppress all nullable warnings for the preceding expression. The unary prefix `!` operator is the [logical negation operator](boolean-logical-operators.md#logical-negation-operator-). The null-forgiving operator has no effect at run time. It only affects the compiler's static flow analysis by changing the null state of the expression. At run time, expression `x!` evaluates to the result of the underlying expression `x`. +The unary postfix `!` operator is the null-forgiving, or null-suppression, operator. In an enabled [nullable annotation context](../../fundamentals/null-safety/nullable-reference-types.md#nullable-context), use the null-forgiving operator to suppress all nullable warnings for the preceding expression. The unary prefix `!` operator is the [logical negation operator](boolean-logical-operators.md#logical-negation-operator-). The null-forgiving operator has no effect at run time. It only affects the compiler's static flow analysis by changing the null state of the expression. At run time, expression `x!` evaluates to the result of the underlying expression `x`. For more information about the nullable reference types feature, see [Nullable reference types](../builtin-types/nullable-reference-types.md). @@ -48,4 +48,4 @@ For more information, see [The null-forgiving operator](~/_csharpstandard/standa - [Remove unnecessary suppression operator (style rule IDE0080)](../../../fundamentals/code-analysis/style-rules/ide0080.md) - [C# operators and expressions](index.md) -- [Tutorial: Design with nullable reference types](../../tutorials/nullable-reference-types.md) +- [Tutorial: Design with nullable reference types](../../fundamentals/tutorials/nullable-reference-types.md) diff --git a/docs/csharp/nullable-migration-strategies.md b/docs/csharp/nullable-migration-strategies.md deleted file mode 100644 index e683233ca7ae0..0000000000000 --- a/docs/csharp/nullable-migration-strategies.md +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: Update your codebase to use nullable reference types -description: Learn nullable contexts, how to enable or disable warnings and annotations, and how to diagnose and fix possible null dereferencing issues. -ms.subservice: null-safety -ms.date: 09/15/2021 ---- -# Update a codebase with nullable reference types to improve null diagnostic warnings - -[Nullable reference types](nullable-references.md) enable you to declare if variables of a reference type should or shouldn't be assigned a `null` value. The compiler's static analysis and warnings when your code might dereference `null` are the most important benefit of this feature. Once enabled, the compiler generates warnings that help you avoid throwing a when your code runs. - -If your codebase is relatively small, you can turn on the [feature in your project](language-reference/compiler-options/language.md#nullable), address warnings, and enjoy the benefits of the improved diagnostics. Larger codebases may require a more structured approach to address warnings over time, enabling the feature for some as you address warnings in different types or files. This article describes different strategies to update a codebase and the tradeoffs associated with these strategies. Before starting your migration, read the conceptual overview of [nullable reference types](nullable-references.md). It covers the compiler's static analysis, *null-state* values of *maybe-null* and *not-null* and the nullable annotations. Once you're familiar with those concepts and terms, you're ready to migrate your code. - -## Plan your migration - -Regardless of how you update your codebase, the goal is that nullable warnings and nullable annotations are enabled in your project. Once you reach that goal, you'll have the `Enable` setting in your project. You won't need any of the preprocessor directives to adjust settings elsewhere. - -> [!NOTE] -> You can designate a `Nullable` setting for your project using a `` tag. Refer to [Compiler options](language-reference/compiler-options/language.md#nullable) for more information. - -The first choice is setting the default for the project. Your choices are: - -1. ***Nullable disable as the default***: *disable* is the default if you don't add a `Nullable` element to your project file. Use this default when you're not actively adding new files to the codebase. The main activity is to update the library to use nullable reference types. Using this default means you add a nullable preprocessor directive to each file as you update its code. -1. ***Nullable enable as the default***: Set this default when you're actively developing new features. You want all new code to benefit from nullable reference types and nullable static analysis. Using this default means you must add a `#nullable disable` to the top of each file. You'll remove these preprocessor directives as you address the warnings in each file. -1. ***Nullable warnings as the default***: Choose this default for a two-phase migration. In the first phase, address warnings. In the second phase, turn on annotations for declaring a variable's expected *null-state*. Using this default means you must add a `#nullable disable` to the top of each file. -1. ***Nullable annotations*** as the default. Annotate code before addressing warnings. - -Enabling nullable as the default creates more up-front work to add the preprocessor directives to every file. The advantage is that every new code file added to the project will be nullable enabled. Any new work will be nullable aware; only existing code must be updated. Disabling nullable as the default works better if the library is stable, and the main focus of the development is to adopt nullable reference types. You turn on nullable reference types as you annotate APIs. When you've finished, you enable nullable reference types for the entire project. When you create a new file, you must add the preprocessor directives and make it nullable aware. If any developers on your team forget, that new code is now in the backlog of work to make all code nullable aware. - -Which of these strategies you pick depends on how much active development is taking place in your project. The more mature and stable your project, the better the second strategy. The more features being developed, the better the first strategy. - -> [!IMPORTANT] -> The global nullable context does not apply for generated code files. Under either strategy, the nullable context is *disabled* for any source file marked as generated. This means any APIs in generated files are not annotated. There are four ways a file is marked as generated: -> -> 1. In the .editorconfig, specify `generated_code = true` in a section that applies to that file. -> 1. Put `` or `` in a comment at the top of the file. It can be on any line in that comment, but the comment block must be the first element in the file. -> 1. Start the file name with *TemporaryGeneratedFile_* -> 1. End the file name with *.designer.cs*, *.generated.cs*, *.g.cs*, or *.g.i.cs*. -> -> Generators can opt-in using the [`#nullable`](language-reference/preprocessor-directives.md#nullable-context) preprocessor directive. - -## Understand contexts and warnings - -Enabling warnings and annotations control how the compiler views reference types and nullability. Every type has one of three nullabilities: - -- *oblivious*: All reference types are nullable *oblivious* when the annotation context is disabled. -- *nonnullable*: An unannotated reference type, `C` is *nonnullable* when the annotation context is enabled. -- *nullable*: An annotated reference type, `C?`, is *nullable*, but a warning may be issued when the annotation context is disabled. Variables declared with `var` are *nullable* when the annotation context is enabled. - -The compiler generates warnings based on that nullability: - -- *nonnullable* types cause warnings if a potential `null` value is assigned to them. -- *nullable* types cause warnings if they dereferenced when *maybe-null*. -- *oblivious* types cause warnings if they're dereferenced when *maybe-null* and the warning context is enabled. - -Each variable has a default nullable state that depends on its nullability: - -- Nullable variables have a default *null-state* of *maybe-null*. -- Non-nullable variables have a default *null-state* of *not-null*. -- Nullable oblivious variables have a default *null-state* of *not-null*. - -Before you enable nullable reference types, all declarations in your codebase are *nullable oblivious*. That's important because it means all reference types have a default *null-state* of *not-null*. - -## Address warnings - -If your project uses Entity Framework Core, you should read their guidance on [Working with nullable reference types](/ef/core/miscellaneous/nullable-reference-types). - -When you start your migration, you should start by enabling warnings only. All declarations remain *nullable oblivious*, but you'll see warnings when you dereference a value after its *null-state* changes to *maybe-null*. As you address these warnings, you'll be checking against null in more locations, and your codebase becomes more resilient. To learn specific techniques for different situations, see the article on [Techniques to resolve nullable warnings](language-reference/compiler-messages/nullable-warnings.md). - -You can address warnings and enable annotations in each file or class before continuing with other code. However, it's often more efficient to address the warnings generated while the context is *warnings* before enabling the type annotations. That way, all types are *oblivious* until you've addressed the first set of warnings. - -## Enable type annotations - -After addressing the first set of warnings, you can enable the *annotation context*. This changes reference types from *oblivious* to *nonnullable*. All variables declared with `var` are *nullable*. This change often introduces new warnings. The first step in addressing the compiler warnings is to use `?` annotations on parameter and return types to indicate when arguments or return values may be `null`. As you do this task, your goal isn't just to fix warnings. The more important goal is to make the compiler understand your intent for potential null values. - -## Attributes extend type annotations - -Several attributes have been added to express additional information about the null state of variables. The rules for your APIs are likely more complicated than *not-null* or *maybe-null* for all parameters and return values. Many of your APIs have more complex rules for when variables can or can't be `null`. In these cases, you'll use attributes to express those rules. The attributes that describe the semantics of your API are found in the article on [Attributes that affect nullable analysis](./language-reference/attributes/nullable-analysis.md). - -## Next steps - -Once you've addressed all warnings after enabling annotations, you can set the default context for your project to *enabled*. If you added any pragmas in your code for the nullable annotation or warning context, you can remove them. Over time, you may see new warnings. You may write code that introduces warnings. A library dependency may be updated for nullable reference types. Those updates will change the types in that library from *nullable oblivious* to either *nonnullable* or *nullable*. - -You can also explore these concepts in our Learn module on [Nullable safety in C#](/training/modules/csharp-null-safety). diff --git a/docs/csharp/nullable-references.md b/docs/csharp/nullable-references.md deleted file mode 100644 index ba5794899d1e1..0000000000000 --- a/docs/csharp/nullable-references.md +++ /dev/null @@ -1,432 +0,0 @@ ---- -title: Nullable reference types -description: This article provides an overview of nullable reference types. Learn how the feature provides safety against null reference exceptions, for new and existing projects. -ms.subservice: null-safety -ms.date: 12/09/2024 ---- -# Nullable reference types - -*Nullable reference types* are a group of features that minimize the likelihood that your code causes the runtime to throw . Three features that help you avoid these exceptions, including the ability to explicitly mark a reference type as *nullable*: - -- Improved static flow analysis that determines if a variable might be `null` before dereferencing it. -- Attributes that annotate APIs so that the flow analysis determines *null-state*. -- Variable annotations that developers use to explicitly declare the intended *null-state* for a variable. - -The compiler tracks the *null-state* of every expression in your code at compile time. The *null-state* has one of two values: - -- *not-null*: The expression is known to be not-`null`. -- *maybe-null*: The expression might be `null`. - -Variable annotations determine the *nullability* of a reference type variable: - -- *non-nullable*: If you assign a `null` value or a *maybe-null* expression to the variable, the compiler issues a warning. Variables that are *non-nullable* have a default null-state of *not-null*. -- *nullable*: You can assign a `null` value or a *maybe-null* expression to the variable. When the variable's null-state is *maybe-null*, the compiler issues a warning if you dereference the variable. The default null-state for the variable is *maybe-null*. - -The rest of this article describes how those three feature areas work to produce warnings when your code might **dereference** a `null` value. Dereferencing a variable means to access one of its members using the `.` (dot) operator, as shown in the following example: - -```csharp -string message = "Hello, World!"; -int length = message.Length; // dereferencing "message" -``` - -When you dereference a variable whose value is `null`, the runtime throws a . - -Similarly warnings can be produced when `[]` notation is used to access a member of an object when the object is `null`: - -```csharp -using System; - -public class Collection -{ - private T[] array = new T[100]; - public T this[int index] - { - get => array[index]; - set => array[index] = value; - } -} - -public static void Main() -{ - Collection c = default; - c[10] = 1; // CS8602: Possible dereference of null -} -``` - -You'll learn about: - -- The compiler's [null-state analysis](#null-state-analysis): how the compiler determines if an expression is not-null, or maybe-null. -- [Attributes](#attributes-on-api-signatures) that are applied to APIs that provide more context for the compiler's null-state analysis. -- [Nullable variable annotations](#nullable-variable-annotations) that provide information about your intent for variables. Annotations are useful for fields, parameters, and return values to set the default null-state. -- The rules governing [generic type arguments](#generics). New constraints were added because type parameters can be reference types or value types. The `?` suffix is implemented differently for nullable value types and nullable reference types. -- The [Nullable context](#nullable-context) help you migrate large projects. You can enable warnings and annotations in the nullable context in parts of your app as you migrate. After you address more warnings, you can enable both settings for the entire project. - -Finally, you learn known pitfalls for null-state analysis in `struct` types and arrays. - -You can also explore these concepts in our Learn module on [Nullable safety in C#](/training/modules/csharp-null-safety). - -## Null-state analysis - -***Null-state analysis*** tracks the *null-state* of references. An expression is either *not-null* or *maybe-null*. The compiler determines that a variable is *not-null* in two ways: - -1. The variable was assigned a value that is known to be *not-null*. -1. The variable was checked against `null` and wasn't assigned since that check. - -Any variable that the compiler can't determined as *not-null* is considered *maybe-null*. The analysis provides warnings in situations where you might accidentally dereference a `null` value. The compiler produces warnings based on the *null-state*. - -- When a variable is *not-null*, that variable can be dereferenced safely. -- When a variable is *maybe-null*, that variable must be checked to ensure that it isn't `null` before dereferencing it. - -Consider the following example: - -```csharp -string? message = null; - -// warning: dereference null. -Console.WriteLine($"The length of the message is {message.Length}"); - -var originalMessage = message; -message = "Hello, World!"; - -// No warning. Analysis determined "message" is not-null. -Console.WriteLine($"The length of the message is {message.Length}"); - -// warning! -Console.WriteLine(originalMessage.Length); -``` - -In the preceding example, the compiler determines that `message` is *maybe-null* when the first message is printed. There's no warning for the second message. The final line of code produces a warning because `originalMessage` might be null. The following example shows a more practical use for traversing a tree of nodes to the root, processing each node during the traversal: - -```csharp -void FindRoot(Node node, Action processNode) -{ - for (var current = node; current != null; current = current.Parent) - { - processNode(current); - } -} -``` - -The previous code doesn't generate any warnings for dereferencing the variable `current`. Static analysis determines that `current` is never dereferenced when it's *maybe-null*. The variable `current` is checked against `null` before `current.Parent` is accessed, and before passing `current` to the `ProcessNode` action. The previous examples show how the compiler determines *null-state* for local variables when initialized, assigned, or compared to `null`. - -The null-state analysis doesn't trace into called methods. As a result, fields initialized in a common helper method called by all constructors might generate a warning with the following message: - -> Non-nullable property '*name*' must contain a non-null value when exiting constructor. - -You can address these warnings in one of two ways: *Constructor chaining*, or *nullable attributes* on the helper method. The following code shows an example of each. The `Person` class uses a common constructor called by all other constructors. The `Student` class has a helper method annotated with the attribute: - -:::code language="csharp" source="./language-reference/compiler-messages/snippets/null-warnings/PersonExamples.cs" id="ConstructorChainingAndMemberNotNull"::: - -Nullable state analysis and the warnings the compiler generates help you avoid program errors by dereferencing `null`. The article on [resolving nullable warnings](language-reference/compiler-messages/nullable-warnings.md) provides techniques for correcting the warnings most likely seen in your code. The diagnostics produced from null state analysis are warnings only. - -## Attributes on API signatures - -The null-state analysis needs hints from developers to understand the semantics of APIs. Some APIs provide null checks, and should change the *null-state* of a variable from *maybe-null* to *not-null*. Other APIs return expressions that are *not-null* or *maybe-null* depending on the *null-state* of the input arguments. For example, consider the following code that displays a message in upper case: - -```csharp -void PrintMessageUpper(string? message) -{ - if (!IsNull(message)) - { - Console.WriteLine($"{DateTime.Now}: {message.ToUpper()}"); - } -} - -bool IsNull(string? s) => s == null; -``` - -Based on inspection, any developer would consider this code safe, and shouldn't generate warnings. However the compiler doesn't know that `IsNull` provides a null check and issues a warning for the `message.ToUpper()` statement, considering `message` to be a *maybe-null* variable. Use the [`NotNullWhen`](xref:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute) attribute to fix this warning: - -```csharp -bool IsNull([NotNullWhen(false)] string? s) => s == null; -``` - -This attribute informs the compiler, that, if `IsNull` returns `false`, the parameter `s` isn't null. The compiler changes the *null-state* of `message` to *not-null* inside the `if (!IsNull(message)) {...}` block. No warnings are issued. - -Attributes provide detailed information about the null-state of arguments, return values, and members of the object instance used to invoke a member. The details on each attribute can be found in the language reference article on [nullable reference attributes](language-reference/attributes/nullable-analysis.md). As of .NET 5, all .NET runtime APIs are annotated. You improve the static analysis by annotating your APIs to provide semantic information about the *null-state* of arguments and return values. - -## Nullable variable annotations - -The *null-state* analysis provides robust analysis for local variables. The compiler needs more information from you for member variables. The compiler needs more information to set the *null-state* of all fields at the opening bracket of a member. Any of the accessible constructors could be used to initialize the object. If a member field might ever be set to `null`, the compiler must assume its *null-state* is *maybe-null* at the start of each method. - -You use annotations that can declare whether a variable is a **nullable reference type** or a **non-nullable reference type**. These annotations make important statements about the *null-state* for variables: - -- **A reference isn't supposed to be null**. The default state of a non-nullable reference variable is *not-null*. The compiler enforces rules that ensure it's safe to dereference these variables without first checking that it isn't null: - - The variable must be initialized to a non-null value. - - The variable can never be assigned the value `null`. The compiler issues a warning when code assigns a *maybe-null* expression to a variable that shouldn't be null. -- **A reference might be null**. The default state of a nullable reference variable is *maybe-null*. The compiler enforces rules to ensure that you correctly check for a `null` reference: - - The variable can only be dereferenced when the compiler can guarantee that the value isn't `null`. - - These variables can be initialized with the default `null` value and can be assigned the value `null` in other code. - - The compiler doesn't issue warnings when code assigns a *maybe-null* expression to a variable that might be null. - -Any non-nullable reference variable has the initial *null-state* of *not-null*. Any nullable reference variable has the initial *null-state* of *maybe-null*. - -A **nullable reference type** is noted using the same syntax as [nullable value types](language-reference/builtin-types/nullable-value-types.md): a `?` is appended to the type of the variable. For example, the following variable declaration represents a nullable string variable, `name`: - -```csharp -string? name; -``` - -When nullable reference types are enabled, any variable where the `?` isn't appended to the type name is a **non-nullable reference type**. That includes all reference type variables in existing code once you enable this feature. However, any implicitly typed local variables (declared using `var`) are **nullable reference types**. As the preceding sections showed, static analysis determines the *null-state* of local variables to determine if they're *maybe-null* before dereferencing it. - -Sometimes you must override a warning when you know a variable isn't null, but the compiler determines its *null-state* is *maybe-null*. You use the [null-forgiving operator](language-reference/operators/null-forgiving.md) `!` following a variable name to force the *null-state* to be *not-null*. For example, if you know the `name` variable isn't `null` but the compiler issues a warning, you can write the following code to override the compiler's analysis: - -```csharp -name!.Length; -``` - -Nullable reference types and nullable value types provide a similar semantic concept: A variable can represent a value or object, or that variable might be `null`. However, nullable reference types and nullable value types are implemented differently: nullable value types are implemented using , and nullable reference types are implemented by attributes read by the compiler. For example, `string?` and `string` are both represented by the same type: . However, `int?` and `int` are represented by `System.Nullable` and , respectively. - -Nullable reference types are a compile time feature. That means it's possible for callers to ignore warnings, intentionally use `null` as an argument to a method expecting a non nullable reference. Library authors should include run-time checks against null argument values. The is the preferred option for checking a parameter against null at run time. Furthermore, the runtime behavior of a program making use of nullable annotations is the same if all the nullable annotations, (`?` and `!`), are removed. Their only purpose is expressing design intent and providing information for null state analysis. - -> [!IMPORTANT] -> Enabling nullable annotations can change how Entity Framework Core determines if a data member is required. You can learn more details in the article on [Entity Framework Core Fundamentals: Working with Nullable Reference Types](/ef/core/miscellaneous/nullable-reference-types). - -## Generics - -Generics require detailed rules to handle `T?` for any type parameter `T`. The rules are necessarily detailed because of history and the different implementation for a nullable value type and a nullable reference type. [Nullable value types](language-reference/builtin-types/nullable-value-types.md) are implemented using the struct. [Nullable reference types](language-reference/builtin-types/nullable-reference-types.md) are implemented as type annotations that provide semantic rules to the compiler. - -- If the type argument for `T` is a reference type, `T?` references the corresponding nullable reference type. For example, if `T` is a `string`, then `T?` is a `string?`. -- If the type argument for `T` is a value type, `T?` references the same value type, `T`. For example, if `T` is an `int`, the `T?` is also an `int`. -- If the type argument for `T` is a nullable reference type, `T?` references that same nullable reference type. For example, if `T` is a `string?`, then `T?` is also a `string?`. -- If the type argument for `T` is a nullable value type, `T?` references that same nullable value type. For example, if `T` is a `int?`, then `T?` is also a `int?`. - -For return values, `T?` is equivalent to `[MaybeNull]T`; for argument values, `T?` is equivalent to `[AllowNull]T`. For more information, see the article on [Attributes for null-state analysis](language-reference/attributes/nullable-analysis.md) in the language reference. - -You can specify different behavior using [constraints](programming-guide/generics/constraints-on-type-parameters.md): - -- The `class` constraint means that `T` must be a non-nullable reference type (for example `string`). The compiler produces a warning if you use a nullable reference type, such as `string?` for `T`. -- The `class?` constraint means that `T` must be a reference type, either non-nullable (`string`) or a nullable reference type (for example `string?`). When the type parameter is a nullable reference type, such as `string?`, an expression of `T?` references that same nullable reference type, such as `string?`. -- The `notnull` constraint means that `T` must be a non-nullable reference type, or a non-nullable value type. If you use a nullable reference type or a nullable value type for the type parameter, the compiler produces a warning. Furthermore, when `T` is a value type, the return value is that value type, not the corresponding nullable value type. - -These constraints help provide more information to the compiler on how `T` is used. That helps when developers choose the type for `T` and provides better *null-state* analysis when an instance of the generic type is used. - -## Nullable context - -The *nullable context* determines how nullable reference type annotations are handled and what warnings are produced by static null state analysis. The nullable context contains two flags: the *annotation* setting and the *warning* setting. - -Both the *annotation* and *warning* settings are disabled by default for existing projects. Starting in .NET 6 (C# 10), both flags are enabled by default for *new* projects. The reason for two distinct flags for the nullable context is to make it easier to migrate large projects that predate the introduction of nullable reference types. - -For small projects, you can enable nullable reference types, fix warnings, and continue. However, for larger projects and multi-project solutions, that might generate a large number of warnings. You can use pragmas to enable nullable reference types file-by-file as you begin using nullable reference types. The new features that protect against throwing a can be disruptive when turned on in an existing codebase: - -- All explicitly typed reference variables are interpreted as non-nullable reference types. -- The meaning of the `class` constraint in generics changed to mean a non-nullable reference type. -- New warnings are generated because of these new rules. - -The **nullable annotation context** determines the compiler's behavior. There are four combinations for the **nullable context** settings: - -- *both disabled*: The code is *nullable-oblivious*. *Disable* matches the behavior before nullable reference types were enabled, except the new syntax produces warnings instead of errors. - - Nullable warnings are disabled. - - All reference type variables are nullable reference types. - - Use of the `?` suffix to declare a nullable reference type produces a warning. - - You can use the null forgiving operator, `!`, but it has no effect. -- *both enabled*: The compiler enables all null reference analysis and all language features. - - All new nullable warnings are enabled. - - You can use the `?` suffix to declare a nullable reference type. - - Reference type variables without the `?` suffix are non-nullable reference types. - - The null forgiving operator suppresses warnings for a possible dereference of `null`. -- *warning enabled*: The compiler performs all null analysis and emits warnings when code might dereference `null`. - - All new nullable warnings are enabled. - - Use of the `?` suffix to declare a nullable reference type produces a warning. - - All reference type variables are allowed to be null. However, members have the *null-state* of *not-null* at the opening brace of all methods unless declared with the `?` suffix. - - You can use the null forgiving operator, `!`. -- *annotations enabled*: The compiler doesn't emit warnings when code might dereference `null`, or when you assign a maybe-null expression to a non-nullable variable. - - All new nullable warnings are disabled. - - You can use the `?` suffix to declare a nullable reference type. - - Reference type variables without the `?` suffix are non-nullable reference types. - - You can use the null forgiving operator, `!`, but it has no effect. - -The nullable annotation context and nullable warning context can be set for a project using the [`` element](language-reference/compiler-options/language.md) in your *.csproj* file. This element configures how the compiler interprets the nullability of types and what warnings are emitted. The following table shows the allowable values and summarizes the contexts they specify. - -| Context | Dereference warnings | Assignment warnings | Reference types | `?` suffix | `!` operator | -| - | - | - | - | - | -| `disable` | Disabled | Disabled | All are nullable | Produces a warning | Has no effect | -| `enable` | Enabled | Enabled | Non-nullable unless declared with `?` | Declares nullable type | Suppresses warnings for possible `null` assignment | -| `warnings` | Enabled | Not applicable | All are nullable, but members are considered *not-null* at opening brace of methods | Produces a warning | Suppresses warnings for possible `null` assignment | -| `annotations` | Disabled | Disabled | Non-nullable unless declared with `?` | Declares nullable type | Has no effect | - -Reference type variables in code compiled in a *disabled* context are *nullable-oblivious*. You can assign a `null` literal or a *maybe-null* variable to a variable that is *nullable-oblivious*. However, the default state of a *nullable-oblivious* variable is *not-null*. - -You can choose which setting is best for your project: - -- Choose *disable* for legacy projects that you don't want to update based on diagnostics or new features. -- Choose *warnings* to determine where your code might throw s. You can address those warnings before modifying code to enable non-nullable reference types. -- Choose *annotations* to express your design intent before enabling warnings. -- Choose *enable* for new projects and active projects where you want to protect against null reference exceptions. - -**Example**: - -```xml -enable -``` - -You can also use directives to set these same flags anywhere in your source code. These directives are most useful when you're migrating a large codebase. - -- `#nullable enable`: Sets the annotation and warning flags to **enable**. -- `#nullable disable`: Sets the annotation and warning flags to **disable**. -- `#nullable restore`: Restores the annotation flag and warning flag to the project settings. -- `#nullable disable warnings`: Set the warning flag to **disable**. -- `#nullable enable warnings`: Set the warning flag to **enable**. -- `#nullable restore warnings`: Restores the warning flag to the project settings. -- `#nullable disable annotations`: Set the annotation flag to **disable**. -- `#nullable enable annotations`: Set the annotation flag to **enable**. -- `#nullable restore annotations`: Restores the annotation flag to the project settings. - -For any line of code, you can set any of the following combinations: - -| Warning flag | Annotation flag | Use | -|:---------------:|:------------------:|----------------------------------------| -| project default | project default | Default | -| enable | disable | Fix analysis warnings | -| enable | project default | Fix analysis warnings | -| project default | enable | Add type annotations | -| enable | enable | Code already migrated | -| disable | enable | Annotate code before fixing warnings | -| disable | disable | Adding legacy code to migrated project | -| project default | disable | Rarely | -| disable | project default | Rarely | - -Those nine combinations provide you with fine-grained control over the diagnostics the compiler emits for your code. You can enable more features in any area you're updating, without seeing more warnings you aren't ready to address yet. - -> [!IMPORTANT] -> The global nullable context does not apply for generated code files. Under either strategy, the nullable context is *disabled* for any source file marked as generated. This means any APIs in generated files are not annotated. No nullable warnings are produced for generated files. There are four ways a file is marked as generated: -> -> 1. In the .editorconfig, specify `generated_code = true` in a section that applies to that file. -> 1. Put `` or `` in a comment at the top of the file. It can be on any line in that comment, but the comment block must be the first element in the file. -> 1. Start the file name with *TemporaryGeneratedFile_* -> 1. End the file name with *.designer.cs*, *.generated.cs*, *.g.cs*, or *.g.i.cs*. -> -> Generators can opt-in using the [`#nullable`](language-reference/preprocessor-directives.md#nullable-context) preprocessor directive. - -By default, nullable annotation and warning flags are **disabled**. That means that your existing code compiles without changes and without generating any new warnings. Beginning with .NET 6, new projects include the `enable` element in all project templates, setting these flags to **enabled**. - -These options provide two distinct strategies to [update an existing codebase](nullable-migration-strategies.md) to use nullable reference types. - -## Known pitfalls - -Arrays and structs that contain reference types are known pitfalls in nullable references and the static analysis that determines null safety. In both situations, a non-nullable reference might be initialized to `null`, without generating warnings. - -### Structs - -A struct that contains non-nullable reference types allows assigning `default` for it without any warnings. Consider the following example: - -```csharp -using System; - -#nullable enable - -public struct Student -{ - public string FirstName; - public string? MiddleName; - public string LastName; -} - -public static class Program -{ - public static void PrintStudent(Student student) - { - Console.WriteLine($"First name: {student.FirstName.ToUpper()}"); - Console.WriteLine($"Middle name: {student.MiddleName?.ToUpper()}"); - Console.WriteLine($"Last name: {student.LastName.ToUpper()}"); - } - - public static void Main() => PrintStudent(default); -} -``` - -In the preceding example, there's no warning in `PrintStudent(default)` while the non-nullable reference types `FirstName` and `LastName` are null. - -Another more common case is when you deal with generic structs. Consider the following example: - -```csharp -#nullable enable - -public struct S -{ - public T Prop { get; set; } -} - -public static class Program -{ - public static void Main() - { - string s = default(S).Prop; - } -} -``` - -In the preceding example, the property `Prop` is `null` at run time. It's assigned to non-nullable string without any warnings. - -### Arrays - -Arrays are also a known pitfall in nullable reference types. Consider the following example that doesn't produce any warnings: - -```csharp -using System; - -#nullable enable - -public static class Program -{ - public static void Main() - { - string[] values = new string[10]; - string s = values[0]; - Console.WriteLine(s.ToUpper()); - } -} -``` - -In the preceding example, the declaration of the array shows it holds non-nullable strings, while its elements are all initialized to `null`. Then, the variable `s` is assigned a `null` value (the first element of the array). Finally, the variable `s` is dereferenced causing a runtime exception. - -### Constructors - -Constructor of a class will still call the finalizer, even when there was an exception thrown by that constructor. -
The following example demonstrates that behavior: - -```csharp -public class A -{ - private string _name; - private B _b; - - public A(string name) - { - ArgumentNullException.ThrowIfNullOrEmpty(name); - _name = name; - _b = new B(); - } - - ~A() - { - Dispose(); - } - - public void Dispose() - { - _b.Dispose(); - GC.SuppressFinalize(this); - } -} - -public class B: IDisposable -{ - public void Dispose() { } -} - -public void Main() -{ - var a = new A(string.Empty); -} -``` - -In the preceding example, the will be thrown when `_b.Dispose();` runs, if the `name` parameter was `null`. The call to `_b.Dispose();` won't ever throw when the constructor completes successfully. However, there's no warning issued by the compiler, because static analysis can't determine if a method (like a constructor) completes without a runtime exception being thrown. - -## See also - -- [Nullable reference types specification](~/_csharpstandard/standard/types.md#893-nullable-reference-types) -- [Unconstrained type parameter annotations](~/_csharpstandard/standard/classes.md#1525-type-parameter-constraints) -- [Intro to nullable references tutorial](tutorials/nullable-reference-types.md) -- [**Nullable** (C# Compiler option)](language-reference/compiler-options/language.md#nullable) -- [CS8602: Possible dereference of null warning](language-reference/compiler-messages/nullable-warnings.md#possible-dereference-of-null) diff --git a/docs/csharp/toc.yml b/docs/csharp/toc.yml index 47c2609a1bf59..5ccb3eef187fc 100644 --- a/docs/csharp/toc.yml +++ b/docs/csharp/toc.yml @@ -202,8 +202,6 @@ items: href: tutorials/top-level-statements.md - name: Explore indexes and ranges href: tutorials/ranges-indexes.md - - name: Work with nullable reference types - href: tutorials/nullable-reference-types.md - name: Explore patterns in objects href: tutorials/patterns-objects.md - name: String interpolation @@ -288,12 +286,18 @@ items: href: asynchronous-programming/cancel-async-tasks-after-a-period-of-time.md - name: Generate and consume asynchronous streams href: asynchronous-programming/generate-consume-asynchronous-stream.md -- name: C# concepts +- name: Null safety items: - name: Nullable reference types - href: nullable-references.md - - name: Nullable reference migrations - href: nullable-migration-strategies.md + href: fundamentals/null-safety/nullable-reference-types.md + - name: Resolve nullable warnings + href: fundamentals/null-safety/resolve-warnings.md + - name: Nullable migration strategies + href: fundamentals/null-safety/migration-strategies.md + - name: "Tutorial: Express your design intent with nullable reference types" + href: fundamentals/tutorials/nullable-reference-types.md +- name: C# concepts + items: - name: Methods href: methods.md - name: Iterators diff --git a/docs/csharp/tour-of-csharp/tips-for-java-developers.md b/docs/csharp/tour-of-csharp/tips-for-java-developers.md index 1ebc13092eaee..5dd3abd94e445 100644 --- a/docs/csharp/tour-of-csharp/tips-for-java-developers.md +++ b/docs/csharp/tour-of-csharp/tips-for-java-developers.md @@ -75,7 +75,7 @@ String value = optional.orElse("default"); string value = input ?? "default"; ``` -Learn more: [Nullable reference types](../nullable-references.md) +Learn more: [Nullable reference types](../fundamentals/null-safety/nullable-reference-types.md) ## What's familiar @@ -83,7 +83,7 @@ You can work productively in C# almost immediately because of the similarities. 1. [***Pattern matching***](../fundamentals/functional/pattern-matching.md): Pattern matching enables concise conditional statements and expressions based on the shape of complex data structures. The [`is` statement](../language-reference/operators/is.md) checks if a variable "is" some pattern. The pattern-based [`switch` expression](../language-reference/operators/switch-expression.md) provides a rich syntax to inspect a variable and make decisions based on its characteristics. 1. [***String interpolation***](../language-reference/tokens/interpolated.md) and [***raw string literals***](../language-reference/builtin-types/reference-types.md#string-literals): String interpolation enables you to insert evaluated expressions in a string, rather than using positional identifiers. Raw string literals provide a way to minimize escape sequences in text. -1. [***Nullable and non-nullable types***](../nullable-references.md): C# supports *nullable value types*, and *nullable reference types* by appending the `?` suffix to a type. For nullable types, the compiler warns you if you don't check for `null` before dereferencing the expression. For non-nullable types, the compiler warns you if you might be assigning a `null` value to that variable. Non-nullable reference types minimize programming errors that throw a . +1. [***Nullable and non-nullable types***](../fundamentals/null-safety/nullable-reference-types.md): C# supports *nullable value types*, and *nullable reference types* by appending the `?` suffix to a type. For nullable types, the compiler warns you if you don't check for `null` before dereferencing the expression. For non-nullable types, the compiler warns you if you might be assigning a `null` value to that variable. Non-nullable reference types minimize programming errors that throw a . 1. [***Extensions***](../programming-guide/classes-and-structs/extension-methods.md): In C#, you can create members that *extend* a class or interface. Extensions provide new behavior for a type from a library, or all types that implement a given interface. 1. [***LINQ***](../linq/index.md): Language integrated query (LINQ) provides a common syntax to query and transform data, regardless of its storage. 1. [***Local functions***](../programming-guide/classes-and-structs/local-functions.md): In C#, you can nest functions inside methods, or other local functions. Local functions provide yet another layer of encapsulation. diff --git a/docs/csharp/tour-of-csharp/tips-for-javascript-developers.md b/docs/csharp/tour-of-csharp/tips-for-javascript-developers.md index 2abc303450c51..62eefb06f1457 100644 --- a/docs/csharp/tour-of-csharp/tips-for-javascript-developers.md +++ b/docs/csharp/tour-of-csharp/tips-for-javascript-developers.md @@ -92,7 +92,7 @@ As you learn C#, you encounter concepts that aren't part of JavaScript. Some of 1. [***C# Type System***](../fundamentals/types/index.md): C# is a strongly typed language. Every variable has a type, and that type can't change. You define `class` or `struct` types. You can define [`interface`](../fundamentals/types/interfaces.md) definitions that define behavior implemented by other types. TypeScript includes many of these concepts, but because TypeScript is built on JavaScript, the type system isn't as strict. 1. [***Pattern matching***](../fundamentals/functional/pattern-matching.md): Pattern matching enables concise conditional statements and expressions based on the shape of complex data structures. The [`is` expression](../language-reference/operators/is.md) checks if a variable "is" some pattern. The pattern-based [`switch` expression](../language-reference/operators/switch-expression.md) provides a rich syntax to inspect a variable and make decisions based on its characteristics. 1. [***String interpolation***](../language-reference/tokens/interpolated.md) and [***raw string literals***](../language-reference/builtin-types/reference-types.md#string-literals): String interpolation enables you to insert evaluated expressions in a string, rather than using positional identifiers. Raw string literals provide a way to minimize escape sequences in text. -1. [***Nullable and non-nullable types***](../nullable-references.md): C# supports *nullable value types* and *nullable reference types* by appending the `?` suffix to a type. For nullable types, the compiler warns you if you don't check for `null` before dereferencing the expression. For non-nullable types, the compiler warns you if you might be assigning a `null` value to that variable. These features can minimize your application throwing a . The syntax might be familiar from TypeScript's use of `?` for optional properties. +1. [***Nullable and non-nullable types***](../fundamentals/null-safety/nullable-reference-types.md): C# supports *nullable value types* and *nullable reference types* by appending the `?` suffix to a type. For nullable types, the compiler warns you if you don't check for `null` before dereferencing the expression. For non-nullable types, the compiler warns you if you might be assigning a `null` value to that variable. These features can minimize your application throwing a . The syntax might be familiar from TypeScript's use of `?` for optional properties. 1. [***LINQ***](../linq/index.md): Language integrated query (LINQ) provides a common syntax to query and transform data, regardless of its storage. > [!TIP] diff --git a/docs/csharp/tour-of-csharp/tips-for-python-developers.md b/docs/csharp/tour-of-csharp/tips-for-python-developers.md index 6ae25e952059a..4f024f24bad7c 100644 --- a/docs/csharp/tour-of-csharp/tips-for-python-developers.md +++ b/docs/csharp/tour-of-csharp/tips-for-python-developers.md @@ -88,7 +88,7 @@ As you learn C#, you discover these important concepts where C# is different fro 1. [***Indentation vs. tokens***](./tutorials/branches-and-loops.md): In Python, newlines and indentation are first-class syntactic elements. In C#, whitespace isn't significant. Tokens, like `;` separate statements, and other tokens `{` and `}` control block scope for `if` and other block statements. However, for readability, most coding styles (including the style used in these docs) use indentation to reinforce the block scopes declared by `{` and `}`. 1. [***Static typing***](../fundamentals/types/index.md): In C#, a variable declaration includes its type. Reassigning a variable to an object of a different type generates a compiler error. In Python, the type can change when reassigned. -1. [***Nullable types***](../nullable-references.md): C# variables can be *nullable* or *non-nullable*. A non-nullable type is one that can't be null (or nothing). It always refers to a valid object. By contrast, a nullable type might either refer to a valid object, or null. +1. [***Nullable types***](../fundamentals/null-safety/nullable-reference-types.md): C# variables can be *nullable* or *non-nullable*. A non-nullable type is one that can't be null (or nothing). It always refers to a valid object. By contrast, a nullable type might either refer to a valid object, or null. 1. [***LINQ***](../linq/index.md): The query expression keywords that make up Language Integrated Query (LINQ) aren't keywords in Python. However, Python libraries like `itertools`, `more-itertools`, and `py-linq` provide similar functionality. 1. [***Generics***](../fundamentals/types/generics.md): C# generics use C# static typing to make assertions about the arguments supplied for type parameters. A generic algorithm might need to specify constraints that an argument type must satisfy. diff --git a/docs/csharp/tutorials/nullable-reference-types.md b/docs/csharp/tutorials/nullable-reference-types.md deleted file mode 100644 index afbc1e430e9a3..0000000000000 --- a/docs/csharp/tutorials/nullable-reference-types.md +++ /dev/null @@ -1,217 +0,0 @@ ---- -title: Design with nullable reference types -description: This advanced tutorial provides an introduction to nullable reference types. You learn to express your design intent on when reference values might be null, and have the compiler enforce when they can't be null. -ms.date: 11/18/2025 -ms.subservice: null-safety ---- -# Tutorial: Express your design intent more clearly with nullable and non-nullable reference types - -[Nullable reference types](../nullable-references.md) complement reference types the same way nullable value types complement value types. You declare a variable to be a **nullable reference type** by appending a `?` to the type. For example, `string?` represents a nullable `string`. You can use these new types to more clearly express your design intent: some variables *must always have a value* while others *might be missing a value*. - -In this tutorial, you learn how to: - -> [!div class="checklist"] -> -> - Incorporate nullable and non-nullable reference types into your designs -> - Enable nullable reference type checks throughout your code. -> - Write code where the compiler enforces those design decisions. -> - Use the nullable reference feature in your own designs - -## Prerequisites - -[!INCLUDE [Prerequisites](../../../includes/prerequisites-basic.md)] - -This tutorial assumes you're familiar with C# and .NET, including either Visual Studio or the .NET CLI. - -## Incorporate nullable reference types into your designs - -In this tutorial, you'll build a library that models running a survey. The code uses both nullable reference types and non-nullable reference types to represent the real-world concepts. The survey questions can never be null. A respondent might prefer not to answer a question. The responses might be `null` in this case. - -The code you write for this sample expresses that intent, and the compiler enforces that intent. - -## Create the application and enable nullable reference types - -Create a new console application either in Visual Studio or from the command line using `dotnet new console`. Name the application `NullableIntroduction`. Once you create the application, you need to specify that the entire project compiles in an enabled **nullable annotation context**. Open the *.csproj* file and add a `Nullable` element to the `PropertyGroup` element. Set its value to `enable`. You must opt in to the **nullable reference types** feature in projects created before C# 11 / .NET 7. Once the feature is turned on, existing reference variable declarations become **non-nullable reference types**. While that decision helps find issues where existing code might not have proper null-checks, it might not accurately reflect your original design intent: - -```xml -enable -``` - -### Design the types for the application - -This survey application requires creating these classes: - -- A class that models the list of questions. -- A class that models a list of people contacted for the survey. -- A class that models the answers from a person that took the survey. - -These types make use of both nullable and non-nullable reference types to express which members are required and which members are optional. Nullable reference types communicate that design intent clearly: - -- The questions that are part of the survey can never be null: It makes no sense to ask an empty question. -- The respondents can never be null. You want to track people you contacted, even respondents that declined to participate. -- Any response to a question might be null. Respondents can decline to answer some or all questions. - -You might be so accustomed to reference types that allow `null` values that you might miss other opportunities to declare non-nullable instances: - -- The collection of questions should be non-nullable. -- The collection of respondents should be non-nullable. - -As you write the code, you see that a non-nullable reference type as the default for references avoids common mistakes that could lead to s. One lesson from this tutorial is that you made decisions about which variables could or couldn't be `null`. The language didn't provide syntax to express those decisions. Now it does. - -The app you build does the following steps: - -1. Creates a survey and adds questions to it. -1. Creates a pseudo-random set of respondents for the survey. -1. Contacts respondents until the completed survey size reaches the goal number. -1. Writes out important statistics on the survey responses. - -## Build the survey with nullable and non-nullable reference types - -The first code you write creates the survey. You write classes to model a survey question and a survey run. Your survey has three types of questions, distinguished by the format of the answer: Yes/No answers, number answers, and text answers. Create a `public SurveyQuestion` class: - -```csharp -namespace NullableIntroduction -{ - public class SurveyQuestion - { - } -} -``` - -The compiler interprets every reference type variable declaration as a **non-nullable** reference type for code in an enabled nullable annotation context. You can see your first warning by adding properties for the question text and the type of question, as shown in the following code: - -```csharp -namespace NullableIntroduction -{ - public enum QuestionType - { - YesNo, - Number, - Text - } - - public class SurveyQuestion - { - public string QuestionText { get; } - public QuestionType TypeOfQuestion { get; } - } -} -``` - -Because you didn't initialize `QuestionText`, the compiler issues a warning that a non-nullable property wasn't initialized. Your design requires the question text to be non-null, so you add a constructor to initialize it and the `QuestionType` value as well. The finished class definition looks like the following code: - -:::code language="csharp" source="./snippets/NullableIntroduction/SurveyQuestion.cs"::: - -Adding the constructor removes the warning. The constructor argument is also a non-nullable reference type, so the compiler doesn't issue any warnings. - -Next, create a `public` class named `SurveyRun`. This class contains a list of `SurveyQuestion` objects and methods to add questions to the survey, as shown in the following code: - -```csharp -using System.Collections.Generic; - -namespace NullableIntroduction -{ - public class SurveyRun - { - private List surveyQuestions = new List(); - - public void AddQuestion(QuestionType type, string question) => - AddQuestion(new SurveyQuestion(type, question)); - public void AddQuestion(SurveyQuestion surveyQuestion) => surveyQuestions.Add(surveyQuestion); - } -} -``` - -As before, you must initialize the list object to a non-null value or the compiler issues a warning. There are no null checks in the second overload of `AddQuestion` because the compiler helps enforce the non-nullable contract: You declared that variable to be non-nullable. While the compiler warns about potential null assignments, runtime null values are still possible. For public APIs, consider adding argument validation even for non-nullable reference types, since client code might not have nullable reference types enabled or could intentionally pass null. - -Switch to *Program.cs* in your editor and replace the contents of `Main` with the following lines of code: - -:::code language="csharp" source="./snippets/NullableIntroduction/Program.cs" id="AddQuestions"::: - -Because the entire project is in an enabled nullable annotation context, you get warnings when you pass `null` to any method expecting a non-nullable reference type. Try it by adding the following line to `Main`: - -```csharp -surveyRun.AddQuestion(QuestionType.Text, default); -``` - -## Create respondents and get answers to the survey - -Next, write the code that generates answers to the survey. This process involves several small tasks: - -1. Build a method that generates respondent objects. These objects represent people asked to fill out the survey. -1. Build logic to simulate asking the questions to a respondent and collecting answers or noting that a respondent didn't answer. -1. Repeat until enough respondents answer the survey. - -You need a class to represent a survey response, so add that now. Enable nullable support. Add an `Id` property and a constructor that initializes it, as shown in the following code: - -```csharp -namespace NullableIntroduction -{ - public class SurveyResponse - { - public int Id { get; } - - public SurveyResponse(int id) => Id = id; - } -} -``` - -Next, add a `static` method to create new participants by generating a random ID: - -:::code language="csharp" source="./snippets/NullableIntroduction/SurveyResponse.cs" id="Random"::: - -The main responsibility of this class is to generate the responses for a participant to the questions in the survey. This responsibility has a few steps: - -1. Ask for participation in the survey. If the person doesn't consent, return a missing (or null) response. -1. Ask each question and record the answer. Each answer might also be missing (or null). - -Add the following code to your `SurveyResponse` class: - -:::code language="csharp" source="./snippets/NullableIntroduction/SurveyResponse.cs" id="AnswerSurvey"::: - -The storage for the survey answers is a `Dictionary?`, indicating that it might be null. You're using the new language feature to declare your design intent, both to the compiler and to anyone reading your code later. If you ever dereference `surveyResponses` without checking for the `null` value first, you get a compiler warning. You don't get a warning in the `AnswerSurvey` method because the compiler can determine the `surveyResponses` variable was set to a non-null value in the preceding code. - -Using `null` for missing answers highlights a key point for working with nullable reference types: your goal isn't to remove all `null` values from your program. Rather, your goal is to ensure that the code you write expresses the intent of your design. Missing values are a necessary concept to express in your code. The `null` value is a clear way to express those missing values. Trying to remove all `null` values leads to defining some other way to express those missing values without `null`. - -Next, you need to write the `PerformSurvey` method in the `SurveyRun` class. Add the following code in the `SurveyRun` class: - -:::code language="csharp" source="./snippets/NullableIntroduction/SurveyRun.cs" id="PerformSurvey"::: - -Here again, your choice of a nullable `List?` indicates the response might be null. That indicates the survey hasn't been given to any respondents yet. Notice that respondents are added until enough consent. - -The last step to run the survey is to add a call to perform the survey at the end of the `Main` method: - -:::code language="csharp" source="./snippets/NullableIntroduction/Program.cs" id="RunSurvey"::: - -## Examine survey responses - -The last step is to display survey results. You add code to many of the classes you wrote. This code demonstrates the value of distinguishing nullable and non-nullable reference types. Start by adding the following two expression-bodied members to the `SurveyResponse` class: - -:::code language="csharp" source="./snippets/NullableIntroduction/SurveyResponse.cs" id="SurveyStatus"::: - -Because `surveyResponses` is a nullable reference type, null checks are necessary before de-referencing it. The `Answer` method returns a non-nullable string, so we have to cover the case of a missing answer by using the null-coalescing operator. - -Next, add these three expression-bodied members to the `SurveyRun` class: - -:::code language="csharp" source="./snippets/NullableIntroduction/SurveyRun.cs" id="RunReport"::: - -The `AllParticipants` member must take into account that the `respondents` variable might be null, but the return value can't be null. If you change that expression by removing the `??` and the empty sequence that follows, the compiler warns you the method might return `null` and its return signature returns a non-nullable type. - -Finally, add the following loop at the bottom of the `Main` method: - -:::code language="csharp" source="./snippets/NullableIntroduction/Program.cs" id="WriteAnswers"::: - -You don't need any `null` checks in this code because you designed the underlying interfaces so that they all return non-nullable reference types. The compiler's static analysis helps ensure these design contracts are followed. - -## Get the code - -You can get the code for the finished tutorial from our [samples](https://github.com/dotnet/samples) repository in the [csharp/NullableIntroduction](https://github.com/dotnet/samples/tree/main/csharp/NullableIntroduction) folder. - -Experiment by changing the type declarations between nullable and non-nullable reference types. See how that generates different warnings to ensure you don't accidentally dereference a `null`. - -## Next steps - -Learn how to use nullable reference type when using Entity Framework: - -> [!div class="nextstepaction"] -> [Entity Framework Core Fundamentals: Working with Nullable Reference Types](/ef/core/miscellaneous/nullable-reference-types) diff --git a/docs/framework/debug-trace-profile/code-contracts.md b/docs/framework/debug-trace-profile/code-contracts.md index c75a998ae916c..ceb87c6e2666e 100644 --- a/docs/framework/debug-trace-profile/code-contracts.md +++ b/docs/framework/debug-trace-profile/code-contracts.md @@ -17,7 +17,7 @@ ms.assetid: 84526045-496f-489d-8517-a258cf76f040 Code contracts provide a way to specify preconditions, postconditions, and object invariants in .NET Framework code. Preconditions are requirements that must be met when entering a method or property. Postconditions describe expectations at the time the method or property code exits. Object invariants describe the expected state for a class that is in a good state. > [!NOTE] -> Code contracts aren't supported in .NET 5+ (including .NET Core versions). Consider using [Nullable reference types](../../csharp/nullable-references.md) instead. +> Code contracts aren't supported in .NET 5+ (including .NET Core versions). Consider using [Nullable reference types](../../csharp/fundamentals/null-safety/nullable-reference-types.md) instead. Code contracts include classes for marking your code, a static analyzer for compile-time analysis, and a runtime analyzer. The classes for code contracts can be found in the namespace. diff --git a/docs/fundamentals/code-analysis/style-rules/ide0370.md b/docs/fundamentals/code-analysis/style-rules/ide0370.md index 020138eba0531..9b3aad1eff5a4 100644 --- a/docs/fundamentals/code-analysis/style-rules/ide0370.md +++ b/docs/fundamentals/code-analysis/style-rules/ide0370.md @@ -73,4 +73,4 @@ For more information, see [How to suppress code analysis warnings](../suppress-w ## See also -- [Nullable reference types](../../../csharp/nullable-references.md) +- [Nullable reference types](../../../csharp/fundamentals/null-safety/nullable-reference-types.md) diff --git a/docs/fundamentals/syslib-diagnostics/syslib1026.md b/docs/fundamentals/syslib-diagnostics/syslib1026.md index b29d6a508901d..bd1e3d9a79e3e 100644 --- a/docs/fundamentals/syslib-diagnostics/syslib1026.md +++ b/docs/fundamentals/syslib-diagnostics/syslib1026.md @@ -8,7 +8,7 @@ f1_keywords: # SYSLIB1026: C# language version not supported by the source generator -The logging source generator generates code using the [nullable](../../csharp/nullable-references.md) feature, which is only supported starting in C# 8. +The logging source generator generates code using the [nullable](../../csharp/fundamentals/null-safety/nullable-reference-types.md) feature, which is only supported starting in C# 8. ## Workarounds