Tips
まあ当たり前だが世には同じようにSusieプラグインを使う部分をライブラリ化しようと考える人は多くいるものである。実際ネットで検索しても結構多くのライブラリが見つかった。(※C#で全てを完全実装したライブラリは見つからなかった。事の始まりはC#での…
Wikipediaを見ると、私が先日来よりふざけて作っていたActionやらFuncを滅多やたらと組み合わせる行為は、数学的に立派な意味があることが判明した。詳しくはカリー化 - Wikipediaを見てほしい。カリー化というのは「引数が複数ある関数」を「引数が一つだけ…
static void Main(string[] args) { Func<Func<Func<Func<Func<Func<Func<Func<Func<Func<int>>>>>>>>>> x10 = () => () => () => () => () => () => () => () => () => () => 10; Console.WriteLine(x10()()()()()()()()()()); Console.ReadLine(); }そろそろ苦情が来るかも(笑</func<func<func<func<func<func<func<func<func<int>
以前やってたアレ(Action<T>を使い倒してみる - パジャマdeブロッガー(myugaruのヲタ日記))をラムダ式で表すとかなりすっきりとすることがわかった。たとえばx7のときは匿名メソッドだとこうなる。 Action<Action<Action<Action<Action<Action<Action<string>>>>>>> x7 = delegate(Action<Action<Action<Action<Action<Action<string>>>>>> p1) { p1(deleg</action<action<action<action<action<string></action<action<action<action<action<action<string>…
先日書いた「ラムダ式より匿名メソッドが優れてそうな点」(ラムダ式とは? - パジャマdeブロッガー(myugaruのヲタ日記))は私の認識で正解だった。 http://msdn2.microsoft.com/ja-jp/library/0yw3tz5k.aspx ラムダ式にはない機能を匿名メソッドが備えてい…
Susieプラグインを読み出すプログラムは一応テストはうまくいった。しかしやっぱり構造体の連結部分が納得のいく形にはできなかった。 以下はBitmapFileHeaderのbfとBitmapInfoHeaderのpBinfoとピクセルデータのpBmをメモリバッファmem上に連結している部分…
ラムダ式には2通りの使い方がある。 匿名delegateの進化としての使い方 式ツリーとしての使い方 式ツリーというのはコンパイラなどのように式そのものを分解して解釈するようなプログラムを書く場合に式そのものをデータとして保持するような仕組みで利用さ…
Linqがちょっとわかってきた(と思う)。 using System; using System.Linq; using System.Collections.Generic; namespace Query1 { static class Program { struct N { public int a, b, c; } static void Main(string[] args) { List<N> list = new List<N> { n</n></n>…
さて昨日はプラグインから戻ってきた3つの構造体をどうやって1つにくっつけるか?というところで止まっていた。これが難しい原因は大きく2つある。●マネージドのメモリ管理の問題 まず最初の問題はC#の文法的な問題ではなく.Netのメモリ管理に関係する問…
今日はSusieのプラグインをC#から利用してみようと思って色々調べていた。 世の中には同じことを考える人が多いらしくてたくさんの例題があった。 しかし私としては次のことを念頭に置いて話をすすめたい。 マネージドだけで作る C#だけで作る 世のサンプル…
さて昨日、Shapeには透過色の考慮が無いと書いたが正確には『Alphaブレンドを考慮して描画しない事』と『透過色の概念が無い事』の2つのことを混ぜて書いてしまっていた。さらには『結果としてのビットマップが透過機能を持つ事』と『描画ルーチンが透過の…
using System; using System.Drawing; using System.Drawing.Imaging; using System.Windows.Forms; using ImageUtils; namespace ShapeTestApp { public partial class MainForm : Form { int drawType = 0; public MainForm() { InitializeComponent(); } …
Actionは『T型の引数を一つとり返値が無い関数』を意味するdelegate型である。System.Windows.Formsに定義されている。 delegate void Action<T>(T obj);さてコンソールへメッセージを簡単に出力するConsole.Writeの使用方法を良く見てみると・・・ Console.Wri</t>…
・・・ということでさっそく作ってみた。nが増えるにつれ素晴らしいモノが出力される。念のためにx100をコンパイルしてみてtestと表示できることを確認済み。 using System; namespace garu.ActionN { static class ActionN { const int TAB = 2; const stri…
Color構造体には定義済みの名前のついた色のリストが存在している。俗にWeb140色というらしい。これを一覧したい場合には次のようにやる。 using System; using System.Drawing; using System.Reflection; namespace garu.ColorList { static class ColorLis…