VB.NET

VB.NETでもReflectionでToStringしたい(アレ ver.1.2告知)

はじめに 弊社が公開しているウンコライブラリのアレですが、晴れてversion.1.2をリリースしました。 正直そこまで規模の大きくないライブラリですので、おまけ程度のパフォーマンスの改善と正直どうでも良い機能追加程度です。 追加するべきかどうか迷いました…

VB.NETでも式木を扱いたい(その3)

はじめに jyuch.hatenablog.com 前回は既知のクラスのメンバーにアクセスする式木を構築しましたが、既知のクラスにあんな面倒なことをやっても何も嬉しくありません。 やはり真価を発揮するのは未知のクラスのメンバーにアクセスしなければならないときです…

VB.NETでも式木を扱いたい(その2)

jyuch.hatenablog.com はじめに 今回も引き続き式木を扱っていきましょう。 そもそも式木とはなんでしょう。 という事でmsdnさんオナシャス 式ツリー (C# および Visual Basic) アレでは上記の コードをツリー状のデータ構造で表現できる 実行時に動的に生成…

VB.NETでも式木を扱いたい(その1)

はじめに 最近はReflectionでToStringするアレの開発に勤しんでいた弊社です。 『ReflectionでToStringするアレ』自体はC#で書いているんですけど、アレでやってる事をVBで紹介しているサイトがほぼ皆無なのでライブラリの宣伝も兼ねて軽く紹介したいです。 …

VB.NETでもdefault(T)したい

default(T) C#のコードをVBに移植している時に以下のコードがありました。あ、なんで移植してるんだってツッコミは無しね。 class Hoge<T> { public T HogeHoge(T value = default(T)) { return value; } } はて、VBではdefault(T)に対応する演算子って何でした</t>…

C#でもVB.NETの超便利なメソッドを使いたい111111111(for C# 6)

はじめに 本当に申し訳ございません。 超×2便利メソッド jyuch.hatenablog.com 上の記事で触れてる通りC# 6がリリースされusing staticの登場でよりVBらしさをアピールできるようになったので、いつもVBを見下してくるC#erにVB固有メソッドの便利さを見せつ…

VB14の新機能の確認したい

はじめに ついに Visual Studio 2015 の正式版がリリースされましたね。 と、言うわけで VB14 の新機能を一通り確認したいと思います。 はい、そこ やるんだったら CTP が出たタイミングでやれよ とか どーせ C# の後追いだろ とか 似たような記事が○○(ここ…

VB.NETでも契約プログラミングをしたい(その2)

はじめに jyuch.hatenablog.com というわけで今回はすこし間隔が開きましたが契約プログラミングのお話です。 契約プログラミングその1でリンクだけ紹介したあのマニュアルを一通り読み終わったので、それについて書きたいと思います。 イントロダクション …

VB.NETでもXMLを扱いたい(その6)

はじめに ちょっと前にXmlDocument + XPathでXMLの解析をダラダラとやった記事を書きました。 jyuch.hatenablog.com 個人的には正直あれでいいかなーと言った感じでしたが、 『えーまじXmlDocument』『キモーイ』『XmlDocumentが許されるのは小学生までだよ…

VB.NETでもNLogで独自のレンダラーとターゲットを定義したい

はじめに 今回はNLogで自前のレンダラーとターゲットを実装するお話です。 と、言っても公式の説明がかなり分かりやすいのでこっちを見た方が良いです。 Extending NLog · NLog/NLog Wiki · GitHub ちなみにNLogのバージョンは4.0を対象としてます。 レンダ…

VB.NETでも楽に複数の要素を連想配列のキーに使いたい

はじめに 連想配列ってあるじゃないですか。 .NETだとSystem.Collections.Generic.Dictionary(Of TKey, TValue)ですね。*1 Dictionaryはキーに複数のインスタンスを指定できないので、複数のキーを指定したいときはそれらを含みさらに適切に実装したクラスを…

VB.NETでも契約プログラミングをしたい(その1)

はじめに 今回の内容は契約プログラミングです。 はて、契約とは何でしょう。 契約プログラミング - Wikipedia つまるところ呼び出し側と呼び出される側がそれぞれ満たすべき条件を明記することで、どちらがどこまで責任を負うのかを白黒はっきりさせること…

VB.NETでもXMLを扱いたい(その5)

jyuch.hatenablog.com はじめに 今まですごくダラダラやってましたが、今回が最後だと思います。 今回はDOMとXPathを用います。LINQ to XMLはお休みです。 サンプルXML 今回のためにサンプルXMLをかなり改変しました。

VB.NETでもXMLを扱いたい(その4)

jyuch.hatenablog.com はじめに 無駄にダラダラ書いているこのシリーズですが、今回は『どうやって』ではなく『なぜ』XMLを扱うのか考えてみました。 CSV、INI XMLと他の形式とで何が嬉しいのかを考えてみました。 比較して良いのか分かりませんが、まずはみ…

VB.NETでもXMLを扱いたい(その3)

jyuch.hatenablog.com XMLの検証 Module Module1 Sub Main() Section2() End Sub Function ReadSchema() As XmlSchema Dim xs As XmlSchema Using r = New StreamReader("mailbox.xsd") xs = XmlSchema.Read(r, Sub(sender, e) Console.WriteLine("{0}:{1}",…

VB.NETでもXMLを扱いたい(その2)

jyuch.hatenablog.com XMLスキーマの読み込み 今回は前回無駄に文字数を増やしたXMLスキーマをファイルから読み込み表示させてみましょう。 Module Module1 Sub Main() Section1() End Sub Function ReadSchema() As XmlSchema Dim xs As XmlSchema Using r …

VB.NETでもXMLを扱いたい(その1)

はじめに ちょっとXML(+XSD)を扱う必要がありまして、色々試行錯誤したのでそれについてです。 弊社はAntのビルド設定ファイルを割合いじっていたのでXMLを書く事自体はそこまで初心者って事でもないと信じて明日も力強く生きて行きたいのですが、XSDについ…

VB.NETでもサイズを据え置きでBase64でエンコードしたい

はじめに 突然ですが、Base64ってあるじゃないですか。 Base64 - Wikipedia 任意のバイト列をいわゆるASCII文字集合だけで表現可能で、7ビットしか扱えないメールではUTF-8と組み合わせて使われることが多い奴です。 メールではほぼ必須の技術ですが、どうし…

VB.NETでもMidステートメントで文字列を置き替えたい

はじめに Mid関数の引数について調べていたらふとこんなものを見つけました。 Mid ステートメント 同じ名前で関数とステートメントの両方があるだなんてVBはなんて素敵な言語なんでしょう。 サンプルコード 使う使わないは置いておいてとりあえず使い方を確…

VB.NETでも静的なローカル変数を使いたい

はじめに この前、ふとVBのキーワード一覧を見ていたらStaticなる物を見つけました。 Static (Visual Basic) どうも静的なローカル変数を宣言する時に使うもののようです。 正直VBがオブジェクト指向言語を標榜しているならこんなものは要らないはずですが、…

VB.NETでも処理を高速化したい

はじめに まぁ、今回のテーマは高速化なんですけど『こうすればコードが超高速化される1111111』みたいな即効的なテクニックっていうよりはパフォーマンスに問題がある場合はこうして問題を解決すればいいんじゃないかな〜的なトピックです。 ちなみ…

VB.NETでもアンマネージドリソースを解放したい

はじめに 今回はアンマネージリソースを抱えるクラスの設計の話ではなく、アンマネージリスースを含むクラスを使い終わって破棄するときのお話です。 ちょっと前にこんなコードを見かけました。 Function Hoge() as Integer Dim connection = New SqlConnect…

VB.NETでも3項演算子を使いたい

はじめに 最近はVBでもPythonみたいに関数内に関数を定義できねーかなぁと考えている弊社です。 あと、出来ればVBでもカリー化関数を扱いたい。 もっとカジュアルに関数を扱いたいのでMicrosoftさんオナシャス。 とまぁ、儚い夢を願ったところで本題です。 V…

VB.NETでもAsc関数で文字コードを取得したい

はじめに Visual Studioのインテリセンスを眺めているとAscやAscWといった関数を目にします。 説明文をざっと見る限り文字に対応する文字コードを返すとあるのですが、 文字コードとは一体どのコード体系を指してるのか AscとAscWは何が違うのか 当該コード…

Mid$とMidって何が違うのさ?

はじめに 今回は特に何かの目的を達成するというものではなく、ちょっと気になったことの確認程度です。 ふとその辺のVBのコードを見ていたらMidとMid$の2種類が使われているのに気付きまして、何か違いがあるのかと疑問に思ったわけですよ。 Let's IL まぁ…

VB.NETでもReDimで配列の大きさを変更したい

はじめに さて今回は使いどころが正直思いつかないReDimステートメントのお話です。 ReDim ステートメント (Visual Basic) | Microsoft Docs なかなかに翻訳がアレですが、軽く確認した感じ 使えるのはプロシージャ(メソッド)内だけ 配列のサイズを変えら…

他言語転向組が知るべきVB.NETのこと

初めに VBという言語に触れてから暫くたったのですがVBがJavaやC#、Pythonなどの言語とはかなり違った作法を持ち、その辺に苦しめられたのでそれに関するメモ的な何かです。 結論から言うと、VBが不愉快な挙動をしたら速攻でildasm*1を起動してアセンブリを…

C#でもVB.NETの超便利なメソッドを使いたい111111111

はじめに いろいろごめんなさい。 超便利メソッド VB.NETにはLen(int)とかLen(char)とかLen(string)とかの超便利メソッドがたっくさんありますよね。 でもそれらのメソッドはC#では使えない。不便だと思いません? それらをC#でも使えるようにするためのメモ…

VB.NETでもジェネリックなメソッドを実装したい

はじめに 特に需要なんてものはないんですが、VBで型パラメータで指定したインスタンスを生成したりするメソッドを定義したくなったのでちょっと調べてみました。 Module Module1 Sub Main() Dim a As Generic1(Of HogeA) = New Generic1(Of HogeA)() Dim b …

VB.NETでもCType演算子をオーバーロードして値を変換したい

はじめに これまた特に需要は無かったんですが、意味なくクラスを別のクラスへ変換したかったんでCTypeについて調べてみました。 演算子と関数 なんか調べてみると自分でオーバーロードするCType演算子と変換を実行するCType関数の二種類があるみたいですね…