C#

C# 7.2 Span<T>とMemory<T>

C#

C#7.2で Span<T>とMemory<T>が入ってくるとな。 C# - Span のすべて: .NET の新しい頼みの綱を探索する Spanについては去年こちらの記事 ufcpp.net を読ませていただいて、すごくいいんだけど、Span<T>は使いどころの制約もすごくて正直あんまり使えんなあ、と思って</t></t></t>…

C#ではpublic公開したいときはinterfaceでなくclassが推奨されているのはあまり知られてない気がするのと、C# 6か7でInternal implementation onlyが導入されそうな件 (タイトル長すぎ)

.NET C#でライブラリを公開するときはinterfaceを公開したほうがいいという意見を見かける。UnitTestとかでmock/stubのしやすさからinterfaceを使った方が便利なことは確かにある。 でもC#では、interfaceは後からメソッド追加すると、interfaceをimplements…

すっかり存在を忘れていたこと CancellationToken.Register(Action)

TaskをキャンセルするのにつかうCancellationTokenですが、キャンセルされたとき呼ばれるdelegateを登録しておくことができるんですよね。そういえば.NETにTaskが追加された頃になんかで見たことあったかもしれないけど忘れていました。 var cts = new Cance…

C#のイベントパターン(EventHandler パターン)は、今となっては、利用することを強調するほどのパターンじゃ無くてよいのでは、と思うのですよ(タイトル長い)

だって、 Func デリゲート とか Action デリゲート などができたので、EventHandlerとEventArgsは"過去の遺物"扱いでよいかと。 マイクロソフトさん、イベントパターンについては、プログラミングガイドや、クラス ライブラリ開発のデザイン ガイドラインで…

C# EventWaitHandleクラスにはAsync無いのか。ThreadPool.RegisterWaitForSingleObject

C# でイベントEventWaitHandle,(C#言語のeventデリゲートじゃなくてWin32イベントのほうね)のシグナルを待つのに、非同期のXxxAsync()は無いのか...。せめてeventデリゲートあるかと思ってた。Processクラスには終了待つイベントハンドラあるのにね。 AutoRe…

プログラミングC# 第7版

第6版持ってるけど、第7版も出たら買おうと思ってたので。C#5(.NET4.5)対応した内容を是非読みたかった。 Rxがまるまる1章分ある。RxとTask(やasync/await)の扱いの比重は、個人的には逆のほうがうれしかったな。Rxは確かにおもしろいけど。 とはいえ、C#を…

NUnitのTestCaseとTestCaseSourceはいっしょに使える

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>

INotifyPropertyChangedの実装を便利にしてくれるPropertyChanged.Fody

これ便利です。でも、 VSでWin8ストアアプリを作るとコードテンプレートに含まれてるらしいBindableBaseクラスとか、 WPFでもBindableBaseを使ってINotifyPropertyChangedを実装する - SourceChordを作ってみている方とか、 キモはCallerMemberNameAttribute…

今日知ったこと C# Encoding.BigEndianUnicode

ビッグエンディアンのユニコード文字列用のEncoding.BigEndianUnicodeプロパティあったんだ。UnicodeEncodingクラス

Task.Run()はTask.Factory.StartNew()の代わり、ではない。

Task.Run()を最初見たとき、ああ、これからはTask.Factory.StartNew()じゃなくてこれを使うようになるんだな、とか思ったのですが、Task.Run()はTask.Factory.StartNew()でできること全てができるわけじゃないので、Run()は、あくまでTaskScheduler.Default…

Reactive Extensionsがオープンソースに

ほう。こちらで公開されてます。Rxどうなってんのか実装見たいと思うことがあったので、うれしいかも。でも、元々.NETのソースコードはこちらでも見れるけどね。んでhttp://referencesource.microsoft.com/netframework.aspxを久々に見たら、.NET4.5もう追加…

Reactive Extensions v2.0 RC がリリースされてた

ことがBlogにポストされてた。まだ試してないけど。時間の扱いとエラーの扱いが変わったのかな。っていうか、長すぎるよこのポスト。長すぎて読みきれない。今日はもう寝る。

今日知ったこと Environment.UserInteractive プロパティ

なんか初めて見た気がしたので。 Environment.UserInteractive プロパティ (System) WindowsのプロセスでUIを持ってるかどうかは知りたいこともあるよね。あるかな? あと、Debugger クラス (System.Diagnostics)も知ってると便利なときあるよね。 if (!Debu…

今でも.NET Remotingのほうがよかったのにと思いたくなるんだWCF

このあたりなんか特に。 WCFはサーバ側のオブジェクト参照をクライアント側で透過的に扱えない。ギャフン。オブジェクト指向で"リモート"っていったらそれ基本でしょ。...残念。 まあ、WCFになってよかったと思う人のほうが世の中多いんでしょう(疑わしい)。…

いつか調べたい T4 (Microsoft Text Template Transformation Toolkit)

これ、ASP.NETのテンプレートエンジンを単独でも使える感じのものですね。いろいろな用途が考えられるので、ちょっとおもしろいかも。

プログラミング .NET Framework 第3版

今までその値段と重さから買うのをためらっていたが、なんか勢いで買ってみた。 タイトルにはC#とは書いてないが(原題は"CLR via C#"なのに!)、明らかにC#言語上級者向けの本。C#について、もう書籍からじゃ得るもの無いかな、と思っている人があえて読んで…

いつか調べたい System.IO.Log

.Net Frameworkでログといえば、まずはTraceSource クラス (System.Diagnostics)でしょうが、ほかにも、System.Diagnostics.Eventing 名前空間もあるし、名前的にそのものズバリのSystem.IO.Log 名前空間もある。System.IO.LogはVista以降でないとCommon Log…

Windows8 Consumer PreviewからIAsyncInfo.Start()メソッドがなくなりました

Developer Preview から Consumer Preview へのアプリの移行の「Hot start async model」にも書いてあるのですが、IAsyncInfo.Start()メソッドがなくなりました。以前は、WinRTのAPIにたくさんあるXxxAsync()メソッドの戻り値、IAsyncOperationやIAsyncActio…

Reactive Extensions v2.0 Beta

Reactive Extensions v2.0 Betaでました。 って言うか、Visual Studio 11 Betaに入ってないのかよRx。 てっきり入ってると思って、アセンブリの参照を追加しようと探しちゃったよ。

C# 5.0 async awaitと例外処理

EDIT 2014.2.15 今見るとasync/awaitで例外処理がまるでできない的に書いていますが、これは悪い例ですので。こような記事Async/Await - 非同期プログラミングのベスト プラクティス参照してください。 asyncメソッドの外側で例外がキャッチできません。 sta…

C# 5.0 async await

単純なコンソールアプリをこんなふうに書くと、 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>…

C# TaskとCancellationToken

.Net 4から、タスクのキャンセルができるようになりましたが、ちょっとわかりづらかったところ。 CancellationTokenSource source = new CancellationTokenSource(); CancellationToken token = source.Token; Task.Factory.StartNew(() => { //... if (toke…

Reactive Extensions (Rx)

これは知ったとき萌えた。 http://msdn.microsoft.com/en-us/data/gg577609 http://www.atmarkit.co.jp/fdotnet/introrx/index/index.html まだなじめてないけど。自分の場合、仕事で気合い入れて使わないとなかなか身につかないんだ。

日付の計算って実装したもん負けだと思う

だから、その言語で標準的なライブラリとして提供してほしい。 日付時間関連って、きっと世界中で毎日、星の数ほどのバグコードが生成されている気がする。1/31の1ヶ月後とか、閏年とか、サマータイムとか、スクラッチから書いてバグらないなんて難しい。 意…

プログラミングC# 第6版

第4版は持っていて5版はパスしたので、第6版は買ってみた。ざっと斜め読みした。 C#を学ぶには今もよい本だと思う。けど、やっぱ1冊ではカバーしきれない。版を重ねても、C#(と.Netが)が拡張される勢いをカバーし切れてない。例えばコレクションの初期化を独…

Metroに乗り換えるのにコード変更が必要なこと

http://msdn.microsoft.com/en-us/library/windows/apps/br230302(v=VS.110).aspx あーあ。