C#
 Computer >> コンピューター >  >> プログラミング >> C#

C# 7.0のoutパラメーターの改善点とは?

C# 7.0では、outパラメーターの使い方が大きく改善されました。従来のバージョンでは、out変数をメソッドに渡す前に、必ず別の行で宣言しておく必要がありました。しかしC# 7.0以降では、メソッド呼び出しの引数リストの中に直接(インラインで)out変数を宣言できるようになり、コードがより簡潔で直感的になりました。

主なメリット

  • コードが短くなり、読みやすさが向上する。

  • メソッド呼び出し前に初期値の代入や事前の宣言文が不要になる。

  • 変数の宣言と使用箇所が近くなり、コードの意図が明確になる。

従来の構文(C# 6.0まで)

まずは従来の書き方を見てみましょう。Mainメソッド内で、out変数cとdを事前に宣言してからメソッドに渡しています。

サンプルコード

class Program{
   public static void AddMultiplyValues(int a, int b, out int c, out int d){
      c = a + b;
      d = a * b;
   }
   public static void Main(){
      int c;
      int d;
      AddMultiplyValues(5, 10, out c, out d);
      System.Console.WriteLine(c);
      System.Console.WriteLine(d);
      Console.ReadLine();
   }
}

実行結果

15
50

新しい構文(C# 7.0以降)

C# 7.0からは、引数リスト内で「out int c」のように型を指定しながら直接変数を宣言できます。事前の宣言文が不要になり、コード全体がスッキリしました。

サンプルコード

class Program{
   public static void AddMultiplyValues(int a, int b, out int c, out int d){
      c = a + b;
      d = a * b;
   }
   public static void Main(){
      AddMultiplyValues(5, 10, out int c, out int d);
      System.Console.WriteLine(c);
      System.Console.WriteLine(d);
      Console.ReadLine();
   }
}

実行結果

15
50

補足:varキーワードや破棄(ディスカード)も活用可能

C# 7.0のインラインout宣言では、型名の代わりにvarを使うこともできます。コンパイラが自動的に型を推論します。

AddMultiplyValues(5, 10, out var c, out var d);

さらに、戻り値が必要ないoutパラメーターについては、アンダースコア(_)を使ったディスカード(破棄)を利用すれば、不要な変数を受け取らずに済みます。

AddMultiplyValues(5, 10, out _, out int d); // 積だけを受け取りたい場合など

まとめ

C# 7.0のoutパラメーターの改善により、変数宣言をメソッド呼び出しの場所にまとめられるようになりました。これにより、コードの可読性と保守性が向上し、TryParseのような複数の値を返すメソッドをより自然に記述できるようになっています。

  1. C言語のトークンとは?6つの種類とサンプルコードでわかりやすく解説

    トークンとはトークン(token)とは、コンパイラにとって意味を持つ、プログラムを構成する最小単位のことです。コンパイラはソースコードをこの最小単位へと分割し、生成されたトークンを基にコンパイルの各段階へと処理を進めていきます。トークンの種類C言語のトークンは、主に以下の6種類に分類されます。キーワード(予約語):int、return など、言語仕様によって意味が定められた語識別子:変数名や関数名など、開発者が自由に命名できる名前定数:10、3.14 など、プログラム中で値が変わらない固定値文字列:ダブルクォート( )で囲まれた文字の並び特殊記号:{ }、( )、; など、構文を区切るための記

  2. C言語の関数の分類とは?引数と戻り値による4つのカテゴリを解説

    C言語における関数は、引数(ひきすう)の有無と戻り値(返り値)の有無という2つの観点から、以下の4つのカテゴリに分類できます。引数なし・戻り値なしの関数引数なし・戻り値ありの関数引数あり・戻り値なしの関数引数あり・戻り値ありの関数それぞれのカテゴリについて、サンプルコードと実行結果を交えながら詳しく見ていきましょう。1. 引数なし・戻り値なしの関数このタイプの関数は、呼び出し元からデータを受け取らず、計算結果も返しません。関数内で入力・処理・表示をすべて完結させるため、単純な処理に向いています。サンプルコード#include<stdio.h>main() {