雑記 - otherwise

最近はDQ10しかやっていないダメ技術者がちまちまと綴る雑記帳

VB(.NET)

Console.WriteLine(Nothing) を紐解いてみる

VB のコードを書いたのが 1 年半ぶりな人が Visual Basic Advent Calendar 20 日目をお送り致します。 さて、先日 C# のメソッドオーバーロードの解決についてまとめたわけですが、 VB には Nothing と云う(メソッドオーバーロードの解決に於いて) dynamic…

型安全な If 関数?

元ネタ: VB の三項演算子 (チバヒロの Blog ) VB の If 関数の話は私も前に書いたのですが、この関数の戻り値が Object 型なので、 Option Strict On な環境では、 Dim i As Integer = If(hoge < 4, hoge, 4) と云った書き方が出来ません。(返却値に対し…

SQL の In 句の様な事を VB/C# で(ジェネリック編)

元ネタ:SQL の In 句の様な事を VB/C# で ……ただ単に String → T 化しただけですが。 VB Imports System.Runtime.CompilerServices Module GenericExtensions <Extension()> _ Public Function [In](Of T)(ByVal str As T, ParamArray ByVal params As T()) As Boolean R</extension()>…

SQL の In 句の様な事を VB/C# で

複数の値のどれかと一致するかどうかを調べたい ( C# と VB.NET の質問掲示板) つまり、まとめるとこう云う事ですね? VB Imports System.Runtime.CompilerServices Module StringExtensions <Extension()> _ Public Function [In](ByVal str As String, ParamArray ByV</extension()>…

LINQ to SQL にうんざり

ちょっと Let 内で条件式を書いたら、とたんに実行時に「 SQL に変換できなかったため、ローカル式として処理できませんでした」となってしまう。。。 もうやだ><

String.IsNullOrWhiteSpace

IsNullOrWhiteSpace メソッド (R.Tanaka.Ichiro's Blog) .NET 4 で追加されたメソッドだそうですが。 これ本当に必要なのかなぁ。。。 クラスライブラリの説明を読む限り、IsNullOrEmpty + Trim().Length == 0 より「パフォーマンスがよい」となっていますけ…

慌てるとロクな事がないケース・その 2

String オブジェクトの同値チェックで If hoge.Equals(fuga) Then ' hoge / fuga を使ったコード End If みたいに書いていたら、 hoge に Nothing が入っていて落ちるケースに遭遇。 慌てて Nothing チェックやら何やらをごちゃごちゃ書いてから気づいた。。…

慌てるとロクな事がないケース

# 絶賛お仕事中です。 # 何年ぶりの徹夜だろう。。。 ^^; 単体テストをしていたら、どうもうまくソートされていないデータがあったのでソースを調べてみたら、メソッド形式の LINQ で OrderBy/ThenBy を適用させた後にその結果を捨てていました。。。 何やっ…

自爆した……

去年、散々記事で検証していたラムダ式の変数スコープ問題によるバグを、仕事で作ったプログラム中に自分で埋め込んでいた事に今日気づきました。 まだ単体試験前のコードだったのでしれっと修正しましたが。。。 うーん、まだまだ精進が足りないなぁ。>自分

LINQ to SQL の GroupBy がよくわからない

また愚痴ですがw LINQ to SQL の GroupBy メソッドに複数のキーを渡したいんですが、 MSDN に書いてあるのを参考にやってみてもグルーピングされない。。。>< # クエリ式ではうまくいっているんですが、メソッドチェーンで書くとうまくいかないのでつ。 T…

LINQ to SQL の連続射影の罠

愚痴ですw LINQ to SQL で、 Public Function Honya() As List(Of Foo) Dim data = IQueryable(Of SomeDataContext.Foo) Using context = New SomeDataContext() data = From item In context.Foo Select New SomeDataContext.Foo() With { .Hoge = item.Va…

最近 Optional 使いすぎかも……

仕事で VB のコードを書いていると、どうしても Optional 引数を多用する傾向があります。 最近は、 C# でも 4.0 で書く事が多い(手元の環境は未だに RC 版だけど :p )ので、まるで省略可能引数房みたくなってる>< 正直、無闇にオーバーロードを増やすよ…

ないものねだり(ふたたび)

ジェネリックの型制約でもうひとつ。(ちなみにひとつめは特定のプロパティを持つクラスであることを制約にしたかった) 「特定の Attribute が付与されているクラスであること」。 今回、具体的に必要になったのは「 SerializableAttribute 」が付与されて…

ないものねだり(ジェネリック編)

ジェネリックの型制約で、「 XXX と云うプロパティを持つクラスであること」なんていう制約を付けたい。。。 とある共通メソッドを作る際、共通メソッドを格納するプロジェクトから参照出来ない*1 DLL に実装されているクラスのインスタンスを引数に受け取る…

ジェネリックの型制約

C# の場合、ジェネリック宣言で型パラメータに制約を付ける際は、 public void Hoge<T>(T value) where T : IComparable<T> { ... } の様に、 where 句を使って宣言します。 一方、 VB の場合は、 Public Sub Hoge(Of T As IComparable(Of T))(ByVal value As T) .</t></t>…

VB での default(T)

C# 脳だとどうしても default(T) を使いたくなってしまうのですが、 VB には default(T) がないですよね。 で、どう書けばいいのかと思ってたのですが、ふと .NET Reflector 越しに default(T) を利用したコードを見てみたら、 VB だと↓こんな感じに変換され…

今日書いた謎なコード

最近、仕事でこんなコードばかり書いている気がする。。。 Public Function CompareFromTo(Of TObject As IComparable)( _ ByVal fromObject As TObject, ByVal toObject As TObject, _ Optional ByVal allowNull As Boolean = True, Optional ByVal allowEq…

Int32 における IsNullOrEmpty

Int型のNullOrEmptyチェック ( C# と VB.NET の質問掲示板) ネタ元は「 Int32 型は null にならないからチェック不要」で終了していますが、弁士さんが「 Nullable 型で無い限り」と書いている通り、 Nullable 型の場合は null になり得ます。 尤も、 int …

VB 9 の三項演算子

今日、仕事で質問されて調べていて知った事なのですが、 VB 9 では If(Expression, TrueValue, FalseValue) と云う形式で三項演算子と同じ事が書けるのですね。 ってか、 VB8 まで(ショートサーキット評価での)三項演算子がなかったと云う方が驚きです。。…

今日は日付データと格闘していました

今日は、ほとんど一日中、日付データと格闘していた様な気がします。 # そのおかげで、土曜日なのにこんな時間までお仕事してました。 主に西暦と和暦の変換ですが。 標準で用意されているのにそれを利用出来ない(対応マスタを自前でもちたいと強く要望され…

文字列の行数をカウントする

No.44461 文字列の行数 ( C# と VB.NET の質問掲示板) Split で分割してみないと判らないってのは面倒だなぁと思ったので、 Split 以外の方法で。 ……似た様な方法ではあるけど。 :p class WankumaBbsNo44461 { static void Main() { var input = "この文字…

悪戦苦闘ちう

現在、構築するシステムで共通的に利用する WebControl をせっせと作成中。 設計はともかくとして(そもそも ASP.NET Web/Form に慣れていないので、仕組みを確認するのに時間がかかっているだけ)、製造で VB の壁にぶつかりまくっています。。。 どの位苦…

業務アプリケーションで LINQ to Entities + ADO.NET Entity Framework を使う事になりそう

個人的には嬉しいけど、開発メンバの 7 割が 1, 2 年目の若手な PJ で、この構成を採用して本当に大丈夫なのだろうか。(生産性とか品質とか) ASP.NET MVC なら TDD に持ち込むとか考えやすいんだけど、如何せん ASP.NET Web Form なので、どう進めていくか…

続・クラスのチェック

車輪の再発明 (東方算程譚) 菊池さんのコメントを見て。 System.Type.IsAssignableFrom(Type) なんてのがあるんですね。知りませんでした ^^; なるほど〜。勉強になりました。<向こうのコメント欄に書けばいいのに

クラスのチェック

車輪の再発明 (東方算程譚) 「そこで質問」に反応。 本質的な回答ではないけど、 If 文のタイプ数を減らす目的であれば、拡張メソッドを使う方法がありますね。 <Extension()> _ Public Function IsClassOf(ByRef type1 As Type, ByVal type2 As Type) As Boolean If Is</extension()>…

文字列への暗黙的な型変換( VB9 編)

string型の暗黙の型変換 (おぎわら @Blog (Hatena 編 ) ) 他の言語から来るとはまりそうな話ですね。 まぁ、文字列連結の "+" (結合演算子)の動きを考えると、これでいいのかも、とは思うのですが、何とも気持ちの悪い動きです。 ……で、ふとなく気になっ…

VB 9.0 が拡張メソッドを利用してインスタンスを差しかえてしまえる件について

拡張メソッドで ref してみる試み (R.Tanaka.Ichiro's Blog) 上記記事のコメント欄で NyaRuRu さんが拡張メソッドを使って呼出元のインスタンスを null 化してしまう例を書かれていて、ふと思い立って↓こんなテストプログラムを作ってみた。 Imports System.…

次回の東京勉強会は VB Day に決まったらしい?

わんくま勉強会運営本部御中 (東方算程譚) 8/11 11:24 のエピ先生のコメントによると、次回の東京勉強会は「はつね Day 」となったそうです。 VB 縛りって事なので、事実上の VB Day ですね。 VB は初心者同然ですが、 VB Day はヒジョーに楽しみです。♪ …

ソート祭り?

(東方算程譚) (東方算程譚) (東方算程譚) (東方算程譚) わんくま方面で変な盛り上がりを見せている様なので、私も VB のお勉強の一環として頑張ってみました。(ちゃんと VB 9.0 で書いてみた。えっへん♪) # この手の話に心躍るのが、でべろっぱぁ…