diff --git a/api/index.md b/api/index.md index f582c52560b..ecbf46b3eb7 100644 --- a/api/index.md +++ b/api/index.md @@ -1,7 +1,7 @@ --- layout: ApiBrowserPage -hide_bc: -title: ".NET API ブラウザー" +hide_bc: true +title: .NET API ブラウザー quickFilterColumn1: netframework-4.7.1,netcore-2.0,netstandard-2.0 quickFilterColumn2: xamarinios-10.8,xamarinandroid-7.1,xamarinmac-3.0 quickFilterColumn3: azure-dotnet,aspnetcore-2.0 diff --git a/docs/core/tools/csproj.md b/docs/core/tools/csproj.md index a5ae9a12f8c..525429d6f34 100644 --- a/docs/core/tools/csproj.md +++ b/docs/core/tools/csproj.md @@ -1,7 +1,7 @@ --- -title: ".NET Core の csproj 形式に追加されたもの" -description: "既存の csproj ファイルと .NET Core の csproj ファイルの違いについて説明します" -keywords: "リファレンス, csproj, .NET Core" +title: .NET Core の csproj 形式に追加されたもの +description: 既存の csproj ファイルと .NET Core の csproj ファイルの違いについて説明します +keywords: リファレンス, csproj, .NET Core author: blackdwarf ms.author: mairaw ms.date: 09/22/2017 @@ -11,11 +11,11 @@ ms.devlang: dotnet ms.assetid: bdc29497-64f2-4d11-a21b-4097e0bdf5c9 ms.workload: - dotnetcore -ms.openlocfilehash: d2a318f099eaa67912c2cecd1c67ceebaee8629e -ms.sourcegitcommit: dd6ea7f0e581ac84e0a90d9b23c463fcf1ec3ce7 +ms.openlocfilehash: fdf91bdb24819c2d92b708e5937980ac2fb0d5fc +ms.sourcegitcommit: 935d5267c44f9bce801468ef95f44572f1417e8c ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 01/23/2018 +ms.lasthandoff: 03/28/2018 --- # .NET Core の csproj 形式に追加されたもの diff --git a/docs/core/tools/dotnet-test.md b/docs/core/tools/dotnet-test.md index c352033c6e9..65c38fcb7f2 100644 --- a/docs/core/tools/dotnet-test.md +++ b/docs/core/tools/dotnet-test.md @@ -1,18 +1,19 @@ --- -title: "dotnet test コマンド - .NET Core CLI" -description: "dotnet test コマンドは、指定されたプロジェクトで単体テストを実行する場合に使用されます。" +title: dotnet test コマンド - .NET Core CLI +description: dotnet test コマンドは、指定されたプロジェクトで単体テストを実行する場合に使用されます。 author: mairaw ms.author: mairaw ms.date: 08/14/2017 ms.topic: article ms.prod: .net-core ms.technology: dotnet-cli -ms.workload: dotnetcore -ms.openlocfilehash: fac5e3cb602f6dc5c06b1b29e9924ce4be7ae273 -ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d +ms.workload: +- dotnetcore +ms.openlocfilehash: 6102281c4daf149f31e65ef8360831fe9e0ef4f6 +ms.sourcegitcommit: 935d5267c44f9bce801468ef95f44572f1417e8c ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 12/23/2017 +ms.lasthandoff: 03/28/2018 --- # dotnet test @@ -42,9 +43,9 @@ dotnet test [-h|--help] ## 説明 -`dotnet test` コマンドは、指定されたプロジェクトで単体テストを実行する場合に使用されます。 単体テストは、単体テスト フレームワーク (MSTest、NUnit、xUnit など) および単体テスト フレームワークの dotnet テスト ランナーに対する依存関係があるコンソール アプリケーションです。 これらは NuGet パッケージとしてパッケージ化され、プロジェクトの通常の依存関係として復元されます。 +`dotnet test` コマンドは、指定されたプロジェクトで単体テストを実行する場合に使用されます。 `dotnet test` コマンドは、プロジェクト用に指定されたテスト ランナーのコンソール アプリケーションを起動します。 テスト ランナーでは、単体テスト フレームワーク (MSTest、NUnit、xUnit など) 用に定義されたテストを実行し、各テストの成功または失敗をレポートします。 テスト ランナーと単体テスト ライブラリは、NuGet パッケージとしてパッケージ化され、プロジェクトの通常の依存関係として復元されます。 -テスト プロジェクトでは、テスト ランナーを指定する必要もあります。 これは、通常の `` 要素を使用して指定されます。次のサンプル プロジェクト ファイルのようになります。 +テスト プロジェクトでは、通常の `` 要素を使用してテスト ランナーを指定します。次のサンプル プロジェクト ファイルのようになります。 [!code-xml[XUnit Basic Template](../../../samples/snippets/csharp/xunit-test/xunit-test.csproj)] diff --git a/docs/core/tutorials/using-on-macos.md b/docs/core/tutorials/using-on-macos.md index bd899f7babc..cca95fe9862 100644 --- a/docs/core/tutorials/using-on-macos.md +++ b/docs/core/tutorials/using-on-macos.md @@ -1,6 +1,6 @@ --- -title: "macOS での .NET Core の概要" -description: "このドキュメントでは、Visual Studio Code を使用して .NET Core ソリューションを作成する手順とワークフローを説明します。" +title: macOS での .NET Core の概要 +description: このドキュメントでは、Visual Studio Code を使用して .NET Core ソリューションを作成する手順とワークフローを説明します。 keywords: .NET, .NET Core, Mac, macOS, Visual Studio Code author: bleroy ms.author: mairaw @@ -9,12 +9,13 @@ ms.topic: get-started-article ms.prod: .net-core ms.devlang: dotnet ms.assetid: 8ad82148-dac8-4b31-9128-b0e9610f4d9b -ms.workload: dotnetcore -ms.openlocfilehash: 5a8f1fca7623763d43b977d0cc44396de249c62e -ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d +ms.workload: +- dotnetcore +ms.openlocfilehash: 8c045e5625cee53acc4daa3c9fca524bc953b5a1 +ms.sourcegitcommit: 935d5267c44f9bce801468ef95f44572f1417e8c ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 12/23/2017 +ms.lasthandoff: 03/28/2018 --- # macOS での .NET Core の概要 @@ -102,7 +103,7 @@ namespace Library } ``` -`Thing` クラスには、`Get` という 1 つのパブリック メソッドが含まれます。このメソッドは 2 つの数値の合計を返しますが、そのためには合計値を文字列に変換した後、それを整数に逆シリアル化します。 このコードでは、[`using static` ディレクティブ](../../csharp/language-reference/keywords/using-static.md)、[式本体のメンバー](../../csharp/whats-new/csharp-7.md#more-expression-bodied-members)、および[補間文字列](../../csharp/language-reference/keywords/interpolated-strings.md)など、C# の最新の機能をいくつか利用しています。 +`Thing` クラスには、`Get` という 1 つのパブリック メソッドが含まれます。このメソッドは 2 つの数値の合計を返しますが、そのためには合計値を文字列に変換した後、それを整数に逆シリアル化します。 このコードでは、[`using static` ディレクティブ](../../csharp/language-reference/keywords/using-static.md)、[式本体のメンバー](../../csharp/whats-new/csharp-7.md#more-expression-bodied-members)、および[文字列補間](../../csharp/language-reference/tokens/interpolated.md)など、C# の最新の機能をいくつか利用しています。 [`dotnet build`](../tools/dotnet-build.md) コマンドを使用して、ライブラリをビルドします。 これにより、*golden/library/bin/Debug/netstandard1.4* に *library.dll* ファイルが生成されます。 diff --git a/docs/core/tutorials/using-with-xplat-cli.md b/docs/core/tutorials/using-with-xplat-cli.md index c937e5048ca..e4302d957ca 100644 --- a/docs/core/tutorials/using-with-xplat-cli.md +++ b/docs/core/tutorials/using-with-xplat-cli.md @@ -1,6 +1,6 @@ --- -title: "CLI を使用する .NET Core に関する概要" -description: "Windows、Linux、または macOS の .NET Core での、.NET Core コマンド ライン インターフェイス (CLI) の使用方法を段階的に説明するチュートリアル。" +title: CLI を使用する .NET Core に関する概要 +description: Windows、Linux、または macOS の .NET Core での、.NET Core コマンド ライン インターフェイス (CLI) の使用方法を段階的に説明するチュートリアル。 keywords: .NET Core, CLI author: cartermp ms.author: mairaw @@ -10,12 +10,13 @@ ms.prod: .net-core ms.technology: dotnet-cli ms.devlang: dotnet ms.assetid: 41632e63-d5c6-4427-a09e-51dc1116d45f -ms.workload: dotnetcore -ms.openlocfilehash: 544274783e8a77f55c8ec7e1da0069bf8bdf7b0b -ms.sourcegitcommit: e7f04439d78909229506b56935a1105a4149ff3d +ms.workload: +- dotnetcore +ms.openlocfilehash: 8587857ef0d0f48f88331d9588e7e97e3290d34c +ms.sourcegitcommit: 935d5267c44f9bce801468ef95f44572f1417e8c ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 12/23/2017 +ms.lasthandoff: 03/28/2018 --- # Windows/Linux/macOS の .NET Core でのコマンド ラインの使用に関する概要 diff --git a/docs/core/tutorials/vb-with-visual-studio.md b/docs/core/tutorials/vb-with-visual-studio.md index fedfc8bcb81..48099e87245 100644 --- a/docs/core/tutorials/vb-with-visual-studio.md +++ b/docs/core/tutorials/vb-with-visual-studio.md @@ -1,7 +1,7 @@ --- -title: "Visual Studio 2017 での .NET Core および Visual Basic を使用した Hello World アプリケーションの構築" -description: "Visual Studio 2017 で Visual Basic を使用した、単純な .NET Core コンソール アプリケーションを構築する方法について説明します。" -keywords: ".NET Core、.NET Core コンソール アプリケーション、Visual Studio 2017" +title: Visual Studio 2017 での .NET Core および Visual Basic を使用した Hello World アプリケーションの構築 +description: Visual Studio 2017 で Visual Basic を使用した、単純な .NET Core コンソール アプリケーションを構築する方法について説明します。 +keywords: .NET Core、.NET Core コンソール アプリケーション、Visual Studio 2017 author: rpetrusha ms.author: ronpet ms.date: 08/07/2017 @@ -12,11 +12,11 @@ dev_langs: - vb ms.workload: - dotnetcore -ms.openlocfilehash: 0e3dbdb5df72963980f459643fcb5f4588e0029f -ms.sourcegitcommit: 655fd4f78741967f80c409cef98347fdcf77857d +ms.openlocfilehash: c3775fccf8d6e7c544cbd0b05df7043752e8bef9 +ms.sourcegitcommit: 935d5267c44f9bce801468ef95f44572f1417e8c ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 02/28/2018 +ms.lasthandoff: 03/28/2018 --- # Visual Studio 2017 での .NET Core を使用した Visual Basic Hello World アプリケーションの構築 @@ -70,7 +70,7 @@ ms.lasthandoff: 02/28/2018 ![Main メソッドが更新された Visual Studio プログラム ファイル](./media/vb-with-visual-studio/codewindow.png) - このコードは、"What is your name?" と コンソール ウィンドウに表示して、ユーザーが文字列を入力して Enter キーを押すまで待機します。 これは文字列を `name` という変数に格納します。 さらに現在の現地時刻を含む プロパティの値を取得して、それを `currentDate` という変数に代入します。 最後に[挿入文字列](../../csharp/language-reference/keywords/interpolated-strings.md)を使用して、これらの値をコンソール ウィンドウに表示します。 + このコードは、"What is your name?" と コンソール ウィンドウに表示して、ユーザーが文字列を入力して Enter キーを押すまで待機します。 これは文字列を `name` という変数に格納します。 さらに現在の現地時刻を含む プロパティの値を取得して、それを `currentDate` という変数に代入します。 最後に[挿入文字列](../../visual-basic/programming-guide/language-features/strings/interpolated-strings.md)を使用して、これらの値をコンソール ウィンドウに表示します。 1. **[ビルド]** > **[ソリューションのビルド]** と選択して、プログラムをコンパイルします。 diff --git a/docs/core/tutorials/with-visual-studio.md b/docs/core/tutorials/with-visual-studio.md index cc74596ce3a..0fd8c6be54a 100644 --- a/docs/core/tutorials/with-visual-studio.md +++ b/docs/core/tutorials/with-visual-studio.md @@ -1,7 +1,7 @@ --- -title: "Visual Studio 2017 での .NET Core および C# を使用した Hello World アプリケーションの構築" -description: "Visual Studio 2017 で C# を使用した、単純な .NET Core コンソール アプリケーションを構築する方法について説明します。" -keywords: ".NET Core、.NET Core コンソール アプリケーション、Visual Studio 2017" +title: Visual Studio 2017 での .NET Core および C# を使用した Hello World アプリケーションの構築 +description: Visual Studio 2017 で C# を使用した、単純な .NET Core コンソール アプリケーションを構築する方法について説明します。 +keywords: .NET Core、.NET Core コンソール アプリケーション、Visual Studio 2017 author: BillWagner ms.author: wiwagn ms.date: 09/13/2017 @@ -12,11 +12,11 @@ ms.devlang: csharp ms.assetid: 97aa50bf-bdf8-416d-a56c-ac77504c14ea ms.workload: - dotnetcore -ms.openlocfilehash: 21b36bfa355bbea1b078c4bd29afdf5afeb61453 -ms.sourcegitcommit: 655fd4f78741967f80c409cef98347fdcf77857d +ms.openlocfilehash: 7042a7356fa1b65f7a152208dbfaa9ba27081a8d +ms.sourcegitcommit: 935d5267c44f9bce801468ef95f44572f1417e8c ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 02/28/2018 +ms.lasthandoff: 03/28/2018 --- # Visual Studio 2017 での .NET Core を使用した C# Hello World アプリケーションの構築 @@ -70,7 +70,7 @@ ms.lasthandoff: 02/28/2018 ![Main メソッドが更新された Visual Studio プログラムの C シャープ ファイル](./media/with-visual-studio/codewindow.png) - このコードは、"What is your name?" と コンソール ウィンドウに表示して、ユーザーが文字列を入力して Enter キーを押すまで待機します。 これは文字列を `name` という変数に格納します。 さらに現在の現地時刻を含む プロパティの値を取得して、それを `date` という変数に代入します。 最後に[挿入文字列](../../csharp/language-reference/keywords/interpolated-strings.md)を使用して、これらの値をコンソール ウィンドウに表示します。 + このコードは、"What is your name?" と コンソール ウィンドウに表示して、ユーザーが文字列を入力して Enter キーを押すまで待機します。 これは文字列を `name` という変数に格納します。 さらに現在の現地時刻を含む プロパティの値を取得して、それを `date` という変数に代入します。 最後に[挿入文字列](../../csharp/language-reference/tokens/interpolated.md)を使用して、これらの値をコンソール ウィンドウに表示します。 1. **[ビルド]** > **[ソリューションのビルド]** と選択して、プログラムをコンパイルします。 diff --git a/docs/csharp/how-to/compare-strings.md b/docs/csharp/how-to/compare-strings.md new file mode 100644 index 00000000000..5abe3d3dac6 --- /dev/null +++ b/docs/csharp/how-to/compare-strings.md @@ -0,0 +1,130 @@ +--- +title: '方法: 文字列を比較する - C# ガイド' +description: 大文字小文字の区別およびカルチャ固有の順序を使用してまたは使用せずに文字列値を比較および並べ替える方法について説明します。 +ms.date: 03/20/2018 +ms.prod: .net +ms.technology: +- devlang-csharp +ms.topic: article +helpviewer_keywords: +- strings [C#], comparison +- comparing strings [C#] +author: BillWagner +ms.author: wiwagn +ms.openlocfilehash: 3edc1ffdcb4d084f8f76ff27144402fbf98fcbdb +ms.sourcegitcommit: 935d5267c44f9bce801468ef95f44572f1417e8c +ms.translationtype: HT +ms.contentlocale: ja-JP +ms.lasthandoff: 03/28/2018 +--- +# 方法: C# で文字列を比較する # + +文字列を比較して、次の 2 つの質問のいずれかに回答します。"これら 2 つの文字列は等しいですか" または "これらを並べ替えるときにどのような順序でこれらの文字列を配置しますか" + +これら 2 つの質問は、文字列比較に影響する要因によって複雑になります。 +- 序数に基づく比較または言語的な比較を選択することができます。 +- 大文字小文字が重要なかどうかを選択できます。 +- カルチャに固有の比較を選択できます。 +- 言語的な比較は、カルチャおよびプラットフォームに依存します。 + +[!INCLUDE[interactive-note](~/includes/csharp-interactive-note.md)] + +文字列を比較するときに、それらの間で順序を定義します。 比較は、文字列のシーケンスの並べ替えに使用されます。 シーケンスが既知の順序の場合、ソフトウェアと人間の両方が簡単に検索できます。 その他の比較では、文字列が等しいかどうかを確認する場合があります。 これらの類似性チェックは等値に似ていますが、大文字小文字の違いなど、いくつかの違いは無視される場合があります。 + +## 既定の序数の比較 + +最も一般的な演算である 、または では、序数の比較、大文字小文字の比較、現在のカルチャを使用します。 これらの結果を次の例に示します。 + +[!code-csharp-interactive[Comparing strings using an ordinal comparison](../../../samples/snippets/csharp/how-to/strings/CompareStrings.cs#1)] + +序数の比較では、文字列を比較するときに言語の規則を考慮しません。 文字列の 1 文字ずつが比較されます。 大文字小文字を区別する比較では、比較で大文字と小文字を使用します。 これらの既定の比較方法に関する最も重要な点は、現在のカルチャが使用されるため、比較が実行されるコンピューターのロケールと言語の設定に結果が依存することです。 これらの比較は、コンピューターまたは場所が違っても順序が一貫している必要がある比較には適していません。 + +## 大文字と小文字を区別しない、序数に基づく比較 + + メソッドでは、 値を指定して、大文字と小文字を区別しない比較を指定できます。 大文字と小文字を区別しない比較を指定するブール型の引数を含む静的 メソッドもあります。 これを次のコードに示します。 + +[!code-csharp-interactive[Comparing strings ignoring case](../../../samples/snippets/csharp/how-to/strings/CompareStrings.cs#2)] + +## 言語的な比較 + +現在のカルチャの言語の規則を使用して文字列の順序を指定することもできます。 +これは、"単語の並べ替え順序" と呼ばれることもあります。 言語的な比較を実行するときには、一部の英数字以外の Unicode 文字に、特別な重みが割り当てられる場合があります。 たとえば、ハイフン ("-") に割り当てられる重みは非常に小さいため、並べ替え順序で "coop" と "co-op" の出現位置が隣接します。 さらに、いくつかの Unicode 文字が英数字のシーケンスと等しくなる可能性があります。 次の例では、ドイツ語で "They dance in the street" という語句を "ss" と 'ß' と共に使用します。 言語的に (Windows では)、"en-US" と "de-DE" の両方のカルチャで、"ss" はドイツ語の Essetz: 'ß' 文字と同じです。 + +[!code-csharp-interactive[Comparing strings using linguistic rules](../../../samples/snippets/csharp/how-to/strings/CompareStrings.cs#3)] + +このサンプルでは、言語的な比較に依存するオペレーティング システムの性質を示します。 対話型ウィンドウのホストは、Linux ホストです。 言語比較および序数比較は、同じ結果を生成します。 Windows ホストで同じこのサンプルを実行する場合、次の出力が表示されます。 + +```console + is less than using invariant culture + is greater than using ordinal comparison + is less than using invariant culture + is less than using ordinal comparison + is less than using invariant culture + is less than using ordinal comparison +``` + +Windows では、言語的な比較から序数に基づく比較に変更した場合に、"cop"、"coop"、および "co-op" の並べ替え順序は変更されます。 ドイツ語の 2 つの文も、異なる比較の種類を使用して異なる方法で比較されます。 + +## 特定のカルチャを使用した比較 + +このサンプルは、現在のカルチャの を保存します。 +元のカルチャを設定し、現在のスレッド オブジェクトを取得できます。 比較は、カルチャ固有の比較を確保するために 値を使用して実行されます。 + +使用されるカルチャは言語的な比較に影響します。 次の例は、"en-US" カルチャと "de-DE" カルチャを使用する 2 つのドイツ語の文の比較の結果を示しています。 + +[!code-csharp-interactive[Comparing strings across cultures](../../../samples/snippets/csharp/how-to/strings/CompareStrings.cs#4)] + +カルチャに依存した比較は、一般的にユーザーによる文字列入力とユーザーによる他の文字列入力の比較および並べ替えに使用されます。 これらの文字列の文字および並べ替え規則は、ユーザーのコンピューターのロケールによって異なる場合があります。 同一の文字を含む文字列でも、現在のスレッドのカルチャに応じて、異なる方法で並べ替えられます。 さらに、Windows コンピューターでローカルでこのサンプル コードを試すと、次の結果が表示されます。 + +```console + is less than using en-US culture + is greater than using ordinal comparison + is less than using en-US culture + is less than using ordinal comparison + is less than using en-US culture + is less than using ordinal comparison +``` + +言語的な比較は、現在のカルチャに依存し、OS に依存します。 文字列の比較を使用する場合は、これを考慮する必要があります。 + +## 配列の言語的な並べ替えと文字列の検索 + +次の例は、現在のカルチャに依存する言語的な比較を使用して、配列内の文字列を並べ替えおよび検索する方法を示しています。 パラメーターを取得する静的な メソッドを使用します。 + +この例では、現在のカルチャを使用して文字列の配列を並べ替える方法を示します。 + +[!code-csharp-interactive[Sorting an array of strings](../../../samples/snippets/csharp/how-to/strings/CompareStrings.cs#5)] + +配列が並べ替えられた後は、バイナリ検索を使用してエントリを検索できます。 バイナリ検索は、コレクションの中央で開始され、要求された文字列がコレクションのどちらの半分に含まれているかを判断します。 各後続の比較は、半分にコレクションの残りの部分を半分に細分化します。 配列は を使用して並べ替えられます。 ローカル関数 `ShowWhere` は、文字列が見つかった場所に関する情報を表示します。 文字列が見つからなかった場合、返された値は、見つからなかった場合にどこにあるべきかを示します。 + +[!code-csharp-interactive[Searching in a sorted array](../../../samples/snippets/csharp/how-to/strings/CompareStrings.cs#6)] + +## コレクションの序数に基づく並べ替えと検索 + +次のコードでは、 コレクション クラスを使用して文字列を格納します。 文字列は、 メソッドを使用して並べ替えられます。 このメソッドでは、2 つの文字列の順序を比較するデリゲートが必要です。 メソッドは、その比較関数を提供します。 このサンプルを実行し、順序を確認します。 この並べ替え操作では、大文字小文字を区別する序数の並べ替えを使用します。 静的な メソッドを使用し、別の比較規則を指定します。 + +[!code-csharp-interactive[Sorting a list of strings](../../../samples/snippets/csharp/how-to/strings/CompareStrings.cs#7)] + +並べ替えられたら、バイナリ検索を使用して文字列の一覧を検索できます。 次の例では、同じ比較関数を使用して、並べ替えられた一覧を検索する方法を示します。 ローカル関数 `ShowWhere` は、要求されたテキストの場所、またはあるべき場所を示します。 + +[!code-csharp-interactive[csProgGuideStrings#11](../../../samples/snippets/csharp/how-to/strings/CompareStrings.cs#8)] + +並べ替えと検索に常に同じ種類の比較を使用してください。 並べ替えと検索に異なる種類の比較を使用すると、予期しない結果になります。 + +、および などのコレクション クラスには、要素またはキーの種類が `string` の場合、 パラメーターを取るコンストラクターが用意されています。 通常は、これらのコンストラクターをできるだけ使用し、 または を指定する必要があります。 + +## 参照の等価性と文字列インターン + +どの例でも を使用していません。 このメソッドは、2 つの文字列が同じオブジェクトかどうかを判断します。 これは、文字列比較で一貫性のない結果につながる可能性があります。 次の例は、C# の*文字列のインターン*機能を示しています。 プログラムで 2 つ以上の同じ文字列変数を宣言すると、コンパイラはそれらをすべて同じ場所に保管します。 メソッドを呼び出すと、2 つの文字列がメモリ内の同じオブジェクトを実際に参照していることを確認できます。 インターン処理を回避するには、 メソッドを使用します。 コピーが行われた後、同じ値が含まれていても、2 つの文字列は別の記憶場所を使用します。 次の例を実行し、文字列 `a` と `b` が*インターン処理される*ことを示します。これは、同じ記憶域を共有することを意味します。 文字列 `a` と `c` は異なります。 + +[!code-csharp-interactive[Demonstrating string interning](../../../samples/snippets/csharp/how-to/strings/CompareStrings.cs#9)] + +> [!NOTE] +> 文字列の等価をテストする場合、実行する比較の種類を明示的に指定するメソッドを使用する必要があります。 コードを保守しやすく、読みやすくすることができます。 列挙パラメーターを取る および クラスのメソッドのオーバーロードを使用します。 実行する比較の種類を指定します。 等価をテストするときには、`==` および `!=` 演算子を使用しないでください。 インスタンス メソッドは常に、序数に基づいた大文字小文字を区別する比較を実行します。 これらは、文字列をアルファベット順に並べ替える場合に適しています。 + +## 関連項目 + + + [文字列](../programming-guide/strings/index.md) + [文字列の比較](../../standard/base-types/comparing.md) + [アプリケーションのグローバライズとローカライズ](/visualstudio/ide/globalizing-and-localizing-applications) \ No newline at end of file diff --git a/docs/csharp/how-to/concatenate-multiple-strings.md b/docs/csharp/how-to/concatenate-multiple-strings.md index b7df23b6fd8..c10f1c2a989 100644 --- a/docs/csharp/how-to/concatenate-multiple-strings.md +++ b/docs/csharp/how-to/concatenate-multiple-strings.md @@ -1,6 +1,6 @@ --- -title: "方法: 複数の文字列を連結する (C# ガイド)" -description: "C# で文字列を連結する方法は複数あります。 各選択のオプションと、それを選ぶ理由も示します。" +title: '方法: 複数の文字列を連結する (C# ガイド)' +description: C# で文字列を連結する方法は複数あります。 各選択のオプションと、それを選ぶ理由も示します。 ms.date: 02/20/2018 ms.prod: .net ms.technology: @@ -11,14 +11,14 @@ helpviewer_keywords: - concatenating strings [C#] - strings [C#], concatenation ms.assetid: 8e16736f-4096-4f3f-be0f-9d4c3ff63520 -caps.latest.revision: +caps.latest.revision: 21 author: BillWagner ms.author: wiwagn -ms.openlocfilehash: 43b60455762ecd91a790ea5c7dae49d3348794aa -ms.sourcegitcommit: 655fd4f78741967f80c409cef98347fdcf77857d +ms.openlocfilehash: 05f4932710870c26256659252fcef3814462d488 +ms.sourcegitcommit: 935d5267c44f9bce801468ef95f44572f1417e8c ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 02/28/2018 +ms.lasthandoff: 03/28/2018 --- # 方法: 複数の文字列を連結する (C# ガイド) @@ -31,7 +31,7 @@ ms.lasthandoff: 02/28/2018 [!code-csharp-interactive[Combining strings at compile time](../../../samples/snippets/csharp/how-to/strings/Concatenate.cs#1)] -文字列変数を連結する場合は、`+` または `+=` 演算子、[文字列補間](../tutorials/string-interpolation.md)または メソッドを使用できます。 `+` 演算子は使い方が簡単で、直感的なコードにすることができます。 1 つのステートメントで複数の `+` 演算子を使用している場合でも、文字列の内容がコピーされるのは 1 回のみです。 次のコードは、`+` および `+=` 演算子を使用して文字列を連結する例を示しています。 +文字列変数を連結する場合は、`+` または `+=` 演算子、[文字列補間](../language-reference/tokens/interpolated.md)または メソッドを使用できます。 `+` 演算子は使い方が簡単で、直感的なコードにすることができます。 1 つのステートメントで複数の `+` 演算子を使用している場合でも、文字列の内容がコピーされるのは 1 回のみです。 次のコードは、`+` および `+=` 演算子を使用して文字列を連結する例を示しています。 [!code-csharp-interactive[combining strings using +](../../../samples/snippets/csharp/how-to/strings/Concatenate.cs#2)] diff --git a/docs/csharp/language-reference/keywords/formatting-numeric-results-table.md b/docs/csharp/language-reference/keywords/formatting-numeric-results-table.md index ddb341abb32..9a71f79e12a 100644 --- a/docs/csharp/language-reference/keywords/formatting-numeric-results-table.md +++ b/docs/csharp/language-reference/keywords/formatting-numeric-results-table.md @@ -1,8 +1,9 @@ --- -title: "数値結果テーブルの書式設定 (C# リファレンス)" +title: 数値結果テーブルの書式設定 (C# リファレンス) ms.date: 07/20/2015 ms.prod: .net -ms.technology: devlang-csharp +ms.technology: +- devlang-csharp ms.topic: article helpviewer_keywords: - formatting [C#] @@ -10,21 +11,21 @@ helpviewer_keywords: - String.Format method - Console.Write method ms.assetid: 120ba537-4448-4c62-8676-7a8fdd98f496 -caps.latest.revision: "14" +caps.latest.revision: 14 author: BillWagner ms.author: wiwagn -ms.openlocfilehash: cce14d5124ffdf030701ae0fc769278da51f86cc -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.openlocfilehash: d389703c2d82d74760b99059201cb634849aa433 +ms.sourcegitcommit: 935d5267c44f9bce801468ef95f44572f1417e8c ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 03/28/2018 --- # 数値結果テーブルの書式設定 (C# リファレンス) -数値結果の書式を指定するには、 メソッドを使用するか、`String.Format` を呼び出す メソッドまたは メソッドを使用します。 書式を指定するには、書式指定文字列を使用します。 サポートされる標準の書式指定文字列を次の表に示します。 書式指定文字列は `Axx` という形式になります。この `A` は書式指定子、`xx` は精度指定子です。 書式指定子は、数値に適用する書式の種類を制御し、精度指定子は、書式付き出力の有効桁数または小数点以下の桁数を制御します。 精度指定子の値は 0 から 99 の範囲です。 +数値結果の書式を指定するには、 メソッドを使用するか、`String.Format` を呼び出す メソッドまたは メソッドを使用するか、[文字列補間](../tokens/interpolated.md)を使用します。 書式を指定するには、書式指定文字列を使用します。 サポートされる標準の書式指定文字列を次の表に示します。 書式指定文字列は `Axx` という形式になります。この `A` は書式指定子、`xx` は精度指定子です。 書式指定子は、数値に適用する書式の種類を制御し、精度指定子は、書式付き出力の有効桁数または小数点以下の桁数を制御します。 精度指定子の値は 0 から 99 の範囲です。 - 標準およびカスタム書式指定文字列の詳細については、「[Formatting Types](../../../standard/base-types/formatting-types.md)」(型の書式設定) を参照してください。 `String.Format` メソッドの詳細については、 を参照してください。 + 標準およびカスタム書式指定文字列の詳細については、「[Formatting Types](../../../standard/base-types/formatting-types.md)」(型の書式設定) を参照してください。 -|書式指定子|説明|例|出力| +|書式指定子|説明|使用例|出力| |----------------------|-----------------|--------------|------------| |C または c|通貨|Console.Write("{0:C}", 2.5);

Console.Write("{0:C}", -2.5);|$2.50

($2.50)| |D または d|Decimal (10 進数型)|Console.Write("{0:D5}", 25);|00025| @@ -34,7 +35,7 @@ ms.lasthandoff: 11/21/2017 |N または n|数値|Console.Write("{0:N}", 2500000);|2,500,000.00| |X または x|16 進数|Console.Write("{0:X}", 250);

Console.Write("{0:X}", 0xffff);|FA

FFFF| -## 関連項目 +## 参照 [C# リファレンス](../../../csharp/language-reference/index.md) [C# プログラミング ガイド](../../../csharp/programming-guide/index.md) [標準の数値書式指定文字列](../../../standard/base-types/standard-numeric-format-strings.md) diff --git a/docs/csharp/language-reference/keywords/in-parameter-modifier.md b/docs/csharp/language-reference/keywords/in-parameter-modifier.md index 8aaac5f96fe..9a31b7dce9d 100644 --- a/docs/csharp/language-reference/keywords/in-parameter-modifier.md +++ b/docs/csharp/language-reference/keywords/in-parameter-modifier.md @@ -10,11 +10,11 @@ helpviewer_keywords: - in parameters [C#] author: BillWagner ms.author: wiwagn -ms.openlocfilehash: 9b8b21e2bdc95829c831ee71f24b47986321b7d0 -ms.sourcegitcommit: c883637b41ee028786edceece4fa872939d2e64c +ms.openlocfilehash: 3c15cc0dce5b37866fd826e3d6b9adcb00724672 +ms.sourcegitcommit: 935d5267c44f9bce801468ef95f44572f1417e8c ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 03/23/2018 +ms.lasthandoff: 03/28/2018 --- # in パラメーター修飾子 (C# リファレンス) @@ -22,7 +22,7 @@ ms.lasthandoff: 03/23/2018 [!code-csharp-interactive[cs-in-keyword](../../../../samples/snippets/csharp/language-reference/keywords/in-ref-out-modifier/InParameterModifier.cs#1)] -前の例は、`in` 修飾子が呼び出しサイトでは不要であることを示しています。 これはメソッド宣言でのみ必要です。 +前の例は、通常、`in` 修飾子が呼び出しサイトでは不要であることを示しています。 これはメソッド宣言でのみ必要です。 > [!NOTE] > `foreach` ステートメントの一部、または LINQ クエリの `join` 句の一部として、型パラメーターが反変であることを示すために `in` キーワードをジェネリック型パラメーターで使用することもできます。 これらのコンテキストでの `in` キーワードの使用の詳細については、これらすべての使用に関するリンクを提供する「[in](in.md)」を参照してください。 @@ -41,36 +41,90 @@ class CS0663_Example } ``` -`in` の有無に基づくオーバーロードは可能ですが、コンパイラの警告が生成されます。 +`in` の有無に基づくオーバーロードが可能です。 ```csharp class InOverloads { - // Discouraged. Calling SampleMethod(value) is ambiguous. public void SampleMethod(in int i) { } public void SampleMethod(int i) { } } ``` -呼び出し元メソッドでは値を変更できないため、プロパティまたは定数を `in` パラメーターとして渡すことができます。 - -次の種類のメソッドには、`in`、`ref`、`out` キーワードを使用することはできません。 - -- [async](../../../csharp/language-reference/keywords/async.md) 修飾子を使用して定義した Async メソッド。 - -- [yield return](../../../csharp/language-reference/keywords/yield.md) または `yield break` ステートメントを含む Iterator メソッド。 +## オーバーロードの解決ルール + +`in` 引数の意図を理解して、値と `in` 引数の比較によって、メソッドに対するオーバーロードの解決ルールを理解できます。 `in` パラメーターを使用してメソッドを定義すると、パフォーマンスを最適化できる可能性があります。 一部の `struct` 型引数は、サイズが大きくなる可能性があり、メソッドが短いループまたは重要なコード パスで呼び出される場合、その構造のコピーのコストが重要になります。 呼び出されたメソッドは引数の状態を変更しないため、メソッドで `in` パラメーターを宣言して、参照で安全に渡すことができる引数を指定します。 参照によりこれらの引数を渡して、(可能性がある) 高額なコピーを回避します。 + +呼び出しサイトで引数に `in` を指定することは、通常は省略可能です。 値で引数を渡す場合と `in` 修飾子を使用して参照で渡す場合の間に、セマンティックの相違点はありません。 引数の値が変更される可能性があることを示す必要はないため、呼び出しサイトの `in` 修飾子は省略可能です。 呼び出しサイトで `in` 修飾子を明示的に追加して、引数が値ではなく、参照で渡されるようにします。 明示的に `in` を使用すると、次の 2 つの効果があります。 + +1 つ目は、呼び出しサイトで `in` を指定すると、一致する `in` パラメーターで定義されたメソッドがコンパイラで強制的に選択されます。 それ以外の場合は、2 つのメソッドで `in` の有無のみが異なるときは、値によるオーバーロードの方が適しています。 + +2 つ目は、`in` を指定して、参照で引数を渡す意図を宣言します。 `in` で使用される引数では、直接参照できる場所を表す必要があります。 `out` および `ref` 引数と同じ一般ルールが適用されます。定数、通常のプロパティ、または値を生成するその他の式を使用することはできません。 それ以外の場合は、呼び出しサイトで `in` を省略すると、メソッドに読み取り専用の参照で渡すために、一時変数の作成を許可することが、コンパイラに通知されます。 コンパイラでは、一時変数を作成して、`in` 引数でのいくつかの制限に対処します。 -通常は、`in` 引数を宣言して、値で引数を渡すために必要なコピー操作を回避します。 これは、引数が構造体などの値の型で、参照渡しよりもコピー操作の方が負荷がかかる場合に特に便利です。 +- 一時変数では、`in` パラメーターとしてコンパイル時の定数を許可します。 +- 一時変数では、プロパティ、または `in` パラメーターのその他の式を許可します。 +- 一時変数では、引数型からパラメーターの型への暗黙の変換がある引数を許可します。 + +先のすべてのインスタンスで、コンパイラは定数、プロパティ、またはその他の式の値を格納する一時変数を作成します。 + +これらのルールが発生するコード例を次に示します。 + +```csharp +static void Method(in int argument) +{ + // implementation removed +} + +Method(5); // OK, temporary variable created. +Method(5L); // CS1503: no implicit conversion from long to int +short s = 0; +Method(s); // OK, temporary int created with the value 0 +Method(in s); // CS1503: cannot convert from in short to in int +int i = 42; +Method(i); // passed by readonly reference +Method(in i); // passed by readonly reference, explicitly using `in` +``` -> [!WARNING] -> `in` パラメーターは誤って使用すると、さらに負荷がかかることがあります。 コンパイラでは、メンバー メソッドが、構造体の状態を変更するかどうかを認識しません。 オブジェクトが変更されないことがコンパイラで確認できない場合は、常に防御のためにコンパイラがコピーを作成し、そのコピーを利用してメンバー参照を呼び出します。 変更されるとすれば、その防御用のコピーに対して加えられます。 このようなコピーが作成されないようにするには、`in` パラメーターを `in` 引数として渡す方法と、構造体を `readonly struct` として定義する方法の 2 つがあります。 +ここでは、値の引数で使用する別のメソッドが使用できたと想定します。 次のコードに示すように、結果が変更されます。 + +```csharp +static void Method(int argument) +{ + // implementation removed +} + +static void Method(in int argument) +{ + // implementation removed +} + +Method(5); // Calls overload passed by value +Method(5L); // CS1503: no implicit conversion from long to int +short s = 0; +Method(s); // Calls overload passed by value. +Method(in s); // CS1503: cannot convert from in short to in int +int i = 42; +Method(i); // Calls overload passed by value +Method(in i); // passed by readonly reference, explicitly using `in` +``` + +引数が参照で渡されるメソッドの呼び出しは、最後のメソッドのみです。 + +> [!NOTE] +> 先のコードでは、わかりやすくするために `int` を引数型として使用します。 `int` は最新のマシンの参照より大きくなることはないため、読み取り専用の参照として単一の `int` を渡すメリットはありません。 + +## `in` パラメーターの制限 + +次の種類のメソッドには、`in`、`ref`、`out` キーワードを使用することはできません。 + +- [async](async.md) 修飾子を使用して定義した Async メソッド。 +- [yield return](yield.md) または `yield break` ステートメントを含む Iterator メソッド。 ## C# 言語仕様 [!INCLUDE[CSharplangspec](~/includes/csharplangspec-md.md)] ## 参照 - [C# リファレンス](../../../csharp/language-reference/index.md) - [C# プログラミング ガイド](../../../csharp/programming-guide/index.md) - [C# のキーワード](../../../csharp/language-reference/keywords/index.md) - [メソッド パラメーター](../../../csharp/language-reference/keywords/method-parameters.md) - [値の型による参照セマンティクス](../../../csharp/reference-semantics-with-value-types.md) + [C# リファレンス](../index.md) + [C# プログラミング ガイド](../../programming-guide/index.md) + [C# のキーワード](index.md) + [メソッドのパラメーター](method-parameters.md) [値の型による参照セマンティクス](../../reference-semantics-with-value-types.md) diff --git a/docs/csharp/language-reference/keywords/in.md b/docs/csharp/language-reference/keywords/in.md index 0bdabc325ab..0387d29a623 100644 --- a/docs/csharp/language-reference/keywords/in.md +++ b/docs/csharp/language-reference/keywords/in.md @@ -1,5 +1,5 @@ --- -title: "in (C# リファレンス)" +title: in (C# リファレンス) ms.date: 02/06/2018 ms.prod: .net ms.technology: @@ -12,15 +12,15 @@ helpviewer_keywords: - in keyword [C#] author: BillWagner ms.author: wiwagn -ms.openlocfilehash: e8c45427a99756006799d1dca42841ef09b9ed8e -ms.sourcegitcommit: 83dd5ec003e788ccb3e33f3412a7af39ae347646 +ms.openlocfilehash: da29a4121767f723e4397a6cf485bf48d8674d7c +ms.sourcegitcommit: 935d5267c44f9bce801468ef95f44572f1417e8c ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 03/15/2018 +ms.lasthandoff: 03/28/2018 --- # in (C# リファレンス) -`in` コンテキスト キーワードが次の 4 つのコンテキストで使用されます。 +`in` キーワードは、次の 4 つのコンテキストで使用されます。 - ジェネリック インターフェイスとデリゲートの[ジェネリック型パラメーター](in-generic-modifier.md) - [パラメーター修飾子](in-parameter-modifier.md)として。この場合、値ではなく参照で、メソッドに引数を渡すことができます。 diff --git a/docs/csharp/language-reference/keywords/method-parameters.md b/docs/csharp/language-reference/keywords/method-parameters.md index 77294e7a924..ba2e6977ce7 100644 --- a/docs/csharp/language-reference/keywords/method-parameters.md +++ b/docs/csharp/language-reference/keywords/method-parameters.md @@ -1,5 +1,5 @@ --- -title: "メソッドのパラメーター (C# リファレンス)" +title: メソッドのパラメーター (C# リファレンス) ms.date: 07/20/2015 ms.prod: .net ms.technology: @@ -10,14 +10,14 @@ helpviewer_keywords: - method parameters [C#] - parameters [C#] ms.assetid: 680e39ff-775b-48b0-9f47-4186a5bfc4a1 -caps.latest.revision: +caps.latest.revision: 8 author: BillWagner ms.author: wiwagn -ms.openlocfilehash: b20d2d233350cfb9de55cbd07e722082ec311597 -ms.sourcegitcommit: 83dd5ec003e788ccb3e33f3412a7af39ae347646 +ms.openlocfilehash: 35d96066deb866e02f6bf624121376fe3ae94373 +ms.sourcegitcommit: 935d5267c44f9bce801468ef95f44572f1417e8c ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 03/15/2018 +ms.lasthandoff: 03/28/2018 --- # メソッドのパラメーター (C# リファレンス) @@ -25,13 +25,13 @@ ms.lasthandoff: 03/15/2018 ここでは、メソッドのパラメーターを宣言するときに使用できるキーワードについて説明します。 -- [params](../../../csharp/language-reference/keywords/params.md) +- [params](../../../csharp/language-reference/keywords/params.md) は、このパラメーターが異なる数の引数を取得する可能性があることを指定します。 -- [in](../../../csharp/language-reference/keywords/in-parameter-modifier.md) +- [in](../../../csharp/language-reference/keywords/in-parameter-modifier.md) は、このパラメーターが参照によって渡されますが、呼び出されたメソッドでは読み取りのみが行われることを指定します。 -- [ref](../../../csharp/language-reference/keywords/ref.md) +- [ref](../../../csharp/language-reference/keywords/ref.md) は、このパラメーターが参照によって渡され、呼び出されたメソッドでは読み取りまたは書き込みが行われる可能性があることを指定します。 -- [out](../../../csharp/language-reference/keywords/out-parameter-modifier.md) +- [out](../../../csharp/language-reference/keywords/out-parameter-modifier.md) は、このパラメーターが参照によって渡され、呼び出されたメソッドでは書き込みが行われることを指定します。 ## 参照 [C# リファレンス](../../../csharp/language-reference/index.md) diff --git a/docs/csharp/language-reference/keywords/out.md b/docs/csharp/language-reference/keywords/out.md index 27b11b6c790..e0173027b6c 100644 --- a/docs/csharp/language-reference/keywords/out.md +++ b/docs/csharp/language-reference/keywords/out.md @@ -1,8 +1,9 @@ --- -title: "out (C# リファレンス)" +title: out (C# リファレンス) ms.date: 03/01/2017 ms.prod: .net -ms.technology: devlang-csharp +ms.technology: +- devlang-csharp ms.topic: article f1_keywords: - out_CSharpKeyword @@ -11,21 +12,21 @@ helpviewer_keywords: - out [C#] - out keyword [C#] ms.assetid: 7e911a0c-3f98-4536-87be-d539b7536ca8 -caps.latest.revision: "30" +caps.latest.revision: 30 author: BillWagner ms.author: wiwagn -ms.openlocfilehash: 1e36a29bb06a8dc66a1a8f2681235335f72734ba -ms.sourcegitcommit: bd1ef61f4bb794b25383d3d72e71041a5ced172e +ms.openlocfilehash: 4519e080c55875c6dae140728b08e2630ca4cdad +ms.sourcegitcommit: 935d5267c44f9bce801468ef95f44572f1417e8c ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 10/18/2017 +ms.lasthandoff: 03/28/2018 --- # out (C# リファレンス) -`out` コンテキスト キーワードは、2 つのコンテキストで使うことができます。 +`out` キーワードは、次の 2 つのコンテキストで使うことができます。 - [パラメーター修飾子](../../../csharp/language-reference/keywords/out-parameter-modifier.md)として。この場合、値ではなく参照で、メソッドに引数を渡すことができます。 - インターフェイスおよびデリゲートの[ジェネリック型パラメーターの宣言](../../../csharp/language-reference/keywords/out-generic-modifier.md)で。この場合は、型パラメーターが共変であることを指定します。 -## 関連項目 +## 参照 [C# リファレンス](../../../csharp/language-reference/index.md) diff --git a/docs/csharp/language-reference/operators/index.md b/docs/csharp/language-reference/operators/index.md index 79911ddf10c..9659d3365bb 100644 --- a/docs/csharp/language-reference/operators/index.md +++ b/docs/csharp/language-reference/operators/index.md @@ -1,5 +1,5 @@ --- -title: "C# 演算子" +title: C# 演算子 ms.date: 03/09/2017 ms.prod: .net ms.technology: @@ -22,46 +22,46 @@ helpviewer_keywords: - keywords [C#], operators - arithmetic operators [C#] ms.assetid: 0301e31f-22ad-49af-ac3c-d5eae7f0ac43 -caps.latest.revision: +caps.latest.revision: 40 author: BillWagner ms.author: wiwagn -ms.openlocfilehash: f18c2332f3576847800423c5c0bf7471bf37aafc -ms.sourcegitcommit: 15316053918995cc1380163a7d7e7edd5c44e6d7 +ms.openlocfilehash: 14ebd489c48f53c8618cadf91f9744bb30f582d3 +ms.sourcegitcommit: 935d5267c44f9bce801468ef95f44572f1417e8c ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 03/19/2018 +ms.lasthandoff: 03/28/2018 --- # C# 演算子 -C# には、多くの演算子が用意されています。演算子とは、式で実行する演算 (数値演算、インデックス作成、関数呼び出しなど) を指定する記号のことです。 多くの演算子は、ユーザー定義型に適用する際に[オーバーロード](../../../csharp/programming-guide/statements-expressions-operators/overloadable-operators.md)して、その意味を変更できます。 +C# には、多くの演算子が用意されています。演算子とは、式で実行する演算 (数値演算、インデックス作成、関数呼び出しなど) を指定する記号のことです。 多くの演算子は、ユーザー定義型に適用する際に[オーバーロード](../../../csharp/programming-guide/statements-expressions-operators/overloadable-operators.md)して、その意味を変更できます。 整数型に対する演算 (`==`、`!=`、`<`、`>`、`&`、`|`) は、通常、列挙型 (`enum`) で使用できます。 - ここでは、C# の演算子を優先順位の高い順に示します。 各セクションの演算子の優先順位は同じです。 - + ここでは、C# の演算子を優先順位の高い順に示します。 各セクションの演算子の優先順位は同じです。 + ## 主な演算子 - 優先順位が最も高い演算子です。 各演算子をクリックすると、演算子の詳細と例が記載されたページに移動します。 + 優先順位が最も高い演算子です。 [x.y](../../../csharp/language-reference/operators/member-access-operator.md) – メンバー アクセス。 - [x?.y](../../../csharp/language-reference/operators/null-conditional-operators.md) – null 条件付きのメンバー アクセス。 左側のオペランドが `null` の場合に `null` を返します。 + [x?.y](../../../csharp/language-reference/operators/null-conditional-operators.md) – null 条件付きのメンバー アクセス。 左側のオペランドが `null` に評価される場合に `null` を返します。 - [x?[y]](../../../csharp/language-reference/operators/null-conditional-operators.md) - null 条件付きのインデックス アクセス。 左側のオペランドが `null` の場合に `null` を返します。 + [x?[y]](../../../csharp/language-reference/operators/null-conditional-operators.md) - null 条件付きのインデックス アクセス。 左側のオペランドが `null` に評価される場合に `null` を返します。 [f(x)](../../../csharp/language-reference/operators/invocation-operator.md) – 関数の呼び出し。 [a[x]](../../../csharp/language-reference/operators/index-operator.md) – 集約オブジェクトのインデックス作成。 - [x++](../../../csharp/language-reference/operators/increment-operator.md) – 後置インクリメント。 x の値を返した後、1 大きくなった (通常は整数 1 が加算された) x の値で格納場所を更新します。 + [x++](../../../csharp/language-reference/operators/increment-operator.md) – 後置インクリメント。 x の値を返した後、1 大きくなった (通常は整数 1 が加算された) x の値で格納場所を更新します。 - [x--](../../../csharp/language-reference/operators/decrement-operator.md) – 後置デクリメント。 x の値を返した後、1 小さくなった (通常は整数 1 が減算された) x の値で格納場所を更新します。 + [x--](../../../csharp/language-reference/operators/decrement-operator.md) – 後置デクリメント。 x の値を返した後、1 小さくなった (通常は整数 1 が減算された) x の値で格納場所を更新します。 [new](../../../csharp/language-reference/keywords/new-operator.md) – 型のインスタンス化。 - [typeof](../../../csharp/language-reference/keywords/typeof.md) – オペランドを表す System.Type オブジェクトを返します。 + [typeof](../../../csharp/language-reference/keywords/typeof.md) – オペランドを表す オブジェクトを返します。 [checked](../../../csharp/language-reference/keywords/checked.md) – 整数演算のオーバーフロー チェックを有効にします。 - [unchecked](../../../csharp/language-reference/keywords/unchecked.md) – 整数演算のオーバーフロー チェックを無効にします。 これがコンパイラの既定の動作です。 + [unchecked](../../../csharp/language-reference/keywords/unchecked.md) – 整数演算のオーバーフロー チェックを無効にします。 これがコンパイラの既定の動作です。 [default(T)](../../../csharp/programming-guide/statements-expressions-operators/default-value-expressions.md) – 型 T の既定の値 (参照型の場合は `null`、数値型の場合は 0、構造体型の場合は 0 または `null` が格納されたメンバー) を返します。 @@ -72,7 +72,7 @@ C# には、多くの演算子が用意されています。演算子とは、 [->](../../../csharp/language-reference/operators/dereference-operator.md) – メンバー アクセスと組み合わせてポインターを逆参照します。 ## 単項演算子 - これらの演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。 各演算子をクリックすると、演算子の詳細と例が記載されたページに移動します。 + これらの演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。 [+x](../../../csharp/language-reference/operators/addition-operator.md) – x の値を返します。 @@ -82,9 +82,9 @@ C# には、多くの演算子が用意されています。演算子とは、 [~x](../../../csharp/language-reference/operators/bitwise-complement-operator.md) – ビットごとの補数。 - [++x](../../../csharp/language-reference/operators/increment-operator.md) – 前置インクリメント。 1 大きくなった (通常は整数 1 が加算された) x の値で格納場所を更新した後に x の値を返します。 + [++x](../../../csharp/language-reference/operators/increment-operator.md) – 前置インクリメント。 1 大きくなった (通常は整数 1 が加算された) x の値で格納場所を更新した後に x の値を返します。 - [--x](../../../csharp/language-reference/operators/decrement-operator.md) – 前置デクリメント。 1 小さくなった (通常は整数 1 が減算された) x の値で格納場所を更新した後に x の値を返します。 + [--x](../../../csharp/language-reference/operators/decrement-operator.md) – 前置デクリメント。 1 小さくなった (通常は整数 1 が減算された) x の値で格納場所を更新した後に x の値を返します。 [(T)x](../../../csharp/language-reference/operators/invocation-operator.md) – 型キャスト。 @@ -95,30 +95,30 @@ C# には、多くの演算子が用意されています。演算子とは、 [*x](../../../csharp/language-reference/operators/multiplication-operator.md) – 逆参照。 ## 乗算演算子 - これらの演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。 各演算子をクリックすると、演算子の詳細と例が記載されたページに移動します。 + これらの演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。 [x * y](../../../csharp/language-reference/operators/multiplication-operator.md) – 乗算。 - [x / y](../../../csharp/language-reference/operators/division-operator.md) – 除算。 オペランドが整数の場合、結果は 0 に近い整数になるように切り捨てられます (例: `-7 / 2 is -3`)。 + [x / y](../../../csharp/language-reference/operators/division-operator.md) – 除算。 オペランドが整数の場合、結果は 0 に近い整数になるように切り捨てられます (例: `-7 / 2 is -3`)。 - [x % y](../../../csharp/language-reference/operators/modulus-operator.md) – 剰余。 オペランドが整数の場合、x を y で除算した剰余を返します。 `q = x / y` で `r = x % y` の場合、`x = q * y + r` になります。 + [x % y](../../../csharp/language-reference/operators/modulus-operator.md) – 剰余。 オペランドが整数の場合、x を y で除算した剰余を返します。 `q = x / y` で `r = x % y` の場合、`x = q * y + r` になります。 ## 加法演算子 - これらの演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。 各演算子をクリックすると、演算子の詳細と例が記載されたページに移動します。 + これらの演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。 [x + y](../../../csharp/language-reference/operators/addition-operator.md) – 加算。 [x – y](../../../csharp/language-reference/operators/subtraction-operator.md) – 減算。 ## シフト演算子 - これらの演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。 各演算子をクリックすると、演算子の詳細と例が記載されたページに移動します。 + これらの演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。 [x <\< y](../../../csharp/language-reference/operators/left-shift-operator.md) – ビットを左へシフトし、右側には 0 を格納します。 - [x >> y](../../../csharp/language-reference/operators/right-shift-operator.md) – ビットを右へシフトします。 左側のオペランドが `int` または `long` の場合、左側のビットには符号ビットが格納されます。 左側のオペランドが `uint` または `ulong` の場合、左側のビットには 0 が格納されます。 + [x >> y](../../../csharp/language-reference/operators/right-shift-operator.md) – ビットを右へシフトします。 左側のオペランドが `int` または `long` の場合、左側のビットには符号ビットが格納されます。 左側のオペランドが `uint` または `ulong` の場合、左側のビットには 0 が格納されます。 ## 関係演算子と型検査演算子 - これらの演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。 各演算子をクリックすると、演算子の詳細と例が記載されたページに移動します。 + これらの演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。 [x \< y](../../../csharp/language-reference/operators/less-than-operator.md) – より小さい (x が y より小さい場合は true)。 @@ -128,76 +128,76 @@ C# には、多くの演算子が用意されています。演算子とは、 [x >= y](../../../csharp/language-reference/operators/greater-than-equal-operator.md) – 以上。 - [is](../../../csharp/language-reference/keywords/is.md) – 型の互換性。 評価される左側のオペランドを右側のオペランドで指定された型 (静的な型) にキャストできる場合は、true を返します。 + [is](../../../csharp/language-reference/keywords/is.md) – 型の互換性。 評価される左側のオペランドを右側のオペランドで指定された型 (静的な型) にキャストできる場合は、true を返します。 - [as](../../../csharp/language-reference/keywords/as.md) – 型変換。 左側のオペランドを右側のオペランドで指定された型 (静的な型) にキャストして返します。ただし、`(T)x` が例外をスローした場合、`as` は `null` を返します。 + [as](../../../csharp/language-reference/keywords/as.md) – 型変換。 左側のオペランドを右側のオペランドで指定された型 (静的な型) にキャストして返します。ただし、`(T)x` が例外をスローした場合、`as` は `null` を返します。 ## 等値演算子 - これらの演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。 各演算子をクリックすると、演算子の詳細と例が記載されたページに移動します。 + これらの演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。 - [x == y](../../../csharp/language-reference/operators/equality-comparison-operator.md) – 等価比較。 既定では、`string` 以外の参照型の場合、参照の等価性を返します (等価テスト)。 ただし、型は `==` をオーバーロードできるため、同一性のテストが目的の場合は `object` で `ReferenceEquals` メソッドを使用することをお勧めします。 + [x == y](../../../csharp/language-reference/operators/equality-comparison-operator.md) – 等価比較。 既定では、`string` 以外の参照型の場合、参照の等価性を返します (等価テスト)。 ただし、型は `==` をオーバーロードできるため、同一性のテストが目的の場合は `object` で `ReferenceEquals` メソッドを使用することをお勧めします。 - [x != y](../../../csharp/language-reference/operators/not-equal-operator.md) – 等しくない。 `==` のコメントを参照してください。 型が `==` をオーバーロードする場合は、`!=` をオーバーロードする必要があります。 + [x != y](../../../csharp/language-reference/operators/not-equal-operator.md) – 等しくない。 `==` のコメントを参照してください。 型が `==` をオーバーロードする場合は、`!=` をオーバーロードする必要があります。 ## 論理 AND 演算子 - この演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。 各演算子をクリックすると、演算子の詳細と例が記載されたページに移動します。 + この演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。 - [x & y](../../../csharp/language-reference/operators/and-operator.md) – 論理またはビットごとの AND。 通常、整数型および `enum` 型で使用できます。 + [x & y](../../../csharp/language-reference/operators/and-operator.md) – 論理またはビットごとの AND。 通常、整数型と `enum` 型で使用できます。 ## 論理 XOR 演算子 - この演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。 各演算子をクリックすると、演算子の詳細と例が記載されたページに移動します。 + この演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。 - [x ^ y](../../../csharp/language-reference/operators/xor-operator.md) – 論理またはビットごとの XOR。 通常、整数型と `enum` 型で使用できます。 + [x ^ y](../../../csharp/language-reference/operators/xor-operator.md) – 論理またはビットごとの XOR。 通常、整数型と `enum` 型で使用できます。 ## 論理 OR 演算子 - この演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。 各演算子をクリックすると、演算子の詳細と例が記載されたページに移動します。 + この演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。 - [x | y](../../../csharp/language-reference/operators/or-operator.md) – 論理またはビットごとの OR。 通常、整数型および `enum` 型で使用できます。 + [x | y](../../../csharp/language-reference/operators/or-operator.md) – 論理またはビットごとの OR。 通常、整数型と `enum` 型で使用できます。 ## 条件 AND 演算子 - この演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。 各演算子をクリックすると、演算子の詳細と例が記載されたページに移動します。 + この演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。 - [x && y](../../../csharp/language-reference/operators/conditional-and-operator.md) – 論理 AND。 最初のオペランドが false の場合、C# では 2 番目のオペランドが評価されません。 + [x && y](../../../csharp/language-reference/operators/conditional-and-operator.md) – 論理 AND。 最初のオペランドが false に評価される場合、C# では 2 番目のオペランドが評価されません。 ## 条件 OR 演算子 - この演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。 各演算子をクリックすると、演算子の詳細と例が記載されたページに移動します。 + この演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。 - [x || y](../../../csharp/language-reference/operators/conditional-or-operator.md) – 論理 OR。 最初のオペランドが true の場合、C# では 2 番目のオペランドが評価されません。 + [x || y](../../../csharp/language-reference/operators/conditional-or-operator.md) – 論理 OR。 最初のオペランドが true に評価される場合、C# では 2 番目のオペランドが評価されません。 ## Null 合体演算子 - この演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。 各演算子をクリックすると、演算子の詳細と例が記載されたページに移動します。 + この演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。 [x ?? y](../../../csharp/language-reference/operators/null-conditional-operator.md) – `x` が `null` 以外の場合は x を返します。null の場合は `y` を返します。 ## 条件演算子 - この演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。 各演算子をクリックすると、演算子の詳細と例が記載されたページに移動します。 + この演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。 - [t ? x : y](../../../csharp/language-reference/operators/conditional-operator.md) – テスト `t` が true の場合は `x` を評価して返します。それ以外の場合は `y` を評価して返します。 + [t ? x : y](../../../csharp/language-reference/operators/conditional-operator.md) – テスト `t` が true に評価される場合は `x` を評価して返します。それ以外の場合は `y` を評価して返します。 ## 代入演算子とラムダ演算子 - これらの演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。 各演算子をクリックすると、演算子の詳細と例が記載されたページに移動します。 + これらの演算子は、前のセクションより優先順位が低く、次のセクションより優先順位が高くなります。 [x = y](../../../csharp/language-reference/operators/assignment-operator.md) – 代入。 - [x += y](../../../csharp/language-reference/operators/addition-assignment-operator.md) – インクリメント。 `y` の値を `x` の値に加算した結果を `x` に格納し、新しい値を返します。 `x` が `event` を指定した場合、`y` は、C# によってイベント ハンドラーとして追加される適切な関数である必要があります。 + [x += y](../../../csharp/language-reference/operators/addition-assignment-operator.md) – インクリメント。 `y` の値を `x` の値に加算した結果を `x` に格納し、新しい値を返します。 `x` が `event` を指定した場合、`y` は、C# によってイベント ハンドラーとして追加される適切な関数である必要があります。 - [x -= y](../../../csharp/language-reference/operators/subtraction-assignment-operator.md) – デクリメント。 `y` の値を `x` の値から減算した結果を `x` に格納し、新しい値を返します。 `x` が `event` を指定した場合、`y` は、C# によってイベント ハンドラーとして削除される適切な関数である必要があります。 + [x -= y](../../../csharp/language-reference/operators/subtraction-assignment-operator.md) – デクリメント。 `y` の値を `x` の値から減算した結果を `x` に格納し、新しい値を返します。 `x` が `event` を指定した場合、`y` は、C# によってイベント ハンドラーとして削除される適切な関数である必要があります。 - [x *= y](../../../csharp/language-reference/operators/multiplication-assignment-operator.md) – 乗算代入。 `y` の値を `x` の値に乗算した結果を `x` に格納し、新しい値を返します。 + [x *= y](../../../csharp/language-reference/operators/multiplication-assignment-operator.md) – 乗算代入。 `y` の値を `x` の値に乗算した結果を `x` に格納し、新しい値を返します。 - [x /= y](../../../csharp/language-reference/operators/division-assignment-operator.md) – 除算代入。 `x` の値を `y` の値で除算した結果を `x` に格納し、新しい値を返します。 + [x /= y](../../../csharp/language-reference/operators/division-assignment-operator.md) – 除算代入。 `x` の値を `y` の値で除算した結果を `x` に格納し、新しい値を返します。 - [x %= y](../../../csharp/language-reference/operators/modulus-assignment-operator.md) – 剰余代入。 `x` の値を `y` の値で除算した剰余を `x` に格納し、新しい値を返します。 + [x %= y](../../../csharp/language-reference/operators/modulus-assignment-operator.md) – 剰余代入。 `x` の値を `y` の値で除算した剰余を `x` に格納し、新しい値を返します。 - [x &= y](../../../csharp/language-reference/operators/and-assignment-operator.md) – AND 代入。 `y` の値と `x` の値の AND 演算を行った結果を `x` に格納し、新しい値を返します。 + [x &= y](../../../csharp/language-reference/operators/and-assignment-operator.md) – AND 代入。 `y` の値と `x` の値の AND 演算を行った結果を `x` に格納し、新しい値を返します。 - [x |= y](../../../csharp/language-reference/operators/or-assignment-operator.md) – OR 代入。 `y` の値と `x` の値の OR 演算を行った結果を `x` に格納し、新しい値を返します。 + [x |= y](../../../csharp/language-reference/operators/or-assignment-operator.md) – OR 代入。 `y` の値と `x` の値の OR 演算を行った結果を `x` に格納し、新しい値を返します。 - [x ^= y](../../../csharp/language-reference/operators/xor-assignment-operator.md) – XOR 代入。 `y` の値と `x` の値の XOR 演算を行った結果を `x` に格納し、新しい値を返します。 + [x ^= y](../../../csharp/language-reference/operators/xor-assignment-operator.md) – XOR 代入。 `y` の値と `x` の値の XOR 演算を行った結果を `x` に格納し、新しい値を返します。 - [x <<= y](../../../csharp/language-reference/operators/left-shift-assignment-operator.md) – 左シフト代入。 `x` の値を `y` で指定した分だけ左へシフトした結果を `x` に格納し、新しい値を返します。 + [x <<= y](../../../csharp/language-reference/operators/left-shift-assignment-operator.md) – 左シフト代入。 `x` の値を `y` で指定した分だけ左へシフトした結果を `x` に格納し、新しい値を返します。 - [x >>= y](../../../csharp/language-reference/operators/right-shift-assignment-operator.md) – 右シフト代入。 `x` の値を `y` で指定した分だけ右へシフトした結果を `x` に格納し、新しい値を返します。 + [x >>= y](../../../csharp/language-reference/operators/right-shift-assignment-operator.md) – 右シフト代入。 `x` の値を `y` で指定した分だけ右へシフトした結果を `x` に格納し、新しい値を返します。 [=>](../../../csharp/language-reference/operators/lambda-operator.md) – ラムダ宣言。 diff --git a/docs/csharp/language-reference/tokens/interpolated.md b/docs/csharp/language-reference/tokens/interpolated.md index d94ded1a4d2..efbe8c60e56 100644 --- a/docs/csharp/language-reference/tokens/interpolated.md +++ b/docs/csharp/language-reference/tokens/interpolated.md @@ -1,8 +1,10 @@ --- -title: "$ (C# リファレンス)" -ms.date: 02/09/2017 +title: $ - 文字列補間 (C# リファレンス) +description: 文字列補間では、従来の複合文字列の書式設定よりも読み取りやすく、便利な構文を書式指定文字列の出力に提供します。 +ms.date: 03/26/2018 ms.prod: .net -ms.technology: devlang-csharp +ms.technology: +- devlang-csharp ms.topic: article f1_keywords: - $_CSharpKeyword @@ -10,26 +12,86 @@ f1_keywords: helpviewer_keywords: - $ special character [C#] - $ language element [C#] -ms.assetid: 7d9e21b5-eac3-4878-9530-50e4da578acd +- string interpolation [C#] +- interpolated string [C#] author: rpetrusha ms.author: ronpet -ms.openlocfilehash: d245bab063721abdb930aae113aab2094553b9bb -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.openlocfilehash: b6873c3b419323fa9f5523143ad607289b6fd6e2 +ms.sourcegitcommit: 935d5267c44f9bce801468ef95f44572f1417e8c ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 03/28/2018 --- -# $ (C# リファレンス) +# $ - 文字列補間 (C# リファレンス) -リテラル文字列を[挿入文字列](../keywords/interpolated-strings.md)として識別します。 挿入文字列はテンプレートのような文字列で、"*挿入式*" とリテラル テキストを含みます。 挿入文字列が解決されると、たとえば代入ステートメントまたはメソッド呼び出し内で、結果文字列の文字列表現によって挿入式が置き換えられます。 挿入文字列は、.NET Framework でサポートされている[複合書式指定文字列](../../../standard/base-types/composite-format.md)の代わりになるものです。 +`$` 特殊文字は、リテラル文字列を*挿入文字列*として識別します。 挿入文字列は、*挿入式*が含まれているテンプレート文字列のように見えます。 挿入文字列が解決されると、たとえば代入ステートメントまたはメソッド呼び出し内で、結果文字列を生成するために、挿入式が結果の文字列表現によって置き換えられます。 この機能は C# 6 以降のバージョンで使用できます。 -次の例では、`$` 文字を使用して、挿入文字列を定義します。 +文字列補間は、[複合文字列の書式設定](../../../standard/base-types/composite-formatting.md)機能よりも読み取りやすく、便利な書式指定された文字列を作成する方法です。 次の例では、両方の機能を使用して、同じ出力を生成します。 -[!code-csharp[interpolated-string-symbol](../../../../samples/snippets/csharp/language-reference/keywords/dollar-sign1.cs#1)] +[!code-csharp-interactive[compare with composite formatting](../../../../samples/snippets/csharp/language-reference/tokens/string-interpolation.cs#1)] -挿入文字列の詳細については、トピック「[挿入文字列](../keywords/interpolated-strings.md)」を参照してください。 +> [!NOTE] +> `$` と文字列を開始する `"` の間に空白を入れることはできません。 空白を入れると、コンパイル時エラーが発生します。 + +挿入式を含む項目の構造は、次のとおりです。 + +``` +{[,][:]} +``` + +角かっこ内の要素は省略可能です。 次の表は、それぞれの要素の説明です。 + +|要素|説明| +|-------------|-----------------| +|`interpolatedExpression`|書式設定される結果を取得するために、評価される式です。 `null` 結果の文字列表現は、 です。| +|`alignment`|挿入式の結果の文字列表現で、最小文字数を定義する値を持つ定数式です。 正の場合は、文字列表現は右揃えで配置され、負の場合は、左揃えで配置されます。 詳細については、「[Alignment コンポーネント](../../../standard/base-types/composite-formatting.md#alignment-component)」を参照してください。| +|`formatString`|式の結果の型によってサポートされる、標準またはカスタムの書式指定文字列です。 詳細については、「[Format String コンポーネント](../../../standard/base-types/composite-formatting.md#format-string-component)」を参照してください。| + +次の例では、上記の表で説明されているオプションの書式設定コンポーネントを使用します。 + +[!code-csharp-interactive[specify alignment and format string](../../../../samples/snippets/csharp/language-reference/tokens/string-interpolation.cs#2)] + +挿入文字列で生成された文字列に中かっこ "{" または "}" を含めるには、2 つの中かっこ "{{" または "}}" を使用します。 詳細については、「[エスケープ中かっこ ({})](../../../standard/base-types/composite-formatting.md#escaping-braces)」を参照してください。 + +コロン (:) が挿入式の項目で特別な意味を持つときに、挿入式で[条件演算子](../operators/conditional-operator.md)を使用するには、その式をかっこで囲みます。 + +次の例では、中かっこを結果文字列に含める方法、および挿入式で条件演算子を使用する方法を示します。 + +[!code-csharp-interactive[example with ternary conditional operator](../../../../samples/snippets/csharp/language-reference/tokens/string-interpolation.cs#3)] + +逐語的挿入文字列では、後に `@` 文字が続く `$` 文字を使用します。 逐語的文字列の詳細については、[string](../keywords/string.md) に関するトピックを参照してください。 + +> [!NOTE] +> `$` トークンは、逐語的挿入文字列の `@` トークンの前に置く必要があります。 + +## 暗黙の変換 + +挿入文字列から暗黙の型変換を行う方法は 3 種類あります。 + +1. 挿入文字列から インスタンスへの変換。これは、適切に書式設定された文字列表現の結果で置き換えられる、挿入式の項目を含む挿入文字列分析の結果です。 この変換では、現在のカルチャを使用します。 + +1. 書式設定される式の結果と、挿入文字列から複合書式指定文字列を表す 変数への変換。 これは、単一の インスタンスから、カルチャ固有のコンテンツを持つ複数の結果文字列の作成を可能にするものです。 そのためには、次のいずれかのメソッドを呼び出します。 + + - の結果文字列を生成する オーバーロード。 + - の結果文字列を生成する メソッド。 + - 特定のカルチャの結果文字列を生成する メソッド。 + +1. 挿入文字列から 変数への変換。これは、単一の インスタンスから、カルチャ固有のコンテンツを持つ複数の結果文字列の作成も可能にするものです。 + +次の例では、カルチャ固有の結果の文字列を作成するために、 への暗黙の変換を使用します。 + +[!code-csharp-interactive[create culture-specific result strings](../../../../samples/snippets/csharp/language-reference/tokens/string-interpolation.cs#4)] + +## その他の参考資料 + +文字列補間を初めてお使いの場合は、[挿入文字列のクイック スタート](../../quick-starts//interpolated-strings.yml)に関するページを確認してください。 詳細については、「[文字列補間](../../tutorials/string-interpolation.md)」のチュートリアルを参照してください。 ## 関連項目 - [C# リファレンス](../../../csharp/language-reference/index.md) + + + + [複合書式指定](../../../standard/base-types/composite-formatting.md) + [文字列](../../../csharp/programming-guide/strings/index.md) + [C# 特殊文字](../../../csharp/language-reference/tokens/index.md) [C# プログラミング ガイド](../../../csharp/programming-guide/index.md) - [C# 特殊文字](../../../csharp/language-reference/tokens/index.md) + [C# リファレンス](../../../csharp/language-reference/index.md) \ No newline at end of file diff --git a/docs/csharp/linq/query-a-collection-of-objects.md b/docs/csharp/linq/query-a-collection-of-objects.md index 75dd656e6d6..61648026b6d 100644 --- a/docs/csharp/linq/query-a-collection-of-objects.md +++ b/docs/csharp/linq/query-a-collection-of-objects.md @@ -1,6 +1,6 @@ --- -title: "オブジェクトのコレクションの照会" -description: "コレクションをクエリする方法。" +title: オブジェクトのコレクションの照会 +description: コレクションをクエリする方法。 keywords: .NET, .NET Core, C# author: BillWagner manager: wpickett @@ -10,11 +10,11 @@ ms.topic: article ms.prod: .net ms.technology: devlang-csharp ms.assetid: 87a76f8a-0b58-4791-90ea-2fe0a30416c9 -ms.openlocfilehash: 74d6c1f080c3e70867f5d2f074315bd1d8486bf0 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.openlocfilehash: a62e5c6324d15376f1b42ad078eeb883b05ef14f +ms.sourcegitcommit: 935d5267c44f9bce801468ef95f44572f1417e8c ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 03/28/2018 --- # オブジェクトのコレクションの照会 この例では、`Student` オブジェクトのリストに対してシンプルなクエリを実行する方法を示します。 各 `Student` オブジェクトには、生徒に関する基本情報と、4 回の試験での生徒の点数を表すリストが含まれています。 @@ -31,4 +31,4 @@ ms.lasthandoff: 11/21/2017 ## 関連項目 [LINQ クエリ式](index.md) - [補間文字列](../language-reference/keywords/interpolated-strings.md) + [文字列補間](../language-reference/tokens/interpolated.md) diff --git a/docs/csharp/programming-guide/file-system/how-to-write-to-a-text-file.md b/docs/csharp/programming-guide/file-system/how-to-write-to-a-text-file.md index 49b91351a3f..657c18708ac 100644 --- a/docs/csharp/programming-guide/file-system/how-to-write-to-a-text-file.md +++ b/docs/csharp/programming-guide/file-system/how-to-write-to-a-text-file.md @@ -1,8 +1,9 @@ --- -title: "方法: テキスト ファイルに書き込む (C# プログラミング ガイド)" +title: '方法: テキスト ファイルに書き込む (C# プログラミング ガイド)' ms.date: 07/20/2015 ms.prod: .net -ms.technology: devlang-csharp +ms.technology: +- devlang-csharp ms.topic: article f1_keywords: - TextWriter.WriteLine @@ -11,25 +12,23 @@ helpviewer_keywords: - files [C#], text files - text, writing to files [C#] ms.assetid: 2e99f184-d88b-4719-a7f1-d9ec482aa809 -caps.latest.revision: "23" +caps.latest.revision: 23 author: BillWagner ms.author: wiwagn -ms.openlocfilehash: c576536947cdb4984d6e5ce67c8377fe23b354c7 -ms.sourcegitcommit: 4f3fef493080a43e70e951223894768d36ce430a +ms.openlocfilehash: fa6de76e3981e0f05b5b192045043422a8a912aa +ms.sourcegitcommit: 935d5267c44f9bce801468ef95f44572f1417e8c ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/21/2017 +ms.lasthandoff: 03/28/2018 --- # 方法: テキスト ファイルに書き込む (C# プログラミング ガイド) -テキストをファイルに書き込むさまざまな方法を次の例に示します。 最初の 2 つの例では、 クラスの静的なコンビニエンス メソッドを使用して、すべての IEnumerable\ の各要素と文字列をテキスト ファイルに記述しています。 例 3 は、ファイルに書き込むときに各行を個別に処理する必要がある場合にテキストをファイルに追加する方法を示します。 例 1 ~ 3 ではすべての既存の内容が上書きされます。例 4 に、既存のファイルにテキストを追加する方法を示します。 +テキストをファイルに書き込むさまざまな方法を次の例に示します。 最初の 2 つの例では、 クラスの便利な静的メソッドを使用して、すべての `IEnumerable` の各要素と文字列をテキスト ファイルに記述しています。 例 3 は、ファイルに書き込むときに各行を個別に処理する必要がある場合にテキストをファイルに追加する方法を示します。 例 1 ~ 3 ではすべての既存の内容が上書きされます。例 4 に、既存のファイルにテキストを追加する方法を示します。 - これらの例はいずれもファイルにリテラル文字列を書き込みますが、通常は、さまざまな型の値の書き込み、フィールド内での右揃えや左揃え、パディングの有無などに対応する多くのコントロールを持つ メソッドを使用します。 C# の[文字列補間](../../../csharp/language-reference/keywords/interpolated-strings.md)機能を使用することもできます。 + これらの例はいずれもリテラル文字列をファイルに書き込みます。 ファイルに書き込まれるテキストの書式を設定する場合は、 メソッドまたは C# の[文字列補間](../../../csharp/language-reference/tokens/interpolated.md)機能を使用します。 ## 例 [!code-csharp[csFilesandFolders#3](../../../csharp/programming-guide/file-system/codesnippet/CSharp/how-to-write-to-a-text-file_1.cs)] - これらの例はいずれもファイルにリテラル文字列を書き込みますが、通常は、さまざまな型の値の書き込み、フィールド内での右揃えや左揃え、パディングの有無などに対応する多くのコントロールを持つ メソッドを使用します。 C# の[文字列補間](../../../csharp/language-reference/keywords/interpolated-strings.md)機能を使用することもできます。 - ## 信頼性の高いプログラミング 次の条件を満たす場合は、例外が発生する可能性があります。 @@ -39,7 +38,7 @@ ms.lasthandoff: 11/21/2017 - ディスクがいっぱいになっている。 -## 関連項目 +## 参照 [C# プログラミング ガイド](../../../csharp/programming-guide/index.md) [ファイル システムとレジストリ (C# プログラミング ガイド)](../../../csharp/programming-guide/file-system/index.md) [サンプル: コレクションをアプリケーション ストレージに保存する](http://code.msdn.microsoft.com/CSWinStoreAppSaveCollection-bed5d6e6) diff --git a/docs/csharp/programming-guide/strings/index.md b/docs/csharp/programming-guide/strings/index.md index 5ab6256e9a2..96c2a061bb4 100644 --- a/docs/csharp/programming-guide/strings/index.md +++ b/docs/csharp/programming-guide/strings/index.md @@ -1,5 +1,5 @@ --- -title: "文字列 (C# プログラミング ガイド)" +title: 文字列 (C# プログラミング ガイド) ms.date: 07/20/2015 ms.prod: .net ms.technology: @@ -9,14 +9,14 @@ helpviewer_keywords: - C# language, strings - strings [C#] ms.assetid: 21580405-cb25-4541-89d5-037846a38b07 -caps.latest.revision: +caps.latest.revision: 41 author: BillWagner ms.author: wiwagn -ms.openlocfilehash: 24b3db01047a9f9a47182e0e1ac105f69562c316 -ms.sourcegitcommit: d95a91d685565f4d95c8773b558752864a6a3d7e +ms.openlocfilehash: 9478900be008588597c1dd9e75f704c751ebe344 +ms.sourcegitcommit: 935d5267c44f9bce801468ef95f44572f1417e8c ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 03/12/2018 +ms.lasthandoff: 03/28/2018 --- # 文字列 (C# プログラミング ガイド) 文字列は、値がテキストの 型のオブジェクトです。 内部では、テキストは オブジェクトの順次読み取り専用コレクションとして格納されます。 C# の文字列の末尾には null 終端文字はありません。したがって、C# の文字列には任意の数の null 文字 ('\0') を埋め込むことができます。 文字列の プロパティは、Unicode 文字の数ではなく、文字列に含まれている `Char` オブジェクトの数を表します。 文字列内の個別の Unicode コード ポイントにアクセスするには、 オブジェクトを使用します。 @@ -124,8 +124,7 @@ string s = String.Empty; |トピック|説明| |-----------|-----------------| |[方法: 文字列の内容を変更する](../../how-to/modify-string-contents.md)|文字列の変換および文字列の内容を変更する手法を示します。| -|[方法: 複数の文字列を連結する](../../../csharp/programming-guide/strings/how-to-concatenate-multiple-strings.md)|コンパイル時と実行時に 1 つの文字列に複数の文字列を結合する手法を示します。| -|[方法: 文字列を比較する](../../../csharp/programming-guide/strings/how-to-compare-strings.md)|文字列の序数比較を実行する方法を示します。| +|[方法: 文字列を比較する](../../how-to/compare-strings.md)|文字列の序数とカルチャ固有の比較を実行する方法を示します。| |[方法: String.Split を使用して文字列を解析する](../../how-to/parse-strings-using-split.md)|`String.Split` メソッドを使用して文字列を解析するコード例を紹介します。| |[方法: 文字列を検索する](../../how-to/search-strings.md)|特定のテキストまたは文字列のパターンの検索を使用する方法について説明します。| |[方法: 文字列が数値を表しているかどうかを確認する](../../../csharp/programming-guide/strings/how-to-determine-whether-a-string-represents-a-numeric-value.md)|文字列を安全に解析して、有効な数値があるかどうかを確認する方法を示します。| diff --git a/docs/csharp/properties.md b/docs/csharp/properties.md index 9073719dd18..c8faa1d15f9 100644 --- a/docs/csharp/properties.md +++ b/docs/csharp/properties.md @@ -1,6 +1,6 @@ --- -title: "プロパティ" -description: "C# のプロパティについて説明します。C# のプロパティには、検証、計算値、遅延評価、プロパティ変更通知の機能があります。" +title: プロパティ +description: C# のプロパティについて説明します。C# のプロパティには、検証、計算値、遅延評価、プロパティ変更通知の機能があります。 keywords: .NET, .NET Core author: BillWagner ms.author: wiwagn @@ -10,11 +10,11 @@ ms.prod: .net ms.technology: devlang-csharp ms.devlang: csharp ms.assetid: 6950d25a-bba1-4744-b7c7-a3cc90438c55 -ms.openlocfilehash: 1ffacd52df89a955ebfa72dc58836211c7a58640 -ms.sourcegitcommit: 5fb6646b5ee3769ffb214e672041833ea4ceeb26 +ms.openlocfilehash: 2a25919048f94211b1696ac8c8471a14ce6e15c5 +ms.sourcegitcommit: 935d5267c44f9bce801468ef95f44572f1417e8c ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 11/08/2017 +ms.lasthandoff: 03/28/2018 --- # プロパティ @@ -149,7 +149,7 @@ public class Person これで、`FirstName` プロパティにはどのコードからもアクセスできる一方で、値の割り当ては `Person` クラス内の他のコードからしかできなくなります。 -制限を設定するアクセス修飾子を set アクセサーと get アクセサーのどちらか 1 つに追加することもできます。 個々のアクセサーには、プロパティ定義のアクセス修飾子よりも制限が強いアクセス修飾子を設定する必要があります。 上記は、`FirstName` プロパティが `public` ですが set アクセサーが `private` であるため、有効です。 `public` なアクセサーを持つ `private` なプロパティを宣言することはできません。 プロパティの宣言を宣言することも`protected`、 `internal`、 `protected internal`、`private protected`またはでも`private`です。 +制限を設定するアクセス修飾子を set アクセサーと get アクセサーのどちらか 1 つに追加することもできます。 個々のアクセサーには、プロパティ定義のアクセス修飾子よりも制限が強いアクセス修飾子を設定する必要があります。 上記は、`FirstName` プロパティが `public` ですが set アクセサーが `private` であるため、有効です。 `public` なアクセサーを持つ `private` なプロパティを宣言することはできません。 プロパティの宣言では、`protected`、`internal`、`protected internal`、`private protected`、`private` を宣言することもできます。 `get` アクセサーに制限の高い修飾子を設定することも有効です。 たとえば、`public` なプロパティで、`get` アクセサーを `private` に制限できます。 ただし、このようなシナリオは実際にはほとんどありません。 @@ -193,7 +193,7 @@ public class Person } ``` -上の例では、"*文字列補間*" 構文を使用して、フルネームを表す書式設定された文字列を作成しています。 +上の例では、"[文字列補間](../csharp/language-reference/tokens/interpolated.md)" 機能を使用して、フルネームを表す書式設定された文字列を作成しています。 "*式形式のメンバー*" を使用することもできます。式形式のメンバーを使用すると、計算された `FullName` プロパティを簡潔な方法で作成できます。 @@ -275,7 +275,7 @@ public class Person ``` 上の最終版では、必要になった場合にのみ `FullName` プロパティが評価されます。 -以前に計算されたものが有効であれば、それが使用されます。 状態が変化したことで、以前に計算されたバージョンが無効になると、再計算が行われます。 このクラスを使用するにあたって、開発者は実装の詳細を知っている必要はありません。 内部で変化があっても Person オブジェクトの使用には影響しません。 これが、プロパティを使用してオブジェクトのデータ メンバーを公開するする重要な利点です。 +以前に計算されたものが有効であれば、それが使用されます。 状態が変化したことで、以前に計算されたバージョンが無効になると、再計算が行われます。 このクラスを使用するにあたって、開発者は実装の詳細を知っている必要はありません。 内部で変化があっても Person オブジェクトの使用には影響しません。 これが、プロパティを使用してオブジェクトのデータ メンバーを公開する重要な利点です。 ### INotifyPropertyChanged diff --git a/docs/csharp/quick-starts/arrays-and-collections.md b/docs/csharp/quick-starts/arrays-and-collections.md index 13c945d77e1..4131a7b923e 100644 --- a/docs/csharp/quick-starts/arrays-and-collections.md +++ b/docs/csharp/quick-starts/arrays-and-collections.md @@ -1,6 +1,6 @@ --- -title: "コレクションのチュートリアル - C# ローカル クイックスタート" -description: "このチュートリアルでは、リスト コレクションについて確認して C# を学習します。" +title: コレクションのチュートリアル - C# ローカル クイックスタート +description: このチュートリアルでは、リスト コレクションについて確認して C# を学習します。 author: billwagner ms.author: wiwagn ms.date: 10/13/2017 @@ -9,11 +9,11 @@ ms.prod: .net ms.technology: devlang-csharp ms.devlang: csharp ms.custom: mvc -ms.openlocfilehash: 76b3baf0525c81e5b3058aa2ab6fd4ccd97d1916 -ms.sourcegitcommit: d2da0142247ef42a219a5d2907f153e62dc6ea0d +ms.openlocfilehash: 88471c5fc60178c058f121ba5e5703999ad61030 +ms.sourcegitcommit: 935d5267c44f9bce801468ef95f44572f1417e8c ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 02/01/2018 +ms.lasthandoff: 03/28/2018 --- # C# クイックスタート: コレクション @@ -54,7 +54,7 @@ namespace list_quickstart 文字列のリストを作成し、そのリストに 3 つの名前を追加し、それらの名前をすべて大文字で出力しました。 先のクイックスタートで学習した概念を使用して、リストをループしています。 -名前を表示するコードは、**補間文字列**を使用します。 `string` の前に文字 `$` を配置すると、文字列宣言に C# コードを埋め込むことができます。 実際の文字列は、生成する値でその C# コードを置き換えます。 この例では、 メソッドを呼び出したため、文字列は `{name.ToUpper()}` をそれぞれの名前に置き換え、文字を大文字に変換しています。 +名前を表示するコードは、[文字列補間](../language-reference/tokens/interpolated.md)機能を使用します。 `string` の前に文字 `$` を配置すると、文字列宣言に C# コードを埋め込むことができます。 実際の文字列は、生成する値でその C# コードを置き換えます。 この例では、 メソッドを呼び出したため、文字列は `{name.ToUpper()}` をそれぞれの名前に置き換え、文字を大文字に変換しています。 続けて確認していきましょう。 diff --git a/docs/csharp/quick-starts/hello-world.yml b/docs/csharp/quick-starts/hello-world.yml index 7e9cea9515b..1f91c6dde3b 100644 --- a/docs/csharp/quick-starts/hello-world.yml +++ b/docs/csharp/quick-starts/hello-world.yml @@ -1,42 +1,102 @@ ### YamlMime:Tutorial title: Hello C# metadata: - title: "Hello World C# の対話形式チュートリアル - C# クイックスタート" - description: "このクイックスタートでは、ブラウザーを使用して C# を対話形式で学習できます。 C# コードを記述し、ブラウザーで直接コードをコンパイルして、実行した結果を確認します。" + title: Hello World C# の対話形式チュートリアル - C# クイックスタート + description: このクイックスタートでは、ブラウザーを使用して C# を対話形式で学習できます。 C# コードを記述し、ブラウザーで直接コードをコンパイルして、実行した結果を確認します。 audience: Developer level: Beginner ms.topic: get-started-article nextTutorialHref: numbers-in-csharp - nextTutorialTitle: "C# の数値" + nextTutorialTitle: C# の数値 displayType: two-column interactive: csharp ms.custom: mvc ms.prod: .net ms.technology: devlang-csharp - ms.openlocfilehash: b29e927275d674281ee176cc9d550b6c52b050ce - ms.sourcegitcommit: be1fb5d9447ad459bef22b91a91c72e3e0b2d916 + ms.openlocfilehash: 8d7e98e8dbd3e9b49269ce0d1cb1900059715b54 + ms.sourcegitcommit: 935d5267c44f9bce801468ef95f44572f1417e8c ms.translationtype: HT ms.contentlocale: ja-JP - ms.lasthandoff: 02/09/2018 + ms.lasthandoff: 03/28/2018 items: - durationInMinutes: 1 - content: "このクイックスタートでは C# を対話形式で学習できます。ブラウザーを使用して C# を記述し、コードをコンパイルして実行した結果を確認します。 このチュートリアルには、\"Hello World\" プログラムを開始する一連のレッスンが含まれています。 これらのレッスンでは、C# 言語の基本を説明します。\n" -- title: "最初の C# プログラムの実行" + content: > + このクイックスタートでは C# を対話形式で学習できます。ブラウザーを使用して C# を記述し、コードをコンパイルして実行した結果を確認します。 このチュートリアルには、"Hello World" プログラムを開始する一連のレッスンが含まれています。 これらのレッスンでは、C# 言語の基本を説明します。 +- title: 最初の C# プログラムの実行 durationInMinutes: 2 content: "対話型ウィンドウで次のコードを実行します。 そのためには、対話型ウィンドウで次のコード ブロックを入力し、**[実行]** をクリックします。\n\n```csharp\nConsole.WriteLine(\"Hello World!\");\n```\n\nおめでとうございます! 最初の C# プログラムを実行しました。 これは \"Hello World!\" というメッセージを出力する単純なプログラムです。 メソッドを使用してこのメッセージを出力しました。 `Console` は、コンソール ウィンドウを表す型です。 `WriteLine` は、そのテキスト コンソールに 1 行のテキストを出力する `Console` 型の 1 つのメソッドです。\n\n次に進んで、さらに詳しく見てみましょう。 このレッスンの残りの部分では、C# においてテキストを表す `string` 型の機能を確認します。 `Console` 型と同じように、`string` 型にもメソッドがあります。 `string` メソッドはテキストを処理します。 \n\n> [!NOTE]\n> このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。\n" -- title: "変数の宣言と使用" +- title: 変数の宣言と使用 durationInMinutes: 3 - content: "最初のプログラムでは、`string` の \"Hello World!\" を 画面に出力しました。 \n\n> [!TIP]\n> C# (または何らかのプログラミング言語) について詳しく学習するに従い、コードを記述する際にミスをすることもあるでしょう。 **コンパイラ**は、そうしたエラーを発見して報告します。 エラー メッセージが出力された場合は、例のコードをよく確認して、対話型ウィンドウで修正すべきコードを見つけます。\n> こうした実習が C# コードの構造を理解するのに役立ちます。 \n\n最初のプログラムは、1 つのメッセージしか出力できません。 **変数**を使用すると、もっと役立つプログラムを記述できます。 **変数**は、同じコードを別の値で実行するのに使用できる記号です。 試してみましょう。 対話型ウィンドウで記述したコードを次のコードに置き換えます。\n\n```csharp\nstring aFriend = \"Bill\";\nConsole.WriteLine(aFriend);\n```\n\n最初の行で変数 `aFriend` を宣言し、その変数に \"Bill\" という値を代入しています。 2 番目の行でその名前を出力しています。\n\n宣言した変数に別の値を代入できます。 この名前を友人の名前に変更できます。 対話型ウィンドウで、先ほど追加したコードのあとに次の 2 行を追加します。\n\n```csharp\naFriend = \"Maria\";\nConsole.WriteLine(aFriend);\n```\n\n`aFriend` 変数に格納された値に基づいて、コードの同じ行に 2 つの異なるメッセージが表示されていることに注目してください。\n\nお気付きかと思いますが、最後の 2 つのメッセージから \"Hello\" という言葉がなくなっています。 修正しましょう。 メッセージを出力する行を次のように変更します。\n\n```csharp\nConsole.WriteLine(\"Hello \" + aFriend);\n```\n\nもう一度 **[実行]** をクリックして結果を確認します。\n\nさらに進めると、`+` を利用して出力する文字列の作成が難しくなります。 文字列補間を利用すれば、より簡潔で読みやすい方法で文字列をつなぎ合わせることができます。\n\n文字列の開始引用符の前に `$` を追加する場合、中かっこの文字列の内部に、`aFriend` 変数など、文字列式を含めることができます。\n\n\n```csharp\nConsole.WriteLine($\"Hello {aFriend}\");\n```\n\nもう一度 **[実行]** をクリックして結果を確認します。\n\n> [!NOTE]\n> このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。\n" -- title: "文字列の処理" + content: "最初のプログラムでは、`string` の \"Hello World!\" を 画面に出力しました。 \n\n> [!TIP]\n> C# (または何らかのプログラミング言語) について詳しく学習するに従い、コードを記述する際にミスをすることもあるでしょう。 **コンパイラ**は、そうしたエラーを発見して報告します。 エラー メッセージが出力された場合は、例のコードをよく確認して、対話型ウィンドウで修正すべきコードを見つけます。\n> こうした実習が C# コードの構造を理解するのに役立ちます。 \n\n最初のプログラムは、1 つのメッセージしか出力できません。 **変数**を使用すると、もっと役立つプログラムを記述できます。 **変数**は、同じコードを別の値で実行するのに使用できる記号です。 試してみましょう。 対話型ウィンドウで記述したコードを次のコードに置き換えます。\n\n```csharp\nstring aFriend = \"Bill\";\nConsole.WriteLine(aFriend);\n```\n\n最初の行で変数 `aFriend` を宣言し、その変数に \"Bill\" という値を代入しています。 2 番目の行でその名前を出力しています。\n\n宣言した変数に別の値を代入できます。 この名前を友人の名前に変更できます。 対話型ウィンドウで、先ほど追加したコードのあとに次の 2 行を追加します。\n\n```csharp\naFriend = \"Maria\";\nConsole.WriteLine(aFriend);\n```\n\n`aFriend` 変数に格納された値に基づいて、コードの同じ行に 2 つの異なるメッセージが表示されていることに注目してください。\n\nお気付きかと思いますが、最後の 2 つのメッセージから \"Hello\" という言葉がなくなっています。 修正しましょう。 メッセージを出力する行を次のように変更します。\n\n```csharp\nConsole.WriteLine(\"Hello \" + aFriend);\n```\n\nもう一度 **[実行]** をクリックして結果を確認します。\n\nさらに進めると、`+` を利用して出力する文字列の作成が難しくなります。 [文字列補間](../language-reference/tokens/interpolated.md)を利用すれば、より簡潔で読みやすい方法で文字列をつなぎ合わせることができます。\n\n文字列の開始引用符の前に `$` を追加する場合、中かっこの文字列の内部に、`aFriend` 変数など、式を含めることができます。\n\n\n```csharp\nConsole.WriteLine($\"Hello {aFriend}\");\n```\n\nもう一度 **[実行]** をクリックして結果を確認します。\n\n> [!NOTE]\n> このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。\n" +- title: 文字列の処理 durationInMinutes: 5 - content: "先ほどの編集を通して、文字列を使って何ができるかを初めて確認しました。 さらに詳しく見てみましょう。\n\n`+` は C# において演算子と呼ばれるものの 1 つです。 `firstString + secondString` のように文字列に適用すると、1 つ目のテキストに 2 つ目のテキストが続く新しいテキストが作成されます。 これを*文字列の連結*と言います。 文字列変数も含めて、文字列をいくつでも連結できます。 これを試してみます。\n\n```csharp\nstring firstFriend = \"Maria\";\nstring secondFriend = \"Sage\";\nConsole.WriteLine($\"My friends are {firstFriend} and {secondFriend}\");\n```\n\n文字列についてさらに詳しく見ていきます。`Length` を使用して文字列の長さを知ることができます。 `Length` は文字列の**プロパティ**であり、その文字列の文字数を返します。 対話型ウィンドウの下部に次のコードを追加します。\n\n```csharp\nConsole.WriteLine($\"The name {firstFriend} has {firstFriend.Length} letters.\");\nConsole.WriteLine($\"The name {secondFriend} has {secondFriend.Length} letters.\");\n```\n\n> [!TIP]\n> このあたりで、自分で試してみるといいでしょう。 `Console.WriteLine()` を使用して画面にテキストを出力できることを学習しました。 変数を宣言して文字列同士を連結する方法についても学習しました。 対話型ウィンドウで実際に確認してみてください。 自分でより多くのメッセージを記述してみるとよいでしょう。 `+` 演算子を使用して文字列を作成してください。\n\n> [!NOTE]\n> このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。\n" -- title: "文字列の追加操作" + content: > + 先ほどの編集を通して、文字列を使って何ができるかを初めて確認しました。 さらに詳しく見てみましょう。 + + + `+` は C# において演算子と呼ばれるものの 1 つです。 `firstString + secondString` のように文字列に適用すると、1 つ目のテキストに 2 つ目のテキストが続く新しいテキストが作成されます。 これを*文字列の連結*と言います。 文字列変数も含めて、文字列をいくつでも連結できます。 これを試してみます。 + + + ```csharp + + string firstFriend = "Maria"; + + string secondFriend = "Sage"; + + Console.WriteLine($"My friends are {firstFriend} and {secondFriend}"); + + ``` + + + 文字列についてさらに詳しく見ていきます。`Length` を使用して文字列の長さを知ることができます。 `Length` は文字列の**プロパティ**であり、その文字列の文字数を返します。 対話型ウィンドウの下部に次のコードを追加します。 + + + ```csharp + + Console.WriteLine($"The name {firstFriend} has {firstFriend.Length} letters."); + + Console.WriteLine($"The name {secondFriend} has {secondFriend.Length} letters."); + + ``` + + + > [!TIP] + + > このあたりで、自分で試してみるといいでしょう。 `Console.WriteLine()` を使用して画面にテキストを出力できることを学習しました。 変数を宣言して文字列同士を連結する方法についても学習しました。 対話型ウィンドウで実際に確認してみてください。 自分でより多くのメッセージを記述してみるとよいでしょう。 `+` 演算子を使用して文字列を作成してください。 + + + > [!NOTE] + + > このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。 +- title: 文字列の追加操作 durationInMinutes: 5 content: "メッセージを出力するのに **メソッド**を使用してきました。 **メソッド**は、何らかのアクションを実装したコードのブロックです。 メソッドに名前があることで、それにアクセスできます。 \n\n`string` 型には多くの便利なメソッドがあります。 メソッドと、それに関連した メソッドを使ってみましょう。 これらのメソッドは、先頭と末尾にあるスペースを削除します。\n\n```csharp\nstring greeting = \" Hello World! \";\nConsole.WriteLine($\"[{greeting}]\");\n\nstring trimmedGreeting = greeting.TrimStart();\nConsole.WriteLine($\"[{trimmedGreeting}]\");\n\ntrimmedGreeting = greeting.TrimEnd();\nConsole.WriteLine($\"[{trimmedGreeting}]\");\n\ntrimmedGreeting = greeting.Trim();\nConsole.WriteLine($\"[{trimmedGreeting}]\");\n```\n\nこのサンプルでは、文字列を処理するための重要な概念のいくつかを説明しています。 文字列を操作するメソッドは、定位置に変更を加えるのではなく、新しい文字列オブジェクトを返します。 `Trim` メソッドのいずれかに対する各呼び出しは新しい文字列を返すが元のメッセージを変更しない、ということが確認できます。\n\n文字列を処理するメソッドは他にもあります。 たとえば、エディターやワード プロセッサで検索と置換のコマンドを使用したことがあるかもしれません。 メソッドはそれと似た処理を `string` で行います。 このメソッドは部分文字列を検索し、それを別のテキストに置き換えます。 メソッドは、2 つの**パラメーター**を受け取ります。 パラメーターは丸かっこ内の文字列です。 最初の文字列は、検索対象のテキストです。 2 つ目の文字列は、置換後のテキストです。 ご自分で試してみてください。 このコードを追加します。\n\n```csharp\nstring sayHello = \"Hello World!\";\nConsole.WriteLine(sayHello);\nsayHello = sayHello.Replace(\"Hello\", \"Greetings\");\nConsole.WriteLine(sayHello);\n```\n\nその他にも役立つメソッドが 2 つあり、1 つは文字列のすべてを大文字にし、もう 1 つは文字列のすべてを小文字にします。 次のコードを試してみてください。\n\n```csharp\nConsole.WriteLine(sayHello.ToUpper());\nConsole.WriteLine(sayHello.ToLower());\n```\n\n> [!NOTE]\n> このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。\n" -- title: "検索文字列" +- title: 検索文字列 durationInMinutes: 10 content: "*検索と置換*の演算子は他にも、文字列内のテキストを検索できます。 検索には メソッドを使用できます。 これにより、文字列内に部分文字列が含まれているかどうかを確認できます。 次のコードを試してみて、 を確認してください。\n\n```csharp\nstring songLyrics = \"You say goodbye, and I say hello\";\nConsole.WriteLine(songLyrics.Contains(\"goodbye\"));\nConsole.WriteLine(songLyrics.Contains(\"greetings\"));\n```\n\n メソッドは**ブール値**を返し、検索した文字列が見つかったかどうかを知らせます。 **ブール値**は `true` か `false` どちらかの値を格納します。 **ブール値**については、この後のレッスンで詳しく学習します。\n\n***課題***\n\n似たような 2 つのメソッドがあり、 も文字列内の部分文字列を検索します。 これらは文字列の先頭または末尾の部分文字列を検索します。 先述のサンプルを変更して、 の代わりに を使用してみてください。 文字列の先頭にある \"You\" または \"goodbye\" を検索します。 文字列の末尾にある \"hello\" または \"goodbye\" を検索します。\n\n> [!Note]\n> 文字列の末尾にあるテキストをテストするときは、句読点に注意します。 文字列が句点で終わる場合は、末尾に句点を含めた文字列を検索する必要があります。\n\n先頭が \"You\" で末尾が \"hello\" の場合は `true`、先頭または末尾が \"goodbye\" の場合は false になります。 \n\n> [!NOTE]\n> このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。\n" -- title: "課題完了" +- title: 課題完了 durationInMinutes: 3 - content: "コードは次のようになりましたか?\n\n```csharp\nstring songLyrics = \"You say goodbye, and I say hello\";\nConsole.WriteLine(songLyrics.StartsWith(\"You\"));\nConsole.WriteLine(songLyrics.StartsWith(\"goodbye\"));\n\nConsole.WriteLine(songLyrics.EndsWith(\"hello\"));\nConsole.WriteLine(songLyrics.EndsWith(\"goodbye\"));\n```\n\n> [!NOTE]\n> このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。\n" -- content: "\"Hello C#\" クイックスタートはこれで終了です。\n\n`string` 型の機能の詳細については、「[C# プログラミング ガイド](../programming-guide/index.md)」の[文字列](../programming-guide/strings/index.md)に関するトピックで学習できます。\n[文字列のヒント](../how-to/index.md#strings)に関するページを参照してください。\0" + content: > + コードは次のようになりましたか? + + + ```csharp + + string songLyrics = "You say goodbye, and I say hello"; + + Console.WriteLine(songLyrics.StartsWith("You")); + + Console.WriteLine(songLyrics.StartsWith("goodbye")); + + + Console.WriteLine(songLyrics.EndsWith("hello")); + + Console.WriteLine(songLyrics.EndsWith("goodbye")); + + ``` + + + > [!NOTE] + + > このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。 +- content: "\"Hello C#\" クイックスタートはこれで終了です。\n\n`string` 型の機能の詳細については、「[C# プログラミング ガイド](../programming-guide/index.md)」の[文字列](../programming-guide/strings/index.md)に関するトピックで学習できます。\n[文字列のヒント](../how-to/index.md#strings)に関するページを参照してください。" diff --git a/docs/csharp/quick-starts/interpolated-strings-local.md b/docs/csharp/quick-starts/interpolated-strings-local.md index 6bd3c4263f0..4340615915e 100644 --- a/docs/csharp/quick-starts/interpolated-strings-local.md +++ b/docs/csharp/quick-starts/interpolated-strings-local.md @@ -1,6 +1,6 @@ --- -title: "挿入文字列のチュートリアル - C# ローカル クイックスタート" -description: "この挿入文字列に関するクイックスタートでは、C# コードを記述して、より大きな文字列に式の結果を含めます。" +title: 挿入文字列のチュートリアル - C# ローカル クイックスタート +description: この挿入文字列に関するクイックスタートでは、C# コードを記述して、より大きな文字列に式の結果を含めます。 author: rpetrusha ms.author: ronpet ms.date: 01/11/2018 @@ -9,11 +9,11 @@ ms.prod: .net ms.technology: devlang-csharp ms.devlang: csharp ms.custom: mvc -ms.openlocfilehash: b6089b69eb350fce29f86f19f5abeb44acb4b6b4 -ms.sourcegitcommit: 96cc82cac4650adfb65ba351506d8a8fbcd17b5c +ms.openlocfilehash: 1edd2b9f59d1933547c4152343f226a86ad90216 +ms.sourcegitcommit: 935d5267c44f9bce801468ef95f44572f1417e8c ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 02/19/2018 +ms.lasthandoff: 03/28/2018 --- # 挿入文字列 @@ -166,5 +166,4 @@ Console.WriteLine($"{DateTime.Now,-20:d} Hour {DateTime.Now,-10:HH} {1063.342,15 続けて独自の開発環境で[配列とコレクション](arrays-and-collections.md)のクイックスタートに進むことができます。 -挿入文字列の機能の詳細については、C# リファレンスの[挿入文字列](../language-reference/keywords/interpolated-strings.md)に関するトピックで学習できます。 - +挿入文字列の詳細については、C# リファレンスの「[文字列補間](../language-reference/tokens/interpolated.md)」トピックで学習できます。 diff --git a/docs/csharp/quick-starts/interpolated-strings.yml b/docs/csharp/quick-starts/interpolated-strings.yml index 17ffe5c9db9..e568e01bbd0 100644 --- a/docs/csharp/quick-starts/interpolated-strings.yml +++ b/docs/csharp/quick-starts/interpolated-strings.yml @@ -1,8 +1,8 @@ ### YamlMime:Tutorial -title: "C# の挿入文字列" +title: C# の挿入文字列 metadata: - title: "挿入文字列の対話形式チュートリアル - C# クイックスタート" - description: "このチュートリアルでは、ブラウザーを使用して、対話形式で C# の挿入文字列機能を使用します。 C# コードを記述し、ブラウザーで直接コードをコンパイルして、実行した結果を確認します。" + title: 挿入文字列の対話形式チュートリアル - C# クイックスタート + description: このチュートリアルでは、ブラウザーを使用して、対話形式で C# の挿入文字列機能を使用します。 C# コードを記述し、ブラウザーで直接コードをコンパイルして、実行した結果を確認します。 audience: Developer ms.custom: mvc ms.topic: get-started-article @@ -10,25 +10,51 @@ metadata: displayType: two-column interactive: csharp nextTutorialHref: list-collection - nextTutorialTitle: "C# のコレクション" - ms.openlocfilehash: 6f2bb18298ec41c8ccf634035059940342cbc82c - ms.sourcegitcommit: 96cc82cac4650adfb65ba351506d8a8fbcd17b5c + nextTutorialTitle: C# のコレクション + ms.openlocfilehash: 7e1de34c9075826a6fcb6bf71cb01bfbd5c215ca + ms.sourcegitcommit: 935d5267c44f9bce801468ef95f44572f1417e8c ms.translationtype: HT ms.contentlocale: ja-JP - ms.lasthandoff: 02/19/2018 + ms.lasthandoff: 03/28/2018 items: - durationInMinutes: 2 - content: "このクイックスタートでは、C# で挿入文字列を使用して、対話形式で単一の出力文字列に値を挿入する方法を説明します。 ブラウザーを使用して C# コードを記述し、コードのコンパイルと実行の結果をすぐに確認することができます。 クイックスタートには、文字列を連結し、値を文字列に挿入し、それらの値の書式をさまざまな方法で設定する、一連のレッスンが含まれています。\n" -- title: "挿入文字列を作成する" + content: > + このクイックスタートでは、C# で挿入文字列を使用して、対話形式で単一の出力文字列に値を挿入する方法を説明します。 ブラウザーを使用して C# コードを記述し、コードのコンパイルと実行の結果をすぐに確認することができます。 クイックスタートには、文字列を連結し、値を文字列に挿入し、それらの値の書式をさまざまな方法で設定する、一連のレッスンが含まれています。 +- title: 挿入文字列を作成する durationInMinutes: 2 content: "対話型ウィンドウで次のコードを実行します。 そのためには、対話型ウィンドウで次のコード ブロックを入力し (\"\\\" を自分の名前に置き換える)、**[実行]** ボタンをクリックします。\n\n```csharp\nvar name = \"\";\nConsole.WriteLine($\"Hello, {name}. It's a pleasure to meet you!\");\n```\n\nプログラムを実行すると、あいさつ文に自分の名前を含む単一の文字列が表示されます。 メソッド呼び出しに含まれる文字列は、*挿入文字列*です。 これは、埋め込みコードを含む文字列から (*結果文字列*という) 単一の文字列を構築できる一種のテンプレートです。 挿入文字列は、文字列に値を挿入したり、文字列を (結合) 連結したりする場合に特に便利です。 \n\nこの簡単な例には、すべての挿入文字列に含める必要がある次の 2 つの要素が含まれています。 \n\n- 始まりの引用符文字の前の `$` で始まる文字列リテラル。 `$` シンボルと引用符文字の間にスペースを挿入することはできません (スペースが含まれている場合の動作を確認したい場合は、対話型ウィンドウで `$` 文字の後にスペースを挿入し、**[実行]** ボタンをクリックします。 C# コンパイラには \"予期しない '$' 文字です\" と示されます)。 \n\n- 1 つ以上の*挿入式*。 挿入式は、始めかっこと終わりかっこ (`{` と `}`) で示されます。 かっこ内に (`null` を含む) 値を返す C# 式を配置できます。 \n\nその他のいくつかのデータ型を持つ挿入文字列の例をさらにいくつか試してみましょう。\n\n> [!NOTE]\n> このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。\n" -- title: "さまざまなデータ型を含める" +- title: さまざまなデータ型を含める durationInMinutes: 3 content: "前のクイックスタートでは、挿入文字列を使用して、1 つの文字列内に別の文字列を挿入しましたが、 挿入文字列式を任意のデータ型にすることもできます。 複数のデータ型の値を持つ挿入文字列を試してみましょう。 \n\n次の例には、`Vegetable` オブジェクト、`Unit` 列挙型のメンバー、 値、 値を持つ挿入式が含まれています。 これを対話型ウィンドウで実行します。\n\n```csharp\npublic class Vegetable\n{\n public Vegetable(string name) => Name = name;\n\n public string Name { get; }\n\n public override string ToString() => Name;\n}\n\npublic class Example\n{\n public enum Unit { item, pound, ounce, dozen };\n\n public static void Main()\n {\n var item = new Vegetable(\"eggplant\");\n var date = DateTime.Now;\n var price = 1.99m;\n var unit = Unit.item;\n Console.WriteLine($\"On {date}, the price of {item} was {price} per {unit}.\");\n }\n}\n```\n\n挿入式の 1 つには、コンソールに表示される結果文字列の `item` オブジェクトが含まれており、この場合、\"eggplant\" という文字列が結果文字列に挿入されることに注意してください。 これは、挿入式の型が文字列でない場合、C# コンパイラでは次の処理が行われるためです。\n\n- 挿入式が `null` の場合、挿入式は空の文字列 (\"\"、または ) を返します。\n\n- 挿入式が `null` でない場合、挿入式の型の `ToString` メソッドが呼び出されます。 コメント シンボル (`//`) を前に配置して、例の `Vegetable.ToString` メソッドの定義をコメント アウトすることで、これをテストできます。 出力では、\"eggplant\" という文字列が完全修飾型名 (型名と共に C# REPL によって定義される名前空間) に置き換えられます。これは、 メソッドの既定の動作です。 \n\nこの例の出力では、日付の精度が高すぎ (エッグプラントの価格が 2 つ目の値により変化しない)、価格の値は通貨の単位を示していません。 次の手順では、挿入式によって返される文字列の形式を制御することで、こうした問題を修正する方法について説明します。\n\n> [!NOTE]\n> このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。\n" -- title: "挿入式の書式設定を制御する" +- title: 挿入式の書式設定を制御する durationInMinutes: 5 - content: "前のレッスンでは、適切に書式設定されていない 2 つの文字列が結果文字列に挿入されました。 1 つは、日付のみが適切な日時の値でした。 もう 1 つは、通貨単位を示さない価格でした。 両方の問題には簡単に対処することができます。 挿入式に、特定の型の書式設定を制御する*書式指定文字列*を含めることができます。 前の例の `Console.WriteLine` 呼び出しを変更し、次の行に示すように、日付と価格のフィールドの書式指定子を含めます。\n\n```csharp\nConsole.WriteLine($\"On {date:d}, the price of {item} was {price:C2} per {unit}.\");\n```\n\nコロンと書式指定文字列を持つ挿入式に従って、書式指定文字列を指定します。 \"d\" は、短い日付形式を表す[標準の日時書式設定文字列](../../standard/base-types/standard-date-and-time-format-strings.md#the-short-date-d-format-specifier)です。 \"C2\" は、小数点以下が 2 桁の通貨値として数値を表す[標準の数値書式指定文字列](../../standard/base-types/standard-numeric-format-strings.md#the-currency-c-format-specifier)です。\n\n.NET Standard ライブラリの多くの型で、定義済みの書式指定文字列セットがサポートされています。 これらには、数値型と日時型がすべて含まれます。 書式指定文字列をサポートする型の完全なリストについては、「[.Net 型の書式設定](../../standard/base-types/formatting-types.md)」記事の「[.NET クラス ライブラリの型および書式指定文字列](../../standard/base-types/formatting-types.md#stringRef)」を参照してください。 どの型でも書式指定文字列セットをサポートすることができ、既存の型のカスタム書式指定を提供するカスタム書式指定拡張機能を開発することもできます。 実装を提供することによるカスタム書式指定については、「[.Net 型の書式設定](../../standard/base-types/formatting-types.md)」記事の「[ICustomFormatter を使用したカスタム書式設定](../../standard/base-types/formatting-types.md#custom-formatting-with-icustomformatter)」を参照してください。\n\n**.NET エディター**で書式指定文字列を変更してみて、日時と数値の書式設定にどのように影響するかを確認します。 `{date:d}` の \"d\" を \"t\" (短い時刻形式を表示する)、\"y\" (年と月を表示する)、\"yyyy\" (4 桁の数字として年を表示する) に変更します。 `{price:C2}` \"C2\" を \"e\" (指数表記の場合) と \"F3\" (小数点以下が 3 桁の数値の場合) に変更します。\n\n書式設定を制御するだけでなく、挿入式によって返される文字列のフィールドの幅と配置を制御することもできます。 次の手順では、この方法を説明します。\n\n> [!NOTE]\n> このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。\n" -- title: "挿入式のフィールドの幅と配置を制御する" + content: > + 前のレッスンでは、適切に書式設定されていない 2 つの文字列が結果文字列に挿入されました。 1 つは、日付のみが適切な日時の値でした。 もう 1 つは、通貨単位を示さない価格でした。 両方の問題には簡単に対処することができます。 挿入式に、特定の型の書式設定を制御する*書式指定文字列*を含めることができます。 前の例の `Console.WriteLine` 呼び出しを変更し、次の行に示すように、日付と価格のフィールドの書式指定子を含めます。 + + + ```csharp + + Console.WriteLine($"On {date:d}, the price of {item} was {price:C2} per {unit}."); + + ``` + + + コロンと書式指定文字列を持つ挿入式に従って、書式指定文字列を指定します。 "d" は、短い日付形式を表す[標準の日時書式設定文字列](../../standard/base-types/standard-date-and-time-format-strings.md#the-short-date-d-format-specifier)です。 "C2" は、小数点以下が 2 桁の通貨値として数値を表す[標準の数値書式指定文字列](../../standard/base-types/standard-numeric-format-strings.md#the-currency-c-format-specifier)です。 + + + .NET Standard ライブラリの多くの型で、定義済みの書式指定文字列セットがサポートされています。 これらには、数値型と日時型がすべて含まれます。 書式指定文字列をサポートする型の完全なリストについては、「[.Net 型の書式設定](../../standard/base-types/formatting-types.md)」記事の「[.NET クラス ライブラリの型および書式指定文字列](../../standard/base-types/formatting-types.md#stringRef)」を参照してください。 どの型でも書式指定文字列セットをサポートすることができ、既存の型のカスタム書式指定を提供するカスタム書式指定拡張機能を開発することもできます。 実装を提供することによるカスタム書式指定については、「[.Net 型の書式設定](../../standard/base-types/formatting-types.md)」記事の「[ICustomFormatter を使用したカスタム書式設定](../../standard/base-types/formatting-types.md#custom-formatting-with-icustomformatter)」を参照してください。 + + + **.NET エディター**で書式指定文字列を変更してみて、日時と数値の書式設定にどのように影響するかを確認します。 `{date:d}` の "d" を "t" (短い時刻形式を表示する)、"y" (年と月を表示する)、"yyyy" (4 桁の数字として年を表示する) に変更します。 `{price:C2}` "C2" を "e" (指数表記の場合) と "F3" (小数点以下が 3 桁の数値の場合) に変更します。 + + + 書式設定を制御するだけでなく、挿入式によって返される文字列のフィールドの幅と配置を制御することもできます。 次の手順では、この方法を説明します。 + + + > [!NOTE] + + > このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。 +- title: 挿入式のフィールドの幅と配置を制御する durationInMinutes: 6 content: "通常、挿入式によって返される文字列が結果文字列に含まれている場合、先頭スペースも末尾スペースもありません。 特にデータ セットを処理する場合、挿入式ではフィールドの幅とその配置を指定することができます。 そのためには、次のコードを実行します。\n\n```csharp\n var inventory = new Dictionary();\n inventory.Add(\"hammer, ball pein\", 18);\n inventory.Add(\"hammer, cross pein\", 5);\n inventory.Add(\"screwdriver, Phillips #2\", 14);\n\n Console.WriteLine($\"Inventory on {DateTime.Now:d}\");\n Console.WriteLine(\" \");\n Console.WriteLine($\"{\"Item\",-25} {\"Quantity\",10}\");\n Console.WriteLine(\" \"); \n foreach (var item in inventory)\n Console.WriteLine($\"{item.Key,-25} {item.Value,10}\");\n```\n\n項目名は左揃えになり、その数量は右揃えになります。 式の後にコンマ (\",\") を追加し、フィールドの幅を指定して、配置を指定します。 次のようにフィールドの幅が正数の場合、フィールドは右揃えになります。\n\n```text\n{expression, width}\n```\n\n次のようにフィールドの幅が負数の場合、フィールドは左揃えになります。\n\n```text\n{expression, -width}\n```\n`{\"Item\",-25}` と `{item.Key,-25}` の挿入式から負号を削除してみて、例を再実行します。 この場合、項目名は右揃えになります。\n\nフィールドの幅と書式指定文字列を組み合わせて単一の挿入式にまとめることができます。 最初にフィールドの幅が配置され、その後にコロンと書式指定文字列が続きます。 フィールド幅が定義された 3 つの書式指定された文字列を表示する、次の簡単なプログラムを試します。\n\n```csharp\nConsole.WriteLine($\"{DateTime.Now,-20:d} Hour {DateTime.Now,-10:HH} {1063.342,15:N2} feet\");\n```\n\n> [!NOTE]\n> このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。\n" -- content: "挿入文字列のクイックスタートはこれで終了です。 \n\nこれまでのクイックスタートを、ご自身のローカル開発環境でも引き続き使用できます。 [ローカル開発](local-environment.md)の基本を学習してから、クイックスタートを選択してください。 これと同じ演習を試すことも、次のクイックスタートに直接移動することも、再度「[C# の数値](numbers-in-csharp-local.md)」クイック スタートから始めることもできます。\n\n挿入文字列の機能の詳細については、C# リファレンスの[挿入文字列](../language-reference/keywords/interpolated-strings.md)に関するトピックで学習できます。\0" +- content: "挿入文字列のクイックスタートはこれで終了です。 \n\nこれまでのクイックスタートを、ご自身のローカル開発環境でも引き続き使用できます。 [ローカル開発](local-environment.md)の基本を学習してから、クイックスタートを選択してください。 これと同じ演習を試すことも、次のクイックスタートに直接移動することも、再度「[C# の数値](numbers-in-csharp-local.md)」クイック スタートから始めることもできます。\n\n挿入文字列の詳細については、C# リファレンスの「[文字列補間](../language-reference/tokens/interpolated.md)」トピックで学習できます。" diff --git a/docs/csharp/quick-starts/list-collection.yml b/docs/csharp/quick-starts/list-collection.yml index 8fc8015566b..25ea6619039 100644 --- a/docs/csharp/quick-starts/list-collection.yml +++ b/docs/csharp/quick-starts/list-collection.yml @@ -1,8 +1,8 @@ ### YamlMime:Tutorial -title: "C# のコレクション" +title: C# のコレクション metadata: - title: "コレクションの対話形式チュートリアル - C# クイックスタート" - description: "このチュートリアルでは、ブラウザーを使用して C# を対話形式で学習できます。 C# コードを記述し、ブラウザーで直接コードをコンパイルして、実行した結果を確認します。" + title: コレクションの対話形式チュートリアル - C# クイックスタート + description: このチュートリアルでは、ブラウザーを使用して C# を対話形式で学習できます。 C# コードを記述し、ブラウザーで直接コードをコンパイルして、実行した結果を確認します。 audience: Developer ms.topic: get-started-article ms.custom: mvc @@ -11,30 +11,196 @@ metadata: interactive: csharp ms.prod: .net ms.technology: devlang-csharp - ms.openlocfilehash: 483b403b35eef4405b1c7debc52678aef19cb9b6 - ms.sourcegitcommit: d2da0142247ef42a219a5d2907f153e62dc6ea0d + ms.openlocfilehash: 08060fc95d94db91a429439e502a8f6dc2978c4d + ms.sourcegitcommit: 935d5267c44f9bce801468ef95f44572f1417e8c ms.translationtype: HT ms.contentlocale: ja-JP - ms.lasthandoff: 02/01/2018 + ms.lasthandoff: 03/28/2018 items: - durationInMinutes: 1 - content: "このクイックスタートでは C# を対話形式で学習できます。ブラウザーを使用して C# コードを記述し、コードをコンパイルして実行した結果を確認します。 このチュートリアルには、コレクションと配列を作成、変更、確認する一連のレッスンが含まれています。\n" -- title: "リストを作成する" + content: > + このクイックスタートでは C# を対話形式で学習できます。ブラウザーを使用して C# コードを記述し、コードをコンパイルして実行した結果を確認します。 このチュートリアルには、コレクションと配列を作成、変更、確認する一連のレッスンが含まれています。 +- title: リストを作成する durationInMinutes: 2 - content: "対話型ウィンドウで次のコードを実行します。 そのためには、対話型ウィンドウで次のコード ブロックを入力し (\"\" を自分の名前に置き換えて)、**[実行]** をクリックします。\n\n```csharp\nvar names = new List { \"\", \"Ana\", \"Felipe\" };\nforeach (var name in names)\n{\n Console.WriteLine($\"Hello {name.ToUpper()}!\");\n}\n```\n\n文字列のリストを作成し、そのリストに 3 つの名前を追加し、それらの名前をすべて大文字で出力しました。 先のクイックスタートで学習した概念を使用して、リストをループしています。\n\n名前を表示するコードは、**補間文字列**を使用します。 `string` の前に文字 `$` を配置すると、文字列宣言に C# コードを埋め込むことができます。 実際の文字列は、生成する値でその C# コードを置き換えます。 この例では、 メソッドを呼び出したため、文字列は `{name.ToUpper()}` をそれぞれの名前に置き換え、文字を大文字に変換しています。\n\n続けて確認していきましょう。\n\n> [!NOTE]\n> このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。\n" -- title: "リスト コンテンツを変更する" + content: > + 対話型ウィンドウで次のコードを実行します。 そのためには、対話型ウィンドウで次のコード ブロックを入力し ("" を自分の名前に置き換えて)、**[実行]** をクリックします。 + + + ```csharp + + var names = new List { "", "Ana", "Felipe" }; + + foreach (var name in names) + + { + Console.WriteLine($"Hello {name.ToUpper()}!"); + } + + ``` + + + 文字列のリストを作成し、そのリストに 3 つの名前を追加し、それらの名前をすべて大文字で出力しました。 先のクイックスタートで学習した概念を使用して、リストをループしています。 + + + 名前を表示するコードは、[文字列補間](../language-reference/tokens/interpolated.md)機能を使用します。 `string` の前に文字 `$` を配置すると、文字列宣言に C# コードを埋め込むことができます。 実際の文字列は、生成する値でその C# コードを置き換えます。 この例では、 メソッドを呼び出したため、文字列は `{name.ToUpper()}` をそれぞれの名前に置き換え、文字を大文字に変換しています。 + + + 続けて確認していきましょう。 + + + > [!NOTE] + + > このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。 +- title: リスト コンテンツを変更する durationInMinutes: 3 - content: "作成したコレクションは 型を使用します。 この型は、要素のシーケンスを格納します。 要素の型を山かっこの内側で指定します。\n\nこの 型の重要な点は増減が可能で、要素を追加したり削除したりできることです。 既に記述したコードの下に、次のコードを追加します。\n\n```csharp\nConsole.WriteLine();\nnames.Add(\"Maria\");\nnames.Add(\"Bill\");\nnames.Remove(\"Ana\");\nforeach (var name in names)\n{\n Console.WriteLine($\"Hello {name.ToUpper()}!\");\n}\n```\n\nさらに 2 つの名前をリストの末尾に追加しました。 また、1 つを削除しました。\n\n を使用すると、**インデックス**でも個々の項目を参照できます。 `[` と `]` のトークンを使用して項目にアクセスします。 既に記述したコードの下に、次のコードを追加して試してみます。\n\n```csharp\nConsole.WriteLine($\"My name is {names[0]}.\");\nConsole.WriteLine($\"I've added {names[2]} and {names[3]} to the list.\");\n```\n\nリストの末尾を越えてアクセスすることはできません。 プロパティを使用すれば、リストの長さを確認できます。 次のコードを追加して試してみます。\n\n```csharp\nConsole.WriteLine($\"The list has {names.Count} people in it\");\n```\n\nもう一度 **[実行]** をクリックして結果を確認します。 C# ではインデックスは 0 から始まるため、有効なインデックスの最大値はリスト内の項目の数より 1 小さくなります。\n\n> [!NOTE]\n> このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。\n" -- title: "リストを検索して並び替える" + content: > + 作成したコレクションは 型を使用します。 この型は、要素のシーケンスを格納します。 要素の型を山かっこの内側で指定します。 + + + この 型の重要な点は増減が可能で、要素を追加したり削除したりできることです。 既に記述したコードの下に、次のコードを追加します。 + + + ```csharp + + Console.WriteLine(); + + names.Add("Maria"); + + names.Add("Bill"); + + names.Remove("Ana"); + + foreach (var name in names) + + { + Console.WriteLine($"Hello {name.ToUpper()}!"); + } + + ``` + + + さらに 2 つの名前をリストの末尾に追加しました。 また、1 つを削除しました。 + + + を使用すると、**インデックス**でも個々の項目を参照できます。 `[` と `]` のトークンを使用して項目にアクセスします。 既に記述したコードの下に、次のコードを追加して試してみます。 + + + ```csharp + + Console.WriteLine($"My name is {names[0]}."); + + Console.WriteLine($"I've added {names[2]} and {names[3]} to the list."); + + ``` + + + リストの末尾を越えてアクセスすることはできません。 プロパティを使用すれば、リストの長さを確認できます。 次のコードを追加して試してみます。 + + + ```csharp + + Console.WriteLine($"The list has {names.Count} people in it"); + + ``` + + + もう一度 **[実行]** をクリックして結果を確認します。 C# ではインデックスは 0 から始まるため、有効なインデックスの最大値はリスト内の項目の数より 1 小さくなります。 + + + > [!NOTE] + + > このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。 +- title: リストを検索して並び替える durationInMinutes: 5 - content: "サンプルでは比較的小さいリストを使用していますが、ご利用のアプリケーションでは、より多くの (場合によっては何千もの) 要素が含まれるリストを作成することもよくあるかもしれません。 そうした大規模なコレクションの中から要素を見つけるには、別々の項目をリストで検索する必要があります。 メソッドは項目を検索し、その項目のインデックスを返します。 これを試して動作を確認してください。 これまでに記述したコードの下に、次のコードを追加します。\n\n```csharp\nvar index = names.IndexOf(\"Felipe\");\nif (index != -1)\n Console.WriteLine($\"The name {names[index]} is at index {index}\");\n\nvar notFound = names.IndexOf(\"Not Found\");\n Console.WriteLine($\"When an item is not found, IndexOf returns {notFound}\");\n```\n\nリストに項目があるかどうかわからないこともあるため、常に によって返されるインデックスをチェックする必要があります。 それが -1 だった場合は、項目が見つからなかったことを意味します。\n\n同じように、リスト内の項目を並び替えできます。 メソッドは、リスト内のすべての項目を正規順序 (文字列の場合はアルファベット順) で並び替えます。 次のコードを追加し、もう一度実行します。\n\n```csharp\nnames.Sort();\nforeach (var name in names)\n{\n Console.WriteLine($\"Hello {name.ToUpper()}!\");\n}\n```\n\n> [!NOTE]\n> このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。\n" -- title: "その他の型のリスト" + content: > + サンプルでは比較的小さいリストを使用していますが、ご利用のアプリケーションでは、より多くの (場合によっては何千もの) 要素が含まれるリストを作成することもよくあるかもしれません。 そうした大規模なコレクションの中から要素を見つけるには、別々の項目をリストで検索する必要があります。 メソッドは項目を検索し、その項目のインデックスを返します。 これを試して動作を確認してください。 これまでに記述したコードの下に、次のコードを追加します。 + + + ```csharp + + var index = names.IndexOf("Felipe"); + + if (index != -1) + Console.WriteLine($"The name {names[index]} is at index {index}"); + + var notFound = names.IndexOf("Not Found"); + Console.WriteLine($"When an item is not found, IndexOf returns {notFound}"); + ``` + + + リストに項目があるかどうかわからないこともあるため、常に によって返されるインデックスをチェックする必要があります。 それが -1 だった場合は、項目が見つからなかったことを意味します。 + + + 同じように、リスト内の項目を並び替えできます。 メソッドは、リスト内のすべての項目を正規順序 (文字列の場合はアルファベット順) で並び替えます。 次のコードを追加し、もう一度実行します。 + + + ```csharp + + names.Sort(); + + foreach (var name in names) + + { + Console.WriteLine($"Hello {name.ToUpper()}!"); + } + + ``` + + + > [!NOTE] + + > このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。 +- title: その他の型のリスト durationInMinutes: 5 - content: "ここまでは、リスト内で `string` 型を使用してきました。 別の型を使用して を作成してみましょう。 数値のセットを作成します。 これまでに記述したコードを削除し、次のコードに置き換えます。\n\n```csharp\nvar fibonacciNumbers = new List {1, 1};\n```\n\nこれにより整数のリストが作成され、最初の 2 つの整数が値 1 に設定されます。 これらは、数列の 1 つである*フィボナッチ数列*の最初の 2 つの値です。 次のフィボナッチ数はそれぞれ、その直前の 2 つの数値の合計を取得することによって得られます。 このコードを追加します。\n\n```csharp\nvar previous = fibonacciNumbers[fibonacciNumbers.Count - 1];\nvar previous2 = fibonacciNumbers[fibonacciNumbers.Count - 2];\n\nfibonacciNumbers.Add(previous + previous2);\n\nforeach(var item in fibonacciNumbers)\n Console.WriteLine(item);\n```\n\n**[実行]** をクリックして結果を確認します。\n\n> [!NOTE]\n> このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。\n" -- title: "課題" + content: > + ここまでは、リスト内で `string` 型を使用してきました。 別の型を使用して を作成してみましょう。 数値のセットを作成します。 これまでに記述したコードを削除し、次のコードに置き換えます。 + + + ```csharp + + var fibonacciNumbers = new List {1, 1}; + + ``` + + + これにより整数のリストが作成され、最初の 2 つの整数が値 1 に設定されます。 これらは、数列の 1 つである*フィボナッチ数列*の最初の 2 つの値です。 次のフィボナッチ数はそれぞれ、その直前の 2 つの数値の合計を取得することによって得られます。 このコードを追加します。 + + + ```csharp + + var previous = fibonacciNumbers[fibonacciNumbers.Count - 1]; + + var previous2 = fibonacciNumbers[fibonacciNumbers.Count - 2]; + + + fibonacciNumbers.Add(previous + previous2); + + + foreach(var item in fibonacciNumbers) + Console.WriteLine(item); + ``` + + + **[実行]** をクリックして結果を確認します。 + + + > [!NOTE] + + > このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。 +- title: 課題 durationInMinutes: 10 - content: "このレッスンと以前のレッスンの中から、いくつかの概念を理解できているかどうかを確認してみましょう。 ここまでフィボナッチ数を使用して作成してきたコードを使ってください。 シーケンスの最初の 20 個の数を生成するコードを記述してみましょう。 (ヒント: フィボナッチ数の 20 番目の数は 6765 です。)\n\n> [!NOTE]\n> このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。\n" -- title: "課題完了" + content: > + このレッスンと以前のレッスンの中から、いくつかの概念を理解できているかどうかを確認してみましょう。 ここまでフィボナッチ数を使用して作成してきたコードを使ってください。 シーケンスの最初の 20 個の数を生成するコードを記述してみましょう。 (ヒント: フィボナッチ数の 20 番目の数は 6765 です。) + + + > [!NOTE] + + > このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。 +- title: 課題完了 durationInMinutes: 3 content: "コードは次のようになりましたか? \n\n```csharp\nvar fibonacciNumbers = new List {1, 1};\n\nwhile (fibonacciNumbers.Count < 20)\n{\n var previous = fibonacciNumbers[fibonacciNumbers.Count - 1];\n var previous2 = fibonacciNumbers[fibonacciNumbers.Count - 2];\n \n fibonacciNumbers.Add(previous + previous2);\n}\nforeach(var item in fibonacciNumbers)\n Console.WriteLine(item);\n```\n\nループの繰り返しごとに、リストの最後の 2 つの整数を取得して合計し、その値をリストに追加しています。 このループは、20 個の項目がリストに追加されるまで繰り返されます。\n\n> [!NOTE]\n> このオンライン コーディング体験はプレビュー モードです。 問題が生じた場合は、[dotnet/try リポジトリ](https://github.com/dotnet/try/issues)でその問題をお知らせください。\n" -- content: "リストのクイックスタートはこれで終了です。 このクイックスタートは、最後の対話型クイックスタートです。 これまでのクイック スタートを、ご自身の開発環境でも使い続けることができます。 [ローカル開発](local-environment.md)の基本を学習してから、クイックスタートを選択してください。 これと同じ演習を試すことも、次のクイックスタートに直接移動することも、再度「[C# の数値](numbers-in-csharp-local.md)」クイックスタートから始めることもできます。\n\n`List` 型の使用方法の詳細については、[.NET ガイド](../../standard/index.md)の[コレクション](../../standard/collections/index.md)に関するトピックで学習できます。 その他の多くのコレクション型についても学習できます。\0" +- content: >- + リストのクイックスタートはこれで終了です。 このクイックスタートは、最後の対話型クイックスタートです。 これまでのクイック スタートを、ご自身の開発環境でも使い続けることができます。 [ローカル開発](local-environment.md)の基本を学習してから、クイックスタートを選択してください。 これと同じ演習を試すことも、次のクイックスタートに直接移動することも、再度「[C# の数値](numbers-in-csharp-local.md)」クイックスタートから始めることもできます。 + + + `List` 型の使用方法の詳細については、[.NET ガイド](../../standard/index.md)の[コレクション](../../standard/collections/index.md)に関するトピックで学習できます。 その他の多くのコレクション型についても学習できます。 diff --git a/docs/csharp/reference-semantics-with-value-types.md b/docs/csharp/reference-semantics-with-value-types.md index 172dfea81e5..b04f2eb0df9 100644 --- a/docs/csharp/reference-semantics-with-value-types.md +++ b/docs/csharp/reference-semantics-with-value-types.md @@ -9,18 +9,18 @@ ms.prod: .net ms.technology: devlang-csharp ms.devlang: csharp ms.custom: mvc -ms.openlocfilehash: 8a0cfe83200d50eefa9b01ab51591a5fe0703ec0 -ms.sourcegitcommit: c883637b41ee028786edceece4fa872939d2e64c +ms.openlocfilehash: 778897dc92f8a94178ebbbed7704c0dfe2397729 +ms.sourcegitcommit: 935d5267c44f9bce801468ef95f44572f1417e8c ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 03/23/2018 +ms.lasthandoff: 03/28/2018 --- # 値の型による参照セマンティクス 値の型を利用する利点は、多くの場合にヒープ割り当てが回避されることにあります。 -それに付随する欠点が、値でコピーされるということです。 このトレードオフは、大量のデータを操作するアルゴリズムの最適化を難しくします。 C# 7.2 の新しい言語機能は、値の型による参照渡しセマンティクスを可能にするメカニズムを提供します。 これらの機能を賢く使えば、割り当てとコピー操作の両方を最小限に抑えることができます。 この記事では、これらの新しい機能について説明します。 +欠点は、値でコピーされるということです。 このトレードオフは、大量のデータを操作するアルゴリズムの最適化を難しくします。 C# 7.2 の新しい言語機能は、値の型による参照渡しセマンティクスを可能にするメカニズムを提供します。 これらの機能を賢く使って、割り当てとコピー操作の両方を最小限に抑えます。 この記事では、これらの新しい機能について説明します。 -この記事にあるサンプル コードの多くは、C# 7.2 で追加された機能を示すものです。 そのような機能を使用するには、プロジェクトで C# 7.2 以降を使用するようにプロジェクトを構成する必要があります。 Visual Studio を使用してそれを選択できます。 プロジェクトごとに、メニューから **[プロジェクト]** を選択し、次に **[プロパティ]** を選択します。 **[ビルド]** タブを選択してから **[詳細設定]** をクリックします。 そこから、言語バージョンを構成できます。 "7.2" または "latest" を選択します。 あるいは、*csproj* ファイルを編集し、次のノードを追加できます。 +この記事にあるサンプル コードの多くは、C# 7.2 で追加された機能を示すものです。 そのような機能を使用するには、C# 7.2 以降を使用するようにプロジェクトを構成する必要があります。 Visual Studio を使用してそれを選択できます。 プロジェクトごとに、メニューから **[プロジェクト]** を選択し、次に **[プロパティ]** を選択します。 **[ビルド]** タブを選択してから **[詳細設定]** をクリックします。 そこから、言語バージョンを構成します。 "7.2" または "latest" を選択します。 あるいは、*csproj* ファイルを編集し、次のノードを追加できます。 ```XML @@ -30,17 +30,17 @@ ms.lasthandoff: 03/23/2018 値には "7.2" または "latest" を使用できます。 -## `in` パラメーターを指定する +## 引数の読み取り専用参照渡し -C# 7.2 では、参照で引数を渡すメソッドを記述するときに既存の `ref` キーワードと `out` キーワードを補完する `in` キーワードが追加されています。 `in` キーワードは、参照でパラメーターを渡していること、呼び出されたメソッドはそれに渡された値を変更しないことを指定します。 +C# 7.2 では、引数を参照渡しするために既存の `ref` キーワードと `out` キーワードを補完する `in` キーワードが追加されています。 `in` キーワードは、引数を参照で渡すことを指定しますが、呼び出されたメソッドは値を変更しません。 -この追加によって、設計の意図を表すためのボキャブラリが完全に与えられます。 次の修飾子のいずれも指定しないのであれば、呼び出されたメソッドに渡されるとき、値の型がコピーされます。 これらの修飾子のいずれも、値の型が参照で渡され、コピーが回避されます。 修飾子はそれぞれ、異なる意図を表します。 +この追加によって、設計の意図を表すためのボキャブラリが完全に与えられます。 メソッド シグネチャで次の修飾子のいずれも指定しないのであれば、呼び出されたメソッドに渡されるとき、値の型がコピーされます。 これらの修飾子のいずれも、値の型が参照で渡され、コピーが回避されます。 修飾子はそれぞれ、異なる意図を表します。 - `out`: このメソッドは、このパラメーターとして使用される引数の値を設定します。 - `ref`: このメソッドは、このパラメーターとして使用される引数の値を設定することがあります。 - `in`: このメソッドは、このパラメーターとして使用される引数の値を変更しません。 -`in` 修飾子を追加し、参照で引数を渡すとき、不必要なコピーを回避するために、設計の意図が参照で引数を渡すことであることを宣言します。 その引数として使用されるオブジェクトの変更は意図しません。 次のコードは、3D 空間の 2 点間の距離を計算するメソッドの例です。 +`in` 修飾子を追加し、参照で引数を渡し、参照で引数を渡して不必要なコピーを回避する設計の意図を宣言します。 その引数として使用されるオブジェクトの変更は意図しません。 次のコードは、3D 空間の 2 点間の距離を計算するメソッドの例です。 [!code-csharp[InArgument](../../samples/csharp/reference-semantics/Program.cs#InArgument "Specifying an In argument")] @@ -54,18 +54,32 @@ C# 7.2 では、参照で引数を渡すメソッドを記述するときに既 [!code-csharp[UseInArgument](../../samples/csharp/reference-semantics/Program.cs#UseInArgument "Specifying an In argument")] -コンパイラにおいて、`in` 引数の読み取り専用の性質を強制する方法がいくつかあります。 まず、呼び出されたメソッドは `in` パラメーターに直接割り当てできません。 `in` パラメーターのどのフィールドにも直接割り当てできません。 また、`ref` または `out` 修飾子を要求するメソッドに `in` パラメーターを渡すことができません。 -コンパイラは、`in` 引数が読み取り専用変数であることを強制します。 値渡しセマンティクスを使用するあらゆるインスタンス メソッドを呼び出すことができます。 それらのインスタンスで、`in` パラメーターのコピーが作成されます。 コンパイラは `in` パラメーターに一時的な変数を作成できるため、`in` パラメーターに既定値を指定することもできます。 次のコードでは、2 つ目の点の既定値として原点 (点 0,0) を指定するためにそれが利用されています。 +コンパイラにおいて、`in` 引数の読み取り専用の性質を強制する方法がいくつかあります。 まず、呼び出されたメソッドは `in` パラメーターに直接割り当てできません。 値が `struct` 型の場合、`in` パラメーターのどのフィールドにも直接割り当てできません。 また、`ref` または `out` 修飾子を使用するメソッドに `in` パラメーターを渡すことができません。 +これらの規則は、`in` パラメーターのすべてのフィールドに適用されます (ただし、フィールドが `struct` 型でパラメーターも `struct` 型の場合)。 実際、これらの規則は、メンバー アクセスのすべてのレベルで型が `structs` であれば、複数層のメンバー アクセスに適用されます。 コンパイラは `struct` 型を `in` 引数として渡し、その `struct` メンバーが他のメソッドへの引数として使用される場合は読み取り専用変数になるよう強制します。 + +`in` パラメーターを使用することで、コピーを作成することの潜在的なパフォーマンス コストを回避できます。 メソッド呼び出しのセマンティクスは変更されません。 そのため、呼び出しサイトで `in` 修飾子を指定する必要はありません。 ただし、呼び出しサイトで `in` 修飾子を省略すると、次の理由で、引数のコピーを作成することが許可されていることがコンパイラに通知されます。 + +- 暗黙的な変換はあるが、引数の型からパラメーターの型への ID 変換がない。 +- 引数は式だが、既知のストレージ変数がない。 +- `in` の有無によって異なるオーバーロードが存在する。 この場合は、値渡しオーバーロードの方がより適しています。 + +これらの規則は、既存のコードを読み取り専用の参照引数を使用するように更新するときに役立ちます。 呼び出されるメソッド内で、値渡しパラメーターを使用する任意のインスタンス メソッドを呼び出すことができます。 それらのインスタンスで、`in` パラメーターのコピーが作成されます。 コンパイラは `in` パラメーターに一時的な変数を作成できるため、`in` パラメーターに既定値を指定することもできます。 次のコードでは、2 つ目の点の既定値として原点 (点 0,0) を指定します。 [!code-csharp[InArgumentDefault](../../samples/csharp/reference-semantics/Program.cs#InArgumentDefault "Specifying defaults for an in parameter")] -`in` パラメーターの指定は、参照型または組み込み数値と併用することもできます。 ただし、いずれの場合も、利点があるとしてもわずかです。 +コンパイラに読み取り専用引数の参照渡しを強制するには、次のコードに示すように、呼び出しサイトで引数に `in` 修飾子を指定します。 + +[!code-csharp[UseInArgument](../../samples/csharp/reference-semantics/Program.cs#ExplicitInArgument "Specifying an In argument")] + +この動作により、パフォーマンスの向上が可能な大規模なコードベースで、徐々に `in` パラメーターを採用しやすくなります。 最初に、メソッド シグネチャに `in` 修飾子を追加します。 その後、呼び出しサイトで `in` 修飾子を追加し、`readonly struct` 型を作成して、コンパイラに他の場所で `in` パラメーターの防御用コピーを作成しないようにすることができます。 + +`in` パラメーターの指定は、参照型または数値と併用することもできます。 ただし、いずれの場合も、利点があるとしてもわずかです。 ## `ref readonly` 戻り値 参照で値の型を返すが、呼び出し元にはその値の変更を禁止する場合もあります。 `ref readonly` 修飾子を使用し、その設計の意図を表します。 既存のデータへの参照を返すが、変更を許可しないことを閲覧者に通知します。 -コンパイラは、呼び出し元は参照を変更できないことを強制します。 値に直接割り当てようとすると、コンパイル時エラーが生成されます。 ただし、メンバー メソッドによって構造体の状態が変更されるか、コンパイラは認識できません。 +コンパイラは、呼び出し元は参照を変更できないことを強制します。 値を直接割り当てようとすると、コンパイル時エラーが生成されます。 ただし、メンバー メソッドによって構造体の状態が変更されるか、コンパイラは認識できません。 オブジェクトが変更されないように、コンパイラはコピーを作成し、そのコピーを利用してメンバー参照を呼び出します。 変更されるとすれば、その防御用のコピーに行われます。 `Point3D` を使用するライブラリは、多くの場合、コード全体で原点を使用する可能性が高いです。 インスタンスごとに、スタックに新しいオブジェクトが作成されます。 定数を作成し、それを参照で返すことには利点がある場合があります。 ただし、内部の記憶域に参照を返す場合、参照される記憶域を呼び出し元が変更できないように強制することが勧められます。 次のコードでは、原点を指定する `Point3D` に `readonly ref` を返す読み取り専用プロパティが定義されます。 @@ -95,7 +109,7 @@ C# 7.2 では、参照で引数を渡すメソッドを記述するときに既 ## `ref struct` 型 -関連するもう 1 つの言語機能は、スタック割り当てにする必要がある値型を宣言する機能です。 言い換えると、このような型を別のクラスのメンバーとしてヒープ上で作成することはできません。 この機能の第一の動機は と関連構造でした。 には、そのメンバーの 1 つとしてマネージ ポインターが含まれます。他方はスパンの長さです。 実際の実装は少し異なります。C# の場合、安全ではないコンテキストの外では、マネージ メモリのポインターがサポートされていないためです。 ポインターや長さを変更する記述はアトミックではありません。 つまり、単一のスタック フレームに制約されない場合、 は範囲外エラーか、その他のタイプ セーフ違反になります。 また、GC ヒープ上にマネージ ポインターを置くと、通常、JIT 時にクラッシュします。 +関連するもう 1 つの言語機能は、スタック割り当てにする必要がある値型を宣言する機能です。 言い換えると、このような型を別のクラスのメンバーとしてヒープ上で作成することはできません。 この機能の第一の動機は と関連構造でした。 には、そのメンバーの 1 つとしてマネージ ポインターが含まれます。他方はスパンの長さです。 実装は少し異なります。C# の場合、安全ではないコンテキストの外では、マネージ メモリのポインターがサポートされていないためです。 ポインターや長さを変更する記述はアトミックではありません。 つまり、単一のスタック フレームに制約されない場合、 は範囲外エラーか、その他のタイプ セーフ違反になります。 また、GC ヒープ上にマネージ ポインターを置くと、通常、JIT 時にクラッシュします。 [`stackalloc`](language-reference/keywords/stackalloc.md) で作成したメモリを使用するとき、あるいは相互運用 API からメモリを使用するとき、同様の要件が求められる場合があります。 そのようなニーズには独自の `ref struct` 型を定義できます。 この記事の例では `Span` を利用し、わかりやすくしています。 @@ -123,7 +137,7 @@ readonly ref struct ReadOnlyRefPoint2D public int X { get; } public int Y { get; } - ReadOnlyRefPoint2D(int x, int y) => (X, Y) = (x, y); + public ReadOnlyRefPoint2D(int x, int y) => (X, Y) = (x, y); } ``` diff --git a/docs/csharp/roslyn-sdk/get-started/syntax-analysis.md b/docs/csharp/roslyn-sdk/get-started/syntax-analysis.md index 3dfe5337e5a..5957d9e9971 100644 --- a/docs/csharp/roslyn-sdk/get-started/syntax-analysis.md +++ b/docs/csharp/roslyn-sdk/get-started/syntax-analysis.md @@ -1,6 +1,6 @@ --- -title: "構文解析の概要 (Roslyn API)" -description: "構文ツリーの走査、クエリおよびウォークに関する概要。" +title: 構文解析の概要 (Roslyn API) +description: 構文ツリーの走査、クエリおよびウォークに関する概要。 author: billwagner ms.author: wiwagn ms.date: 02/05/2018 @@ -8,11 +8,11 @@ ms.topic: conceptual ms.prod: .net ms.technology: devlang-csharp ms.custom: mvc -ms.openlocfilehash: 52f66782086af651517d54105fea6f5533ea05a2 -ms.sourcegitcommit: d3cfda0943364aaf6ccd574f55f584576c8a4fee +ms.openlocfilehash: 90d6542122dd8c579c63f5f003441ce63a7ca5e9 +ms.sourcegitcommit: 935d5267c44f9bce801468ef95f44572f1417e8c ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 03/08/2018 +ms.lasthandoff: 03/28/2018 --- # 構文解析の概要 @@ -43,6 +43,10 @@ Syntax API では、コンパイル ユニットを表すルートを含むツ その簡単な説明では、Syntax API を使用してアクセスできる情報の種類の概要を示します。 Syntax API は、C# の使い慣れたコード コンストラクトを記述する正式な API にすぎません。 完全な機能には、改行、空白、インデントを含め、コードの書式設定方法に関する情報が含まれます。 この情報を使用して、人間のプログラマまたはコンパイラによって書き込まれ、読み取られるコードを完全に表すことができます。 この構造を使用することで、深い意味のあるレベルのソース コードと対話することができます。 テキスト文字列はもう存在しませんが、C# プログラムの構造を表すデータはあります。 +まず **.NET Compiler Platform SDK** をインストールする必要があります。 + +[!INCLUDE[interactive-note](~/includes/roslyn-installation.md)] + ## 構文ツリーについて C# コードの構造の分析には Syntax API を使用します。 **Syntax API** では、パーサー、構文ツリー、および構文ツリーを分析して構築するためのユーティリティを公開します。 これを使用して、特定の構文要素のコードの検索またはプログラムのコードの読み取りを行います。 @@ -68,9 +72,6 @@ Syntax API を使用してコード ファイルで何でも見つけること 2 つの方法で構文ツリー内のノードを調べることができます。 ツリーを走査して、各ノードを調べることができます。あるいは、特定の要素やノードに対してクエリを実行することができます。 -> [!IMPORTANT] -> 次のサンプルでは、Visual Studio 2017 の一部としてインストールされる **.NET Compiler Platform SDK** が必要です。 **Visual Studio 拡張機能の開発**ワークロードの下にリストされている最後の省略可能なコンポーネントとして、.NET Compiler SDK があります。 テンプレートは、このコンポーネントなしではインストールされません。 - ### 手動による走査 このサンプルの完成したコードは、[GitHub のリポジトリ](https://github.com/dotnet/docs/tree/master/samples/csharp/roslyn-sdk/SyntaxQuickStart)で確認できます。 diff --git a/docs/csharp/roslyn-sdk/index.md b/docs/csharp/roslyn-sdk/index.md index e1cfae09218..5ec404a235a 100644 --- a/docs/csharp/roslyn-sdk/index.md +++ b/docs/csharp/roslyn-sdk/index.md @@ -1,7 +1,7 @@ --- title: .NET Compiler Platform SDK (Roslyn API) -description: ".NET Compiler Platform SDK (Roslyn API とも呼ばれます) を使用して、.NET コードを理解し、エラーを見つけて、そのエラーを修正する方法について説明します。" -keywords: "Roslyn、アナライザー、コード修正" +description: .NET Compiler Platform SDK (Roslyn API とも呼ばれます) を使用して、.NET コードを理解し、エラーを見つけて、そのエラーを修正する方法について説明します。 +keywords: Roslyn、アナライザー、コード修正 author: billwagner ms.author: wiwagn ms.date: 10/10/2017 @@ -9,11 +9,11 @@ ms.topic: conceptual ms.prod: .net ms.devlang: devlang-csharp ms.custom: mvc -ms.openlocfilehash: 260efa9810e6587224bddb196b4a746d15f785e2 -ms.sourcegitcommit: 3fd4e718d1bac9769fe0c1dd08ca1b2323ae272b +ms.openlocfilehash: c627903743f8867e05bac9ce835659fc7270b94e +ms.sourcegitcommit: 935d5267c44f9bce801468ef95f44572f1417e8c ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 01/11/2018 +ms.lasthandoff: 03/28/2018 --- # .NET Compiler Platform SDK @@ -67,10 +67,15 @@ NuGet 上の自分のライブラリを使用して、アナライザーとコ .NET Compiler Platform SDK の概念の詳細については、次の 4 つのトピックを参照してください。 + - [構文ビジュアライザーでコードを調べる](syntax-visualizer.md) - [コンパイラ API モデルを理解する](compiler-api-model.md) - [構文の使用](work-with-syntax.md) - [セマンティクスの使用](work-with-semantics.md) - [ワークスペースの使用](work-with-workspace.md) + +まず **.NET Compiler Platform SDK** をインストールする必要があります。 + +[!INCLUDE[interactive-note](~/includes/roslyn-installation.md)] ## [.NET Compiler Platform SDK (Roslyn API)](csharp/roslyn-sdk/) ## [C# プログラミング ガイド](csharp/programming-guide/) diff --git a/docs/visual-basic/getting-started/whats-new.md b/docs/visual-basic/getting-started/whats-new.md index 65f74f06fa8..0eb00939c00 100644 --- a/docs/visual-basic/getting-started/whats-new.md +++ b/docs/visual-basic/getting-started/whats-new.md @@ -12,14 +12,14 @@ helpviewer_keywords: - what's new [Visual Basic] - Visual Basic, what's new ms.assetid: d7e97396-7f42-4873-a81c-4ebcc4b6ca02 -caps.latest.revision: '' +caps.latest.revision: 145 author: rpetrusha ms.author: ronpet -ms.openlocfilehash: c0452a5dde3a266f5d50f69016eac8144bab9ba6 -ms.sourcegitcommit: c883637b41ee028786edceece4fa872939d2e64c -ms.translationtype: MT +ms.openlocfilehash: 4641041657e99fa64bf1b7eb5317a43660ac7e2b +ms.sourcegitcommit: 935d5267c44f9bce801468ef95f44572f1417e8c +ms.translationtype: HT ms.contentlocale: ja-JP -ms.lasthandoff: 03/23/2018 +ms.lasthandoff: 03/28/2018 --- # Visual Basic の新機能 @@ -81,7 +81,7 @@ Visual Basic 2017 では、桁区切り記号としてアンダースコア文 ```vb Dim number As Integer = &H_C305_F860 ``` -先行する区切り記号としてアンダー スコア文字を使用するには、Visual Basic プロジェクトに次の要素を追加する必要があります (\*.vbproj) ファイル。 +アンダースコア文字を先頭の区切り記号として使用するには、以下の要素を Visual Basic プロジェクト (\*.vbproj) ファイルに追加する必要があります。 ```xml @@ -91,7 +91,7 @@ Dim number As Integer = &H_C305_F860 ## Visual Basic 15.3 -[**名前付きの組の推論**](../programming-guide/language-features/data-types/tuples.md#inferred-tuple-element-names) +[**名前付きタプルの推論**](../programming-guide/language-features/data-types/tuples.md#inferred-tuple-element-names) 変数からタプル要素の値を割り当てる場合、Visual Basic は対応する変数名からタプル要素の名前を推論します。ユーザーがタプル要素に明示的に名前を付ける必要はありません。 以下の例では、推論を使用して、`state`、`stateName`、`capital` という 3 つの名前付き要素のタプルを作成します。 @@ -99,11 +99,11 @@ Dim number As Integer = &H_C305_F860 **追加のコンパイラ スイッチ** -では、コマンド ライン コンパイラ、Visual Basic、 [ **- refout** ](../reference/command-line-compiler/refout-compiler-option.md)と[ **- refonly** ](../reference/command-line-compiler/refonly-compiler-option.md)の出力を制御するコンパイラ オプション参照アセンブリ。 **-refout**参照アセンブリの出力ディレクトリを定義および**- refonly**参照アセンブリだけがコンパイルで出力することを指定します。 +Visual Basic コマンド ライン コンパイラで、参照アセンブリの出力を制御する [**-refout**](../reference/command-line-compiler/refout-compiler-option.md) と [**-refonly**](../reference/command-line-compiler/refonly-compiler-option.md) のコンパイラ オプションがサポートされるようになりました。 **-refout** は、参照アセンブリの出力ディレクトリを定義し、**-refonly** はコンパイルで参照アセンブリだけが出力されるように指定します。 ## Visual Basic 2017 -[**組**](../programming-guide/language-features/data-types/tuples.md) +[**タプル**](../programming-guide/language-features/data-types/tuples.md) タプルは軽量のデータ構造であり、最も一般的には、1 回のメソッド呼び出しで複数の値を返すために利用されます。 通常、1 つのメソッドから複数の値を返すには、次のいずれかを行う必要があります。 @@ -154,7 +154,7 @@ C# 7 以降の C# は参照戻り値に対応しています。 つまり、メ [nameof](../../csharp/language-reference/keywords/nameof.md) 文字列をハードコーディングせずにエラー メッセージで使用するための型またはメンバーの非修飾文字列名を取得できます。 これにより、リファクタリングするときにコードは正しい状態を保てます。 この機能は、またモデル-ビュー-コントローラーの MVC のリンクをフックし、プロパティ変更イベントを発生させるためにも役立ちます。 -[文字列補間](../../csharp/language-reference/keywords/interpolated-strings.md) +[文字列補間](../../visual-basic/programming-guide/language-features/strings/interpolated-strings.md) 文字列補間式を使用して、文字列を構築することができます。 補間文字列式は、式が含まれているテンプレート文字列のように見えます。 引数に関しては、補間文字列は[複合書式指定](../../standard/base-types/composite-format.md)より理解しやすくなっています。 [Null 条件メンバー アクセスとインデックス作成](../../csharp/language-reference/operators/null-conditional-operators.md) diff --git a/includes/migration-guide/retargeting/introduction.md b/includes/migration-guide/retargeting/introduction.md new file mode 100644 index 00000000000..8e8a889b7a3 --- /dev/null +++ b/includes/migration-guide/retargeting/introduction.md @@ -0,0 +1,16 @@ +## はじめに +変更の再ターゲットは、別の .NET Framework をターゲットとして再コンパイルされるアプリに影響します。 Windows コモン コントロールには以下が含まれます。 + +* デザイン時環境の変更。 たとえば、ビルド ツールは以前は出力しなかったときに警告を出力する場合があります。 + +* ランタイム時環境の変更。 これらは、特に再ターゲットされた .NET Framework をターゲットとするアプリにのみ影響します。 .NET Framework の以前のバージョンを対象とするアプリは、それらのバージョンで実行されているときは以前のように動作します。 + +変更の再ターゲットについて説明するトピックでは、次に示すように、予想される影響ごとに個々の項目を分類しました。 + +**メジャー** これは、多数のアプリに影響するか、またはコードに重大な変更を加える必要のある重要な変更点です。 + +**マイナー** これは、少数のアプリに影響するか、またはコードにわずかな変更を加える必要のある変更点です。 + +**エッジ ケース** これは、一般的ではない特定のシナリオでアプリに影響する変更点です。 + +**透過的** これはアプリの開発者やユーザーには大きな影響を及ぼさない変更です。 アプリはこの変更のために変更を加える必要はありません。 diff --git a/includes/migration-guide/retargeting/versionselector.md b/includes/migration-guide/retargeting/versionselector.md new file mode 100644 index 00000000000..ca9f46cb54b --- /dev/null +++ b/includes/migration-guide/retargeting/versionselector.md @@ -0,0 +1,37 @@ +> [!div class="op_multi_selector" title1="From .NET Framework Version" title2="To .NET Framework Version"] +> - [(4.0 | 4.5)](~/docs/framework/migration-guide/retargeting/4.0-4.5.md) +> - [(4.0 | 4.5.1)](~/docs/framework/migration-guide/retargeting/4.0-4.5.1.md) +> - [(4.0 | 4.5.2)](~/docs/framework/migration-guide/retargeting/4.0-4.5.2.md) +> - [(4.0 | 4.6)](~/docs/framework/migration-guide/retargeting/4.0-4.6.md) +> - [(4.0 | 4.6.1)](~/docs/framework/migration-guide/retargeting/4.0-4.6.1.md) +> - [(4.0 | 4.6.2)](~/docs/framework/migration-guide/retargeting/4.0-4.6.2.md) +> - [(4.0 | 4.7)](~/docs/framework/migration-guide/retargeting/4.0-4.7.md) +> - [(4.0 | 4.7.1)](~/docs/framework/migration-guide/retargeting/4.0-4.7.1.md) +> - [(4.5 | 4.5.1)](~/docs/framework/migration-guide/retargeting/4.5-4.5.1.md) +> - [(4.5 | 4.5.2)](~/docs/framework/migration-guide/retargeting/4.5-4.5.2.md) +> - [(4.5 | 4.6)](~/docs/framework/migration-guide/retargeting/4.5-4.6.md) +> - [(4.5 | 4.6.1)](~/docs/framework/migration-guide/retargeting/4.5-4.6.1.md) +> - [(4.5 | 4.6.2)](~/docs/framework/migration-guide/retargeting/4.5-4.6.2.md) +> - [(4.5 | 4.7)](~/docs/framework/migration-guide/retargeting/4.5-4.7.md) +> - [(4.5 | 4.7.1)](~/docs/framework/migration-guide/retargeting/4.5-4.7.1.md) +> - [(4.5.1 | 4.5.2)](~/docs/framework/migration-guide/retargeting/4.5.1-4.5.2.md) +> - [(4.5.1 | 4.6)](~/docs/framework/migration-guide/retargeting/4.5.1-4.6.md) +> - [(4.5.1 | 4.6.1)](~/docs/framework/migration-guide/retargeting/4.5.1-4.6.1.md) +> - [(4.5.1 | 4.6.2)](~/docs/framework/migration-guide/retargeting/4.5.1-4.6.2.md) +> - [(4.5.1 | 4.7)](~/docs/framework/migration-guide/retargeting/4.5.1-4.7.md) +> - [(4.5.1 | 4.7.1)](~/docs/framework/migration-guide/retargeting/4.5.1-4.7.1.md) +> - [(4.5.2 | 4.6)](~/docs/framework/migration-guide/retargeting/4.5.2-4.6.md) +> - [(4.5.2 | 4.6.1)](~/docs/framework/migration-guide/retargeting/4.5.2-4.6.1.md) +> - [(4.5.2 | 4.6.2)](~/docs/framework/migration-guide/retargeting/4.5.2-4.6.2.md) +> - [(4.5.2 | 4.7)](~/docs/framework/migration-guide/retargeting/4.5.2-4.7.md) +> - [(4.5.2 | 4.7.1)](~/docs/framework/migration-guide/retargeting/4.5.2-4.7.1.md) +> - [(4.6 | 4.6.1)](~/docs/framework/migration-guide/retargeting/4.6-4.6.1.md) +> - [(4.6 | 4.6.2)](~/docs/framework/migration-guide/retargeting/4.6-4.6.2.md) +> - [(4.6 | 4.7)](~/docs/framework/migration-guide/retargeting/4.6-4.7.md) +> - [(4.6 | 4.7.1)](~/docs/framework/migration-guide/retargeting/4.6-4.7.1.md) +> - [(4.6.1 | 4.6.2)](~/docs/framework/migration-guide/retargeting/4.6.1-4.6.2.md) +> - [(4.6.1 | 4.7)](~/docs/framework/migration-guide/retargeting/4.6.1-4.7.md) +> - [(4.6.1 | 4.7.1)](~/docs/framework/migration-guide/retargeting/4.6.1-4.7.1.md) +> - [(4.6.2 | 4.7)](~/docs/framework/migration-guide/retargeting/4.6.2-4.7.md) +> - [(4.6.2 | 4.7.1)](~/docs/framework/migration-guide/retargeting/4.6.2-4.7.1.md) +> - [(4.7 | 4.7.1)](~/docs/framework/migration-guide/retargeting/4.7-4.7.1.md) diff --git a/includes/migration-guide/runtime/introduction.md b/includes/migration-guide/runtime/introduction.md new file mode 100644 index 00000000000..1d2cdeb709c --- /dev/null +++ b/includes/migration-guide/runtime/introduction.md @@ -0,0 +1,12 @@ +## はじめに +ランタイムの変更は、コンパイルのターゲットではない .NET Framework で実行されていて、特定の機能を使用するすべてのアプリに影響します。 + +ランタイムの変更について説明するトピックでは、次に示すように、予想される影響ごとに個々の項目を分類しました。 + +**メジャー** これは、多数のアプリに影響するか、またはコードに重大な変更を加える必要のある重要な変更点です。 + +**マイナー** これは、少数のアプリに影響するか、またはコードにわずかな変更を加える必要のある変更点です。 + +**エッジ ケース** これは、一般的ではない特定のシナリオでアプリに影響する変更点です。 + +**透過的** これはアプリの開発者やユーザーには大きな影響を及ぼさない変更です。 アプリはこの変更のために変更を加える必要はありません。 diff --git a/includes/migration-guide/runtime/versionselector.md b/includes/migration-guide/runtime/versionselector.md new file mode 100644 index 00000000000..7164a449608 --- /dev/null +++ b/includes/migration-guide/runtime/versionselector.md @@ -0,0 +1,37 @@ +> [!div class="op_multi_selector" title1="From .NET Framework Version" title2="To .NET Framework Version"] +> - [(4.0 | 4.5)](~/docs/framework/migration-guide/runtime/4.0-4.5.md) +> - [(4.0 | 4.5.1)](~/docs/framework/migration-guide/runtime/4.0-4.5.1.md) +> - [(4.0 | 4.5.2)](~/docs/framework/migration-guide/runtime/4.0-4.5.2.md) +> - [(4.0 | 4.6)](~/docs/framework/migration-guide/runtime/4.0-4.6.md) +> - [(4.0 | 4.6.1)](~/docs/framework/migration-guide/runtime/4.0-4.6.1.md) +> - [(4.0 | 4.6.2)](~/docs/framework/migration-guide/runtime/4.0-4.6.2.md) +> - [(4.0 | 4.7)](~/docs/framework/migration-guide/runtime/4.0-4.7.md) +> - [(4.0 | 4.7.1)](~/docs/framework/migration-guide/runtime/4.0-4.7.1.md) +> - [(4.5 | 4.5.1)](~/docs/framework/migration-guide/runtime/4.5-4.5.1.md) +> - [(4.5 | 4.5.2)](~/docs/framework/migration-guide/runtime/4.5-4.5.2.md) +> - [(4.5 | 4.6)](~/docs/framework/migration-guide/runtime/4.5-4.6.md) +> - [(4.5 | 4.6.1)](~/docs/framework/migration-guide/runtime/4.5-4.6.1.md) +> - [(4.5 | 4.6.2)](~/docs/framework/migration-guide/runtime/4.5-4.6.2.md) +> - [(4.5 | 4.7)](~/docs/framework/migration-guide/runtime/4.5-4.7.md) +> - [(4.5 | 4.7.1)](~/docs/framework/migration-guide/runtime/4.5-4.7.1.md) +> - [(4.5.1 | 4.5.2)](~/docs/framework/migration-guide/runtime/4.5.1-4.5.2.md) +> - [(4.5.1 | 4.6)](~/docs/framework/migration-guide/runtime/4.5.1-4.6.md) +> - [(4.5.1 | 4.6.1)](~/docs/framework/migration-guide/runtime/4.5.1-4.6.1.md) +> - [(4.5.1 | 4.6.2)](~/docs/framework/migration-guide/runtime/4.5.1-4.6.2.md) +> - [(4.5.1 | 4.7)](~/docs/framework/migration-guide/runtime/4.5.1-4.7.md) +> - [(4.5.1 | 4.7.1)](~/docs/framework/migration-guide/runtime/4.5.1-4.7.1.md) +> - [(4.5.2 | 4.6)](~/docs/framework/migration-guide/runtime/4.5.2-4.6.md) +> - [(4.5.2 | 4.6.1)](~/docs/framework/migration-guide/runtime/4.5.2-4.6.1.md) +> - [(4.5.2 | 4.6.2)](~/docs/framework/migration-guide/runtime/4.5.2-4.6.2.md) +> - [(4.5.2 | 4.7)](~/docs/framework/migration-guide/runtime/4.5.2-4.7.md) +> - [(4.5.2 | 4.7.1)](~/docs/framework/migration-guide/runtime/4.5.2-4.7.1.md) +> - [(4.6 | 4.6.1)](~/docs/framework/migration-guide/runtime/4.6-4.6.1.md) +> - [(4.6 | 4.6.2)](~/docs/framework/migration-guide/runtime/4.6-4.6.2.md) +> - [(4.6 | 4.7)](~/docs/framework/migration-guide/runtime/4.6-4.7.md) +> - [(4.6 | 4.7.1)](~/docs/framework/migration-guide/runtime/4.6-4.7.1.md) +> - [(4.6.1 | 4.6.2)](~/docs/framework/migration-guide/runtime/4.6.1-4.6.2.md) +> - [(4.6.1 | 4.7)](~/docs/framework/migration-guide/runtime/4.6.1-4.7.md) +> - [(4.6.1 | 4.7.1)](~/docs/framework/migration-guide/runtime/4.6.1-4.7.1.md) +> - [(4.6.2 | 4.7)](~/docs/framework/migration-guide/runtime/4.6.2-4.7.md) +> - [(4.6.2 | 4.7.1)](~/docs/framework/migration-guide/runtime/4.6.2-4.7.1.md) +> - [(4.7 | 4.7.1)](~/docs/framework/migration-guide/runtime/4.7-4.7.1.md) diff --git a/includes/net-framework-4x-versions.md b/includes/net-framework-4x-versions.md new file mode 100644 index 00000000000..4b7c66e2574 --- /dev/null +++ b/includes/net-framework-4x-versions.md @@ -0,0 +1,9 @@ + +> [!IMPORTANT] +> .NET Framework 4 以降の .NET Framework のバージョンはすべてインプレース更新で、システム上に存在できるのはいずれか 1 つの 4.x バージョンのみです。 さらに、一部のバージョンの Windows オペレーティング システムには、特定のバージョンの .NET Framework がプレインストールされています。 これによって、次のことが起こります。 +> +> - コンピューターに新しい 4.x バージョンが既にインストールされている場合は、以前の 4.x バージョンをインストールできません。 +> - OS に特定の .NET Framework バージョンがプレインストールされている場合は、同じコンピューターに以前の 4.x バージョンをインストールすることはできません。 +> - 新しいバージョンをインストールする場合は、以前のバージョンを最初にアンインストールする必要はありません。 + + diff --git a/index.md b/index.md index 602726358e0..508ce2db5ba 100644 --- a/index.md +++ b/index.md @@ -1,7 +1,7 @@ --- layout: HubPage ms.topic: hub-page -hide_bc: '' +hide_bc: true title: .NET ドキュメント description: .NET で、C#、Visual Basic、および F# を使用して任意のプラットフォームでさまざまなアプリケーションを作成する方法を説明します。 API リファレンス、サンプル コード、チュートリアルなどを参照します。 ms.custom: updateeachrelease