C#

The Future of C#のまとめ

C#

The Future of C# | pdc2008 | Channel 9 VS2010がダウンロードできないので、不貞腐れてPDC2008のヘジたんセッションをまとめてみました。ヒアリングが壊滅的に苦手なので、あまり当てにならないと思います・・・(^^;C#の進化 C#1.0 Managed Code C#2.0 Gen…

WPFの国際化対応

WinFormでは簡単に対応できるのでWPFも楽勝だと思っていたのですが、Visual Studioはあんま面倒を見てくれないです。やり方は色々ありますが、個人的には、 http://www.codeproject.com/KB/WPF/WPFLocalize.aspx この方法が良さそうに思いました。上記の記事…

DataTableにユニークキーを設定する

// なんらかのデータ検索 // 対象テーブルのキーはユニークキー(つまりキーにNull値を含む)だったとする DataTable t = Find (10); // DataTable.Mergeを使いたいのでPrimaryKeyを設定するが・・・ // このタイミングでプライマリキーに指定したカラムのAllo…

はじめてのMEFその2

MEFのドキュメントを読んでいたら、メソッドをインジェクション可能(Seasar.NETのメソッドインジェクションではない)とあったので早速実験君。 using System; using System.Reflection; using System.Linq; using System.Linq.Expressions; using System.Com…

はじめてのMEF

CodePlex Archive The Managed Extensibility Framework (MEF) is a new library in .NET that enables greater reuse of applications and components. とありますが、とりあえずDIコンテナと考えておけばOK。既に記事として取り上げたつもりでしたが、過去…

WinFormからWPFのウィンドウを表示する

C#

ちょっと悩んだのでメモ。 using System; using System.Windows.Forms; using System.Windows.Forms.Integration; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void butt…

nullオブジェクトのメソッド呼び出し

C#

ちょっとした遊び。 using System; namespace NullObject3 { class Program { static void Main (string[] args) { string s = "Hello, World"; Console.WriteLine(s.GetLength()); // null文字列のメソッドを呼び出す。 s = null; Console.WriteLine(s.GetL…

Enum.IsDefinedのパフォーマンス

C#

たまにはC#の小ネタで。

Unityその2

コンストラクタ/プロパティインジェクションを実験君。

はじめてのUnity

CodePlex Archive マイクロソフトが出しているDIコンテナですが、ちょっと興味があったので弄ってみました。http://www.microsoft.com/downloads/details.aspx?FamilyId=6A9E363C-8E0A-48D3-BBE4-C2F36423E2DF&displaylang=en&hash=aBGhzv3UZX8uqX0aMdoKbxV9…

ループ

C#

コレクションを列挙する場合、foreachを使うことが多いのですが、要素が何番目なのか欲しい場合があります。IListが相手ならforで回せば良いですが、IEnumerableの場合だと自分でループカウンタを用意することになって、ちょっと不格好です。しかし、C#3.0だ…

C#で作成したアセンブリをExcelから呼び出す

ちょっと仕事で必要だったので調べてみました。基本的にはCOMから.NET呼び出しなのでCCWとなるのですが、ググってみるとVB.NETにてComClass属性を使うという例を発見。ComClass属性はVBのみなのでC#からは直接Excel公開は出来ない、という感じでした。が、納…

AVIファイルからBMPを作成する

C#

id:Seasonsさんとこより。 http://d.hatena.ne.jp/Seasons/20071223/1198420293今度は、Excel上で動画ですか! どーやっているんだろう・・・私が実現するとしたら、 AVIファイルからBMPを作成する BMP単位にExcelシートを作成する タイミングを取ってシート…

http://d.hatena.ne.jp/akiramei/20071129/1196358506 昨日の日記に菊池さんから反応が! catch句はできるだけ例外に依存しないか、依存しても抽象的な例外に依存しましょう ほぼ全面的に同意。違うのは全ての例外をキャッチするのに catch (Exception) { ..…

Exceptionから継承しない値のthrow

C#ではExceptionクラスもしくは、その派生クラスしかthrow出来ませんが、C++/CLIだとそれ以外の値もスロー可能です。 // This is the main DLL file. #include "stdafx.h" #include "MyDLL2.h" public ref class Foo { public: static int Divide(int x, int…

アプリケーションの状態を保存(補足)

http://d.hatena.ne.jp/akiramei/20071125/1195977405 ↑のフォロー。 保存先にバージョン情報を持っているので、アセンブリのバージョン番号が変わると設定値が無効になってしまいます。その場合、旧バージョンから値を移行させる必要があります。

アプリケーションの状態を保存

例えば、前回起動した時刻や起動回数など、実行時間を超えてアプリケーションの状態を保存したい場合があります。その場合、外部記憶(ファイルやDBなど)にシリアル化などして保存する(いわゆる永続化)ことになりますが、.NET2.0だと、SettingsBase(Applicati…

GetDelegateForFunctionPointer

C#

気づいてなかったのですが、.NET2.0からは、関数ポインタをDelegateへ変換して呼び出せるようになったんですね。.NET1.1のころはManaged C++を使ったり、ヘルパDLLを用意したりする必要があったのが、C#だけで解決できるようになったのは良いですね。試しにS…

拡張メソッドによるチェーンメソッド

C#

ふと、MSDNマガジンの記事を読んでいたら目に付きました。ネーミングルール決めてusingで処理を入れ替えとか出来そうな気がしましたが、トリッキーなのでちょっとダメかな?(^^; using System; using System.Collections.Generic; using System.Collections;…

DLLの動的読み込み

C#

折角、Seasar Conferenceに来たのだから、Javaのセッションも1つぐらいは・・・と、ひがさんのを。Hot Deployの実現方法がリクエスト毎に新しいクラスローダを作成して云々(良く分かってない)というのを聞いて、.NETだとリクエスト毎にAppDomainを作成する…

要素の削除

C#

http://blogs.wankuma.com/episteme/archive/2007/11/12/107752.aspx επιστημηさんとこから。yield好きな私だと、 using System; using System.Collections.Generic; class Program { static IEnumerable<T> Remove<T>(IEnumerable<T> objs, Predicate<T> pred) { foreac</t></t></t></t>…

NullObjectパターン

C#

http://d.hatena.ne.jp/akiramei/20071010/1192038349 ↑はるか昔に似たようなことやった気がしていたのですが、はてなで日記を書く前でした。折角なので、数年間更新していない自分のHPからコードを持ってきてGeneric対応させてみました。当時(2003年)は、…

boxingとToString()

C#

以下のようなコードがあったとします。 using System; using System.Diagnostics; class Program { private const int LOOP = 10000000; static void Main () { string s; int n; Stopwatch sw = new Stopwatch (); GC.Collect (); GC.WaitForPendingFinaliz…

要素が0個、1個、N個

C#

http://blogs.wankuma.com/episteme/archive/2007/10/28/104563.aspx επιστημηさんのところより。StringBuilderだとメモリが気になる人向け。 using System; using System.Collections.Generic; class Program { static void Dump<T>(IEnumerable<T> objs) { IEnum</t></t>…

ServerGCとWorkStationGC

NET 共通言語ランタイム (CLR) には、サーバーとワークステーションの 2 つの GC モードが存在します。ServerGC と呼ばれるサーバー用のモードは、マルチプロセッサ コンピュータ上で拡張性のあるスループットを提供するように最適化されています。一方、Wor…

ガベージコレクタ

実はあまりよく調べたことがないので、復習を兼ねて。GCが動作するタイミングは、 Generation0がいっぱいになる GC.Collectの明示的な呼び出し OSからのメモリ不足通知 AppDomainがアンロード CLRが終了 というケースがありますが、その中の1についてみてみ…

delegateで引数を使わない場合

C#

よく忘れるのでメモ。 using System; delegate bool Less(int x, int y); class Program { static void Main() { Less less1 = delegate (int x, int y) { return x < y; }; Less less2 = delegate (int x, int y) { return false; }; // 引数を使わない場合…

??演算子とNullObject

C#

http://d.hatena.ne.jp/akiramei/20040810/p3 ※リンク先が間違っていたので修正。 3年前のネタの焼き直し。C#2.0から加わった??演算子ですが、nullだったらデフォルト値を返させることができます。ふと、NullObjectが使えたら、もう少し活用出来たんではな…

Excelを扱う

C#

先日の日記のようにCOMやMicrosoft.Office.Interop.Excelを使えば良いのですが、解放処理が面倒だったりします。もし、Excelを使う用途がデータの読み書きだけならADO.NETでやってしまうのも一つの手です。 using System; using System.Data; using System.D…

クラスの別名宣言

C#

http://wesnerm.blogs.com/net_undocumented/2007/10/type-names.htmlより。 using System; using System.Collections.Generic; // NG // using T = List<string>; // 次のように書かなければならない // using T = System.Collections.Generic.List<T>; namespace MyNa</t></string>…