pinnacle ピナクルk8 カジノ構文:クラス名を書かずに静的メソッドを呼び出すには?[C# 6.0]仮想通貨カジノパチンコパチスロ 土浦

pinnacle ピナクルk8 カジノ構文:クラス名を書かずに静的メソッドを呼び出すには?[C# 6.0]仮想通貨カジノパチンコパチスロ 土浦

ビット コイン の 価格 を 教え てk8 カジノ 「.NET TIPS」のインデックス

家庭 用 スロット 電気 代連載目次

対象:Visual Studio 2015(C# 6.0)以降

 静的メソッド(static method)や列挙型(enum)の列挙値などを記述するとき、いちいち型名を書くのが面倒だと思ったことはないだろうか? C# 6.0からは、usingディレクティブを使って簡潔に書けるようになった。本稿ではその使い方を説明する。

using staticの基本

 コードの冒頭で、「using static」に続けて静的メンバー(静的メソッドや列挙値など)を持っているクラスや列挙型などを記述する。これで、コード本体では静的メンバーだけを記述すれば済むようになる(次のコード)。

using static System.Console; // クラス// 以下の2つを使うには、Microsoft.VisualBasicへの参照がプロジェクトに必要using static Microsoft.VisualBasic.Strings; // クラスusing static Microsoft.VisualBasic.VbStrConv; // 列挙型class Program{ static void Main(string[] args) { // System.Consoleの静的メソッドを使用 Write("Hello, "); WriteLine("world!"); // ⇒ Hello, world! // Visual Basicの関数も、まるでC#の機能のように使える var s = StrConv("ゼンカク→ハンカク", Narrow); WriteLine(s); // ⇒ ゼンカク→ハンカク#if DEBUG ReadKey();#endif }}

using staticを使ったコンソールアプリの例Write/WriteLine/ReadKeyは、System.Consoleクラスの静的メソッド。StrConvは、Microsoft.VisualBasic.Stringsクラスの静的メソッド。Narrowは、Microsoft.VisualBasic.VbStrConv列挙型の列挙値である。IntelliSenseも対応

 using staticを使った場合でも、IntelliSenseは(クラス名を書かなくても)候補を提示してくれる(次の画像)。

IntelliSenseはusing staticにも対応しているIntelliSenseはusing staticにも対応している前述のコードのように、冒頭には「using static System.Console;」と記述してある。System.Consoleクラスの静的メソッド名を少し打った時点で、IntelliSenseが候補を表示してくれた。候補にはクラス名も表示されているので、間違いなく目的の静的メソッドだと分かる。応用:型名の衝突を回避

 using staticは、型名が衝突するときの解決策としても使える。例えば、次の2つの名前空間の両方にAssertクラスがある*1。そしてどちらのクラスの静的メソッドも使いたいとしよう。

Microsoft.VisualStudio.TestPlatform.UnitTestFrameworkMicrosoft.VisualStudio.TestPlatform.UnitTestFramework.AppContainer

*1 この名前空間はユニバーサルWindowsプラットフォーム用のユニットテストフレームワークなのだが、MSDNにドキュメントがまだ掲載されていない。興味のある方は、筆者のブログ記事「MSTest‐Windows ストア アプリ開発の暗黒大陸」を参考にしてほしい。

 従来は、次のコードのようにusingエイリアスディレクティブを使って、片方のクラス名に別名を付けて使っていた。

using System;using System.Threading.Tasks;// 前者の名前空間は普通にusingusing Microsoft.VisualStudio.TestPlatform.UnitTestFramework;// usingエイリアスディレクティブで、後者のAssertクラスには別名を定義using AppContainerAssert = Microsoft.VisualStudio.TestPlatform.UnitTestFramework.AppContainer.Assert;……省略……// 別名を付けていない方のAssertクラスの静的メソッドを使うAssert.AreEqual<string>("5", ((int)5.6).ToString());// 別名を付けた方のAssertクラスの静的メソッドを使うawait AppContainerAssert.ThrowsException<NotImplementedException>( () => { throw new NotImplementedException(); });

クラス名の衝突を回避する従来の書き方(usingエイリアスディレクティブ)クラス名が衝突している場合、片方のクラスは名前空間をフルに記述するか、このコードのようにusingエイリアスディレクティブでクラスの別名を定義して使っていた。

 using staticを使うと、コンパイラやIntelliSenseが静的メソッドの所属するクラスを適切に判断してくれる。クラス名が衝突していても、コード本体に長い名前空間やクラス名の別名を書かなくてよいのだ(次のコード)。

using System;using System.Threading.Tasks;using Microsoft.VisualStudio.TestPlatform.UnitTestFramework;// 同名のクラス(名前空間は異なる)を2つ、using staticするusing static Microsoft.VisualStudio.TestPlatform.UnitTestFramework.Assert;using static Microsoft.VisualStudio.TestPlatform.UnitTestFramework.AppContainer.Assert;……省略……// 前者のAssertクラスの静的メソッドを呼び出すAreEqual<string>("5", ((int)5.6).ToString());// 後者のAssertクラスの静的メソッドを呼び出すawait ThrowsException<NotImplementedException>( () => { throw new NotImplementedException(); });

using staticでクラス名の衝突を回避する例2つのAssertクラス(名前空間は異なる)をusing staticしている。AreEqual静的メソッドは前者のAssertクラス、ThrowsException静的メソッドは後者のAssertクラスの静的メンバーである。まとめ

 using staticを使うと、コード本体では静的メンバーを呼び出すときに型名を省略できる。また、この機能は型名の衝突回避にも応用できる(片方は静的メンバーだけを使う場合)。

利用可能バージョン:Visual Studio 2015(C# 6.0)以降カテゴリ:C# 処理対象:言語構文関連TIPS:構文:メソッドやプロパティをラムダ式で簡潔に実装するには?[C# 6.0]関連TIPS:VB.NET固有の関数をC#で使用するには?関連TIPS:文字列を全角/半角に変換するには?(VB.NET関数活用)関連TIPS:文字列をひらがな/カタカナに変換するには?(VB.NET関数活用)関連TIPS:Visual Studioでコンソール・アプリケーションのデバッグ実行時にコマンド・プロンプトを閉じないようにするには?関連TIPS:長いジェネリック・クラスの名前を短く記述するには?[2.0のみ、C#、VB]

■この記事と関連性の高い別の.NET TIPSusingディレクティブによる名前空間の指定を素早く記述するには?長いジェネリック・クラスの名前を短く記述するには?using文による名前空間の指定を自動的に記述するには?「.NET TIPS」のインデックス

「.NET TIPS」

仮想通貨カジノパチンコ体験 無料 ゲーム

コメントを残す