[はじめに]
Visual Studioはバージョンアップのたびに様々な便利機能が追加されますが、
便利な反面、稀に不便なものもあります。
そのうちの1つがCodeLensです。(あくまでも筆者の感想です)
CodeLensとは、
Visual Studio 2015で追加された機能で、
コードエディタ上で、メソッドやクラスの定義の上の行に、
そのメソッドやクラスを参照している個数を表示する機能です。
(図1で「4個の参照」と表示されている箇所です。)
一見、便利な機能ですが、
コード編集時に「○○個の参照」の行にカーソルが入らない為、
編集時に思い通りの動作にならず、不便に感じることがあります。
CodeLensを無効にする設定が一見わかりづらいので、
無効にする手順を、備忘録として掲載します。
【図1】
[CodeLensを無効にする手順]
(1)Visual Studio の「ツール」→「オプション」を選択し、
オプションダイアログを表示させる。
(2)オプションダイアログの左側のツリービューで、
「テキストエディタ」→「すべての言語]」→「CodeLens」をクリックし、
右側のエリアの「CodeLens を有効にする」の
チェックボックスのチェックを外す。
(3)(2)まで実施すると、CodeLensの表記が表示されなくなります。
2020年6月9日火曜日
2020年6月7日日曜日
[.NET]yield returnの使用例(C#)
[はじめに]
C#には「yield」キーワードがありますが、
他の言語と比べて特殊でわかりにくいので、使い方の備忘録を掲載します。
※「yield」は、
他の言語(JavaScript、Perl、Python等)でも採用されつつありますが。。。
「yield」は、
オブジェクト指向のデザインパターンのIteratorパターンの実装で利用されます。
Iteratorパターンとは、多数の集合に対してその内部の実装を意識することなく、
逐次処理するためのデザインパターンです。
C#では、.NET Framework 2.0(Visual Studio 2005)から
「yield」が導入されました。
.NET Framework 1.1(Visual Studio .NET 2003)以前の版で、
Iteratorパターンを実装するには、
IEnumerableインタフェース、IEnumeratorインタフェースを実装したクラスを
記述する必要がありましたが、
.NET Framework 2.0(Visual Studio 2005)以降では、
それらのクラスは「yield return」で代用され、
Iteratorパターンの実装がより簡潔になりました。
[サンプルコード]
以下、2つのサンプルコードを掲載します。
2つのサンプルコードは、各々独立して動作します。
[ご参考]
C#には「yield」キーワードがありますが、
他の言語と比べて特殊でわかりにくいので、使い方の備忘録を掲載します。
※「yield」は、
他の言語(JavaScript、Perl、Python等)でも採用されつつありますが。。。
「yield」は、
オブジェクト指向のデザインパターンのIteratorパターンの実装で利用されます。
Iteratorパターンとは、多数の集合に対してその内部の実装を意識することなく、
逐次処理するためのデザインパターンです。
C#では、.NET Framework 2.0(Visual Studio 2005)から
「yield」が導入されました。
.NET Framework 1.1(Visual Studio .NET 2003)以前の版で、
Iteratorパターンを実装するには、
IEnumerableインタフェース、IEnumeratorインタフェースを実装したクラスを
記述する必要がありましたが、
.NET Framework 2.0(Visual Studio 2005)以降では、
それらのクラスは「yield return」で代用され、
Iteratorパターンの実装がより簡潔になりました。
[サンプルコード]
以下、2つのサンプルコードを掲載します。
2つのサンプルコードは、各々独立して動作します。
| |
[C#]yield returnの使用例(その2) |
| |
[C#]yield returnの使用例(その2) |
Iteratorパターンについて |
デザインパターン「Iterator」-Qiita |
2019年3月9日土曜日
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)
[はじめに]
・プログラムソース(C#、VB.NET)を
ブログ公開用のHTMLに変換するツールです。
(コード量が膨大の為、変換処理のみ掲載しています。)
[機能]
プログラムソースの文字列を、HTMLに変換する。
変換後のHTMLは、<table>タグで整形した形になります。
[変換後HTML]
・インデントのスペースが「 」に変換され、ブラウザ上でも表示される。
・予約語、コメント、文字列(ダブルコーテーションで囲んだ部分)に色がつく。
・ソースコードをクリップボードにコピーする機能を提供。(「コードのコピー」ボタンを付加)
IE、Edgeで動作確認済。
[制限事項]
・言語は、C#とVB.NETのみです。
但し、VB6やVBA等はVB.NETと言語仕様が似ている為、
制限事項を考慮の上、利用することもできます。
・C#のコメントは、行の先頭の「//」のみサポート。
行の途中の「//」や「/*」~「*/」はサポートしません。
・VB.NETのコメントは、行の先頭の「'」のみサポート。
行の途中の「'」はサポートしません。
[使い方]
(1)ビルド前に、「System.Web」を参照設定に追加する。
追加しないとコンパイルエラーになります。
(2)CodeConverterToHtml クラスのGetInstanceメソッドで、
変換オブジェクトを取得します。
言語の種類(C#かVB.NET)は、GetInstanceメソッドの第1引数で指定します。
(3)CodeConverterToHtml クラスのConvertCodeToHtmlメソッドで、
ソースをHTMLに変換します。
ConvertCodeToHtmlメソッドの仕様
・第1引数:プログラムソースの文字列
・第2引数:整形後HTMLのタイトル。(省略可能)
・戻り値:変換後のHTMLの文字列
変換後の文字列(HTML)は、
<table>タグで整形した形となります。
(<html>タグでは囲みません。)
[改造ポイント]
・拡張性
言語(C#、VB.NET)の固有ロジックを、
CodeConverterToHtml の派生クラスに定義しています。
(VBCodeConverterToHtml、CSharpCodeConverterToHtml)
予約語一覧、キーワードの前景色、背景色、検索条件(正規表現)、変換仕様は、
派生クラスの修正で変更できます。
また、言語を追加する場合も、既存の派生クラスの流用が簡単です。
・予約語一覧
予約語一覧は各派生クラスに定義しています。
予約語の追加、変更、削除が簡単です。
・キーワードの検索条件
正規表現を各派生クラスに定義しています。
正規表現を修正することで、キーワードの検索条件を変更できます。
・キーワードの変換仕様
正規表現の検索結果毎に、
MatchEvaluator()メソッドが呼ばれます。
MatchEvaluator()メソッドの修正で変換仕様を変更できます。
・マルチスレッド対応
スレッドセーフではありません。
派生クラスのGetRegEx() とGetReservedWords()に、
複数スレッドが同時アクセスした場合、
m_RegEx変数、m_ReservedWords変数の値に
矛盾が生じる可能性があります。
ASP.NET等のマルチスレッド環境で安全に使用する為には、
SyncLockで排他をかける必要があります。
[プログラムソース]
[プログラムソース]
[プログラムソース]
・プログラムソース(C#、VB.NET)を
ブログ公開用のHTMLに変換するツールです。
(コード量が膨大の為、変換処理のみ掲載しています。)
[機能]
プログラムソースの文字列を、HTMLに変換する。
変換後のHTMLは、<table>タグで整形した形になります。
[変換後HTML]
・インデントのスペースが「 」に変換され、ブラウザ上でも表示される。
・予約語、コメント、文字列(ダブルコーテーションで囲んだ部分)に色がつく。
・ソースコードをクリップボードにコピーする機能を提供。(「コードのコピー」ボタンを付加)
IE、Edgeで動作確認済。
[制限事項]
・言語は、C#とVB.NETのみです。
但し、VB6やVBA等はVB.NETと言語仕様が似ている為、
制限事項を考慮の上、利用することもできます。
・C#のコメントは、行の先頭の「//」のみサポート。
行の途中の「//」や「/*」~「*/」はサポートしません。
・VB.NETのコメントは、行の先頭の「'」のみサポート。
行の途中の「'」はサポートしません。
[使い方]
(1)ビルド前に、「System.Web」を参照設定に追加する。
追加しないとコンパイルエラーになります。
(2)CodeConverterToHtml クラスのGetInstanceメソッドで、
変換オブジェクトを取得します。
言語の種類(C#かVB.NET)は、GetInstanceメソッドの第1引数で指定します。
(3)CodeConverterToHtml クラスのConvertCodeToHtmlメソッドで、
ソースをHTMLに変換します。
ConvertCodeToHtmlメソッドの仕様
・第1引数:プログラムソースの文字列
・第2引数:整形後HTMLのタイトル。(省略可能)
・戻り値:変換後のHTMLの文字列
変換後の文字列(HTML)は、
<table>タグで整形した形となります。
(<html>タグでは囲みません。)
| |
[VB.NET]変換機能の使用例 |
[改造ポイント]
・拡張性
言語(C#、VB.NET)の固有ロジックを、
CodeConverterToHtml の派生クラスに定義しています。
(VBCodeConverterToHtml、CSharpCodeConverterToHtml)
予約語一覧、キーワードの前景色、背景色、検索条件(正規表現)、変換仕様は、
派生クラスの修正で変更できます。
また、言語を追加する場合も、既存の派生クラスの流用が簡単です。
・予約語一覧
予約語一覧は各派生クラスに定義しています。
予約語の追加、変更、削除が簡単です。
・キーワードの検索条件
正規表現を各派生クラスに定義しています。
正規表現を修正することで、キーワードの検索条件を変更できます。
・キーワードの変換仕様
正規表現の検索結果毎に、
MatchEvaluator()メソッドが呼ばれます。
MatchEvaluator()メソッドの修正で変換仕様を変更できます。
・マルチスレッド対応
スレッドセーフではありません。
派生クラスのGetRegEx() とGetReservedWords()に、
複数スレッドが同時アクセスした場合、
m_RegEx変数、m_ReservedWords変数の値に
矛盾が生じる可能性があります。
ASP.NET等のマルチスレッド環境で安全に使用する為には、
SyncLockで排他をかける必要があります。
[プログラムソース]
| |
[VB.NET]CodeConverterToHtml |
[プログラムソース]
| |
[VB.NET]CSharpCodeConverterToHtml.vb |
[プログラムソース]
| |
[VB.NET]SqlServerCodeConverterToHtml |
登録:
投稿 (Atom)
[雑記]ドローン(DJI Mini 3)
(1)雑記 もともと多趣味の友人 masakazu Drone 氏が、 最近、 ドローン にハマり始めて、 更に、新たな趣味が増えたとのこと。 ドローン を始めてから、 まだ1年も経っていないとのことですが、 旅行先で山や川の景色を 空撮 して、 Youtube ...
-
(1)雑記 もともと多趣味の友人 masakazu Drone 氏が、 最近、 ドローン にハマり始めて、 更に、新たな趣味が増えたとのこと。 ドローン を始めてから、 まだ1年も経っていないとのことですが、 旅行先で山や川の景色を 空撮 して、 Youtube ...
-
(1)レビュー 10年以上前からある書籍ですが、昨今のJavaのバージョンに合わせて、 リニューアルされましたので、改めて紹介いたします。 GOFが提唱したデザインパターンについて、とてもわかりやすくまとめた1冊です。 各パターンを章毎にまとめてあり、クラス図・...
-
(1)はじめに sqlcmd コマンドで、 SELECTステートメントを実行した時、 行の折り返しで、結果が見づらくなることがあります。 Oracle の LINESIZE に相当する設定が、 SQLServer にもないか調べてみました。 普段...
-
(1)レビュー 目覚まし時計の調子が悪くなったので、新たに購入しました。 指定した時刻にアラームが鳴ってくれさえすればよいので、 特別な機能は求めていなかったのですが、 価格の割に便利な機能が搭載されていたので、購入に至りました。 最近は、スマホにもアラーム...
-
[はじめに] (1) ある2数の和と積から、元の2数を求めるアルゴリズム です。 例えば、『 足して5 』、『 掛けて6 』になる2つの数は、 2 と 3 になります。 これを解くアルゴリズムとして、 2次方程式の解の解法 を利用することがで...
-
(1)レビュー ASP.NET は、以下の2種類に大別されます。 (1)ASP.NET Web Form .NET Framework1.0リリース時の頃から導入 (2)ASP.NET MVC .NET Framework4以降に導入 ...
-
[はじめに] Excelでシートを昇順に並べ替える機会があったので、 備忘録としてサンプルソースを掲載します。 サンプルは昇順ソートですが、引数を変更すると降順にも対応できるようにしています。 [ソース] コードのコピー Optio...
-
(1)レビュー JavaScriptは古くからあり、時代と共に進化してきています。 JavaScriptの独習シリーズは過去にもありましたが、 最近(2021年)、独習シリーズでJavaScriptの新版が登場しました。 クラス 、 反復処理 、 非同期処理 ...
-
[はじめに] ・プログラムソース(C#、VB.NET)を ブログ公開用のHTMLに変換するツールです。 (コード量が膨大の為、変換処理のみ掲載しています。) [機能] プログラムソースの文字列を、HTMLに変換する。 変換後のHTMLは、<ta...
-
(1)レビュー 最近、引越しをしました。 ベランダの物干し竿を固定する位置が転居前よりも高く、 身長が低い妻にとって家事がしづらいので、 物干し台 を購入しました。 組み立て式の為、多少のぐらつきはありますが、 実際使ってみても全く不便さを感じませ...