雑記 - otherwise

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

C#

1 から 10 までの積を求める

C#

今日から新しい現場に異動する関係で、ちょっとバタバタしていて blog 更新出来てません。。。 なので、ちょっと小ネタを。 わんくま Blog で「 1 から 10 までを足す」コードが盛り上がっていたので、対抗してこんなのを書いてみました。 var result = Enum…

1 と null の比較

C#

Twitter で「 C# で『 1 == null 』と云う比較演算を書くと、 warning は出るけどコンパイル可能。なんでだろう?」と云う話を見かけました。 これは、「 1 が null 許容型に暗黙的にキャスト可能」なのでコンパイルが通る、のだと思うのですが、 null 許容…

nullable な引数を持つメソッドをオーバーロードする場合の解決・番外編

C#

もう一個、このネタで引っ張ってみます。 :p C# 3.0 で拡張メソッドを使った場合はどうなるか。 public static class FooExtension { public static void Hoge(this Foo foo, short? a) { Console.WriteLine("short"); } } public class Foo { public void H…

更続・ nullable な引数を持つメソッドをオーバーロードする場合の解決

C#

nullableの引数を持つメソッドをオーバーロードする場合に、引数にnullを与えた時にコンパイルエラーにならない。 (The road to C# master trapemiya) nullable な引数を持つメソッドをオーバーロードする場合の解決 続・ nullable な引数を持つメソッドをオ…

続続・ nullable な引数を持つメソッドをオーバーロードする場合の解決

C#

nullableの引数を持つメソッドをオーバーロードする場合に、引数にnullを与えた時にコンパイルエラーにならない。 (The road to C# master trapemiya) コメントの中で aetos さんが提示されている例について考えてみようと思います。 前提 この例での引数は …

代入演算子の結合法則

C#

代入演算子の不思議 (R.Tanaka.Ichiro's Blog) # 本日も R さんからネタを拝借。 ^^; 普段、代入演算子を結合させる書き方はまずしないのでちょっと悩みました。 ……で、結局 C# 言語仕様を見てみる、と。 :p 「 7.16 代入演算子」と「 7.16.1 単純代入」に↓…

続・ nullable な引数を持つメソッドをオーバーロードする場合の解決

C#

nullable な引数を持つメソッドをオーバーロードする場合の解決 nullableの引数を持つメソッドをオーバーロードする場合に、引数にnullを与えた時にコンパイルエラーにならない。 (The road to C# master trapemiya) 何故「暗黙的な変換の原点」が採用される…

nullable な引数を持つメソッドをオーバーロードする場合の解決

C#

nullableの引数を持つメソッドをオーバーロードする場合に、引数にnullを与えた時にコンパイルエラーにならない。 (The road to C# master trapemiya) null 許容型の不思議 (R.Tanaka.Ichiro's Blog) どうやらこれは、「プリミティブ型が特別」なのではなく…

ラムダ式の変数スコープ:注意編

C#

ラムダ式の変数スコープ 続・ラムダ式の変数スコープ 続続・ラムダ式の変数スコープ 途中から内部の仕組みのネタに脱線しちゃいましたが、本線に戻して、ラムダ式を使う際にやっちゃいけないと思われることを幾つか挙げてみます。 ……ぱっと思いついたものの…

続続・ラムダ式の変数スコープ

C#

前の記事でかるあさんに指摘されてコメントした件について、改めて MSIL をみてみました。 まずは検証に使ったコードを書いておきます。(簡単なコードだったので、デザイナ部分を含めて全部直書きしました) using System; using System.Drawing; using Sys…

続・ラムダ式の変数スコープ

C#

実際のところ、値型の場合の実装が( MSIL 上で)どうなっているのか興味が沸いたので調べてみました。 基にしたソースコードは以下。(伊藤さんの記事から拝借しました。 m(_ _)m ) class Foo { static void Main() { Action a; { var i = 10; a = () => C…

ラムダ式の変数スコープ

C#

ラムダ式での上位スコープの保存 ( wa りと na はてな日記) 続続 ラムダ式での上位スコープの保存 ( wa りと na はてな日記) 興味深く読んでます。 ……が、なんか「続続」の方の例がいまいちな様な気がします。 そもそも、ラムダ式に於ける変数スコープの…

Silverlight で WPF の ListView.GridView と同じ表現方法を利用するベストプラクティス知りたい

ここ数日、 Silverlight 3 を使ってみているのですが、タイトルに書いた話でずっと悩んでいます。 まぁ、そもそも何故 Silverlight 用の GridView が提供されていないのか、と云うのは置いておいて、どうレイアウトしてあげるのがいいのやら。 とりあえず Li…

TextBox の入力チェックをバインド先のデータクラスプロパティの属性として書ける様になったらしい

Silverlight3での入力値検証 (かずきの Blog ) 入力検証に革命が (えムナウ Blog ) ここのところ、 WPF , M-V-VM , Silverlight 辺りのキーワードについて色々見ているのですが、わんくま Blog 界隈でこんな話が挙がっていたのでちょっと触ってみました…

Enumerable.ToLookup メソッドなんてのがあるんですね

C#

ToLookupを使ってみる ( wa りと na はてな日記) ToLookup メソッドの存在を知らなかったので MSDN で調べてみました。 Enumerable.ToLookup メソッド (System.Linq) ( .NET Framework クラスライブラリ) ほうほう。 IEnumerable なコレクションをグルー…

Enum を二値で扱う

C#

Enumを二値扱いたかったりする。 (HIRASE CONNECTION WK) 気持ちは判らないでもないのですが、 Enum って「列挙」体だからなぁ。。。 要は、 Enum の演算子をオーバーロード出来れば話は早い( C# が否定演算子 (!) のオーバーロードをサポートしている)の…

配列のシャッフル

C#

シャッフル ( C# と VB.NET の質問掲示板) かき混ぜてはいかがでしょうか (東方算程譚) επιστημηさんの解法が目から鱗モノでした。 なるほど、シャッフルってこうやれば綺麗に書けるんですね。すごく勉強になりました。 って事で、より理解を深めるため…

式のトレース (3)

C#

せっかくなので、最初の課題の MSIL を読み解いてみたいと思います。 まずは、検証に使った C# コード(該当メソッドのみ)はこちら。 static void Main() { var i = 0; i *= ~i & 2 | 1 * (++i) - -(i--) ^ i; Console.WriteLine("i = {0}", i); } 続いて .…

式のトレース (2)

C#

R さんから課題を頂きましたので、やってみたいと思います。 まずはひとつめ。 var i = 1; i = 3 & ++i; これは、 increment, and, store になるはずなので、きっと i = 2 になると思います。 ……検証。 i = 2うん、正しいみたいですね。 一応、 MSIL でも in…

式のトレース

C#

ちょっとしたクイズです (R.Tanaka.Ichiro's Blog) ちょっとしたクイズです(その2) (R.Tanaka.Ichiro's Blog) MSIL でチェックしたところ、違う結果が出ました。。。 以下、 R さんのコメントで違った点。 右辺の「 1 * 」のところは最適化で消えてしまう…

C# 3.0 言語仕様書とか

C# 言語 (msdn) C# の言語仕様書が欲しくて MSDN のサイトを探していたら、↑のページにたどり着きました。 ……なぜ 2.0 までしかリンクがないんだろう。 で、英語版を見ると、ちゃんと 3.0 へのリンクがある。。。 C# 3.0 の言語仕様書って 2008 年 1 月位に…

文字列の変換(ネタ) - リファクタリング編

C#

以下でOKです (R日記) R さんからツッコミが! おぉ、確かに IList の拡張メソッドを使うのだから char[] で十分でした。 いつもありがとうございます〜。 m(_ _)m って事で、改めて。 static string Convert4(string str) { return new String(str.TakeW…

文字列の変換(ネタ)

C#

以下について教えてください ( C# と VB.NET の質問掲示板) タイトルが不明確だとか、質問の仕方がなってないだとか、そう云った小言は全て省略して、ネタで書いてみました。 ……出来上がってみたらムダに長くて面白かったので、記事として残しておきます。…

Tuple on C# 4.0

何となく What's New in the .NET Framework 4 とかを眺めていて、 .NET Framework 4 に導入された Tuple についてチェックしてみました。( Google で検索しても扱っている記事があまり見当たらなかったので、備忘録として) とは言っても、まだ VS2010 も …

比較と代入と算術の演算子

C#

比較と代入の演算子 (R.Tanaka.Ichiro's Blog) 何か面白い事になってます。 ^^ 派生でこんな↓の試してみました。 var i = 1; var j = 0; Console.WriteLine((j = i++) == i); 見た目だと判りにくいですが、こんな感じで処理されるみたいです。(一応、 IL で…

ネットワークアカウントの利用方法がよく判らない

C#

最近、 P/Invoke で悩みすぎな気がする。。。 そもそも、 Win32 プログラムの経験がない人間にとって、 P/Invoke は非常にハードルが高いですよー。 ^^;; ……って、脱線した。以下、本題。 Oslo CTP のサンプルをいじっている中で、掲題の件に当たって悩んで…

string から特定の文字を消去する

C#

string から特定のいくつかの文字を消去したい ( melpon日記 - C++すら(ry) System.Text.RegularExpressions を使えばいいかと。 var str2 = System.Text.RegularExpressions.Regex.Replace(str, " |\t|\r|\n", ""); // .NET だと "\s" が使えないのね…

C# でクラス名と同名のメソッドを定義する

C#

通常、 C# では、クラス名と同名のメソッドは定義する事が出来ません。(コンストラクタとかぶってしまう為) VB ではこれが出来たりするんですが(コンストラクタを New と云う名のメソッドとして定義するから)、まぁ言語による制限だと諦めていました。(…

foreach でループ回数を取得する

C#

何度目の動き (Garbage Collection) なるほど〜。と感心しつつ、 foreach と Select で 2 回まわっちゃっているのがちょっとなぁ、と思ったので、別の方法を。 class Test { static void Main(){ LinkedList<string> name = new LinkedList<string>(); name.AddLast("福沢祐</string></string>…

twitter のパブリックタイムラインページを 5 秒おきに取得する C# プログラム

C#

使い捨てで書いたものだけど、我ながらかなりキモかったので晒してみる。 using System; using System.Net; using System.IO; using System.Windows.Forms; class ptl : Form { Timer timer; public ptl() { timer = new Timer() { Interval = 5000 }; timer…

プロパティに設定された属性値を取得する

C#

Twitter で R.田中一郎さんがつぶやいていたのを見て、あまり確認せずに「 Attribute.GetCustomAttributes() で出来るのでは」と返してみたのですが、ちょっと気になったので手元でもやってみました。 ちょっと手間取ったので、備忘録もかねて記事にしておき…

Windows Mobile の画面方向切り替え

少しずつ .NET Compact Framework 2.0 での Windows Mobile 向けアプリケーション開発の勉強などをし始めています。 とりあえず、簡単なタイマーの作成を最初の目標に掲げて頑張ろうと云う事で、色々調べていてちょっと気になったので備忘録として。 掲題の…

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

C#

前回の記事で、VB 9.0 は拡張メソッドで自分自身を差し替えられる事を確認しました。 その原因は VB 9.0 が拡張メソッドを属性で定義しているためな訳なのですが、「この属性を使えば C# でも同じ事できるんじゃね?」って話がてくえどの雑談の中で挙がって…

連続した条件演算子の解釈

C#

三項演算子は上から評価される (R.Tanaka.Ichiro's Blog) 一瞬、何の話だか判りませんでした。条件演算子なんて普段滅多に使わないので。。。 考え方としては「上から評価される」で間違っていないけど、単に「上から評価」と言ってしまうと誤解を招く恐れが…

オブジェクトじゃんけん

勝手にじゃんけん祭り (やじゅ@アプリケーション・ラボ わんくま支局) オブジェクトじゃんけん (東方算程譚) エピさんのコードにインスパイアされて、 C# で書いてみました。 using System; namespace Jp.Mkns.Wankuma.Yaju { enum HandName { G, C, P …

カウントダウンタイマー祭りへのエントリー(保険版)

本当はもっと変なところに力を入れたやつを作成中なんだけど、期限に間に合うかとても不安なので、テスト用に作ったやつを先に載せておきます。 面倒だったので Visual Studio を使わずに全部秀丸で書いちゃいました。 一応、 C# 3.0 向け。 CountdownTimerL…

PowerShell で Twitter クライアント(ある意味詐欺版)

考えてみたら、 C# で TwitterClient クラスを作って PowerShell から LoadFile すればいいだけなんじゃ。。。 つまりは、 TwitterClient.dll とか作っておいて、 [Reflection.Assembly]::LoadFile($pwd.path + "\TwitterClient.dll") $twitter = New-Object…

LINQ to XML を試してみる

C#

ここのところ、仕事の合間に LINQ でちょこちょこと遊んでいたりします。 んで、先週末のわんくま同盟大阪勉強会 #20 のとりこびとさんのセッションでも取り上げられていた LINQ to XML を使って、はてなの RSS を取ってみました。 using System; using Syst…

LINQ っていいですね

LINQ は SQL との構文の違いが引っかかって、どうにも手を出す気になれずにいたんですが、いつまでも食わず嫌いでいる訳にもいかないので、本腰を入れて見てみました。 ……これ、無茶苦茶いいです。特に DB 房な私みたいな人間には最高かも。 サンプルコード…

MSDN(ja) にだまされたこの約 1 年をどうしてくれるのかしら - Form.ShowWithoutActivation

……久々に、しかもかなり豪快に MSDN の日本語誤訳にしてやられました。 しかも、この件を調べたのは 1 年前。 それ以来、出来ないものと諦めていたのに、こんなオチって……、と云う感じです。 該当は以下の箇所。 このプロパティは読み取り専用です。フォーム…

コントロールの拡張クラスで実装されたプロパティに対してデータバインドを行う方法

C#

以下、ネタ元。 (R.Tanaka.Ichiro's Blog) データバインディングのおべんきょ。 その1 その2 その3 その4 その5 http://blogs.wankuma.com/torikobito/archive/2007/05/30/78833.aspx:title=その6] その7 その8 その9 その10 その11 その12 …

interface の明示的な実装の例

C#

(こんにちは、 Diosan です) 明示的なインターフェイスの実装( C# プログラミング ガイド) (Microsoft) まぁ、なぜ 2 種類あるかはガイドの方を見てもらうとして。 この機能を(私が)よく利用するのは、やはり interface で規定されるメソッドの返却値…

カウントダウンタイマー (2)

C#

とりあえず、実装の為に FreeMind を使って機能メモを作成中です。 ……いや、何の面白みもないフツーのタイマーですよ。実装には数日かかりそうだけど。。。 一応、仕様が固まったところでここのネタにはする予定です。

構成ファイル取得でハマった (2)

さて、 (1) で無事成功したので、次にこれを共通ライブラリ化しようと企んだのですが、リスト形式の構成って結構使うので、折角だから Settings クラスまで共通化出来ないかな、と思ったのです。(これが混沌の始まり) って事で、まずはこんな感じで書き換…

構成ファイル取得でハマった (1)

仕事の合間に、 5/13 に書いた「構成ファイルのテクニック - 雑記 - otherwise」の実践をやっていたのですが、一寸欲張ったらうまくいかなくてハマってしまいました。 ……結局、対応策が見つからないまま断念と云う結果ではあるけど、一応、情報(後の自分へ…

static 変数の脅威

(中の技術日誌ブログ) 正直言って、最近の職業プログラマは static 変数の事を判っていない方が非常に多いです。(実体験として) そう云う環境ではレビューでも発覚しません。(レビューアすら static の事を判っていない) 以前、従事していた PJ では、…

カウントダウンタイマー

( AQUA's .NET 奮闘記) ( AQUA's .NET 奮闘記) 前回の祭り(電卓)は色々あって作り途中で放置してしまったんですが、今回はなんとか参加できるかな、と。 とりあえず仕事の合間に作ってみたら、小一時間で一応動くものは出来ました。(でも、お仕事用 P…

構成ファイルのテクニック

(おぎわら @.NET 道場 Blog (わんくま編)) 柔軟な.NET構成セクションハンドラ(.config)の作成 - インターネットコム これは参考になりそうな記事です。 ……今は寝起きで頭が回ってないので、後でちゃんと読んで試してみます。。。

比較演算

C#

ネタ元は、R・田中一郎さんのところ。 (わんくま同盟の各 blog は、 RSS 定期チェックしていたりします。参考になるところがとても多いので。)Perl だと、全ての文は整数型を返しますが何か? ……とか云うのは置いといて、この手の話は、代入演算子(多く…