C#
「時間抽象化」ってパッと見なんのことかわかりませんでしたが、DateTime.nowとか時関係の実装のテストで困るやつの対応なのですね。おおっ、それはうれしい。 「時間抽象化」 www.infoq.com まだ公式ドキュメントには使用例とかがほとんど無くてちょっとわ…
久々にC#をリハビリだ。最近はなるべく紙の本を買わないようにしているのだが、あえて前に買った本の新しい版を買おう。前回第7版を買ったのは8年前だ、さぞ版も進んだろう。Amazonで検索して...あれ...まだ第8版...。第7版と第8版の間隔が8年! この業界で8…
C#7.2で Span<T>とMemory<T>が入ってくるとな。 C# - Span のすべて: .NET の新しい頼みの綱を探索する Spanについては去年こちらの記事 ufcpp.net を読ませていただいて、すごくいいんだけど、Span<T>は使いどころの制約もすごくて正直あんまり使えんなあ、と思って</t></t></t>…
.NET C#でライブラリを公開するときはinterfaceを公開したほうがいいという意見を見かける。UnitTestとかでmock/stubのしやすさからinterfaceを使った方が便利なことは確かにある。 でもC#では、interfaceは後からメソッド追加すると、interfaceをimplements…
TaskをキャンセルするのにつかうCancellationTokenですが、キャンセルされたとき呼ばれるdelegateを登録しておくことができるんですよね。そういえば.NETにTaskが追加された頃になんかで見たことあったかもしれないけど忘れていました。 var cts = new Cance…
だって、 Func デリゲート とか Action デリゲート などができたので、EventHandlerとEventArgsは"過去の遺物"扱いでよいかと。 マイクロソフトさん、イベントパターンについては、プログラミングガイドや、クラス ライブラリ開発のデザイン ガイドラインで…
C# でイベントEventWaitHandle,(C#言語のeventデリゲートじゃなくてWin32イベントのほうね)のシグナルを待つのに、非同期のXxxAsync()は無いのか...。せめてeventデリゲートあるかと思ってた。Processクラスには終了待つイベントハンドラあるのにね。 AutoRe…
第6版持ってるけど、第7版も出たら買おうと思ってたので。C#5(.NET4.5)対応した内容を是非読みたかった。 Rxがまるまる1章分ある。RxとTask(やasync/await)の扱いの比重は、個人的には逆のほうがうれしかったな。Rxは確かにおもしろいけど。 とはいえ、C#を…
private enum MyEnum { AAA, BBB, CCC } private static IEnumerable<string> GetCaseSource() { return Enum.GetNames(typeof(MyEnum)); } [Test] [TestCase("abc")] [TestCaseSource("GetCaseSource")] public void FuncTest(string arg) { Assert.なにか; }</string>
これ便利です。でも、 VSでWin8ストアアプリを作るとコードテンプレートに含まれてるらしいBindableBaseクラスとか、 WPFでもBindableBaseを使ってINotifyPropertyChangedを実装する - SourceChordを作ってみている方とか、 キモはCallerMemberNameAttribute…
ビッグエンディアンのユニコード文字列用のEncoding.BigEndianUnicodeプロパティあったんだ。UnicodeEncodingクラス
Task.Run()を最初見たとき、ああ、これからはTask.Factory.StartNew()じゃなくてこれを使うようになるんだな、とか思ったのですが、Task.Run()はTask.Factory.StartNew()でできること全てができるわけじゃないので、Run()は、あくまでTaskScheduler.Default…
ほう。こちらで公開されてます。Rxどうなってんのか実装見たいと思うことがあったので、うれしいかも。でも、元々.NETのソースコードはこちらでも見れるけどね。んでhttp://referencesource.microsoft.com/netframework.aspxを久々に見たら、.NET4.5もう追加…
ことがBlogにポストされてた。まだ試してないけど。時間の扱いとエラーの扱いが変わったのかな。っていうか、長すぎるよこのポスト。長すぎて読みきれない。今日はもう寝る。
なんか初めて見た気がしたので。 Environment.UserInteractive プロパティ (System) WindowsのプロセスでUIを持ってるかどうかは知りたいこともあるよね。あるかな? あと、Debugger クラス (System.Diagnostics)も知ってると便利なときあるよね。 if (!Debu…
このあたりなんか特に。 WCFはサーバ側のオブジェクト参照をクライアント側で透過的に扱えない。ギャフン。オブジェクト指向で"リモート"っていったらそれ基本でしょ。...残念。 まあ、WCFになってよかったと思う人のほうが世の中多いんでしょう(疑わしい)。…
これ、ASP.NETのテンプレートエンジンを単独でも使える感じのものですね。いろいろな用途が考えられるので、ちょっとおもしろいかも。
今までその値段と重さから買うのをためらっていたが、なんか勢いで買ってみた。 タイトルにはC#とは書いてないが(原題は"CLR via C#"なのに!)、明らかにC#言語上級者向けの本。C#について、もう書籍からじゃ得るもの無いかな、と思っている人があえて読んで…
.Net Frameworkでログといえば、まずはTraceSource クラス (System.Diagnostics)でしょうが、ほかにも、System.Diagnostics.Eventing 名前空間もあるし、名前的にそのものズバリのSystem.IO.Log 名前空間もある。System.IO.LogはVista以降でないとCommon Log…
Developer Preview から Consumer Preview へのアプリの移行の「Hot start async model」にも書いてあるのですが、IAsyncInfo.Start()メソッドがなくなりました。以前は、WinRTのAPIにたくさんあるXxxAsync()メソッドの戻り値、IAsyncOperationやIAsyncActio…
Reactive Extensions v2.0 Betaでました。 って言うか、Visual Studio 11 Betaに入ってないのかよRx。 てっきり入ってると思って、アセンブリの参照を追加しようと探しちゃったよ。
EDIT 2014.2.15 今見るとasync/awaitで例外処理がまるでできない的に書いていますが、これは悪い例ですので。こような記事Async/Await - 非同期プログラミングのベスト プラクティス参照してください。 asyncメソッドの外側で例外がキャッチできません。 sta…
単純なコンソールアプリをこんなふうに書くと、 class Program { static void Main(string[] args) { FuncAsync(); Console.ReadLine(); } static async void FuncAsync() { WriteLine("FuncAsync()Begin"); int r = await Task.Run<int>(() => Worker()); WriteL</int>…
.Net 4から、タスクのキャンセルができるようになりましたが、ちょっとわかりづらかったところ。 CancellationTokenSource source = new CancellationTokenSource(); CancellationToken token = source.Token; Task.Factory.StartNew(() => { //... if (toke…
これは知ったとき萌えた。 http://msdn.microsoft.com/en-us/data/gg577609 http://www.atmarkit.co.jp/fdotnet/introrx/index/index.html まだなじめてないけど。自分の場合、仕事で気合い入れて使わないとなかなか身につかないんだ。
だから、その言語で標準的なライブラリとして提供してほしい。 日付時間関連って、きっと世界中で毎日、星の数ほどのバグコードが生成されている気がする。1/31の1ヶ月後とか、閏年とか、サマータイムとか、スクラッチから書いてバグらないなんて難しい。 意…
第4版は持っていて5版はパスしたので、第6版は買ってみた。ざっと斜め読みした。 C#を学ぶには今もよい本だと思う。けど、やっぱ1冊ではカバーしきれない。版を重ねても、C#(と.Netが)が拡張される勢いをカバーし切れてない。例えばコレクションの初期化を独…
http://msdn.microsoft.com/en-us/library/windows/apps/br230302(v=VS.110).aspx あーあ。