C#
www.meilcli.net かなり前にC#のUTF-8関連の対応でUnicodeの1文字(scalar value)を表す型としてUnicodeScalarがデザインスペックで提案されているという記事を書きましたが、どうやらUnicodeScalarではなくRuneという名前になりそうです(Twitterでそういうツ…
Try-Patternについて言及したら、ふとTupleでメソッドの返り値を実質複数にするよりTry-Patternで参照(実質ポインター)を使った方が早いんじゃね?と思ってしまったのでベンチマーク取ってみました。 検証対象は [MethodImpl(MethodImplOptions.NoInlining)]…
プログラミングする上でネーミングは重要ですよね?しかしネーミングは大変ですよね? という感じなとこで比較的センスが良い.NETのネーミングを一覧化して集計取ってみたらいいんじゃね?と思いついたので.NET CoreのAssembly引っ張ってきて計測してみまし…
最近個人的なアーキテクチャー設計で確立してきたRepository層とService層についてちょっとだけ書いておきます。 Background アプリケーション想定 UWP, iOS, Androidあたり レイヤーアーキテクチャーを想定 MVPとかMVVMとか 特にロジック部分はアプリケーシ…
新年あけましておめでとうございます。時が過ぎるのは早くてもう2月ですね すいません、深刻なネタ不足で「週1を目標にC#記事を書く」といいつつ1カ月ちょっと放置してました 2月からは週1で書けるよう若干ネタを貯めてるのでたぶん復帰できます。まぁ小ネタ…
気が付いたらWyamがついに.NET Core対応してました! Release 2.0.0 · Wyamio/Wyam · GitHub .NET Core対応はv2.0.0ですがすぐにv2.1.0がリリースされる早業っぷり。しかも.NET Core Global Toolsに対応していてコマンドラインでのビルドが簡単になってます…
.NET Core 2.1から.NET Core Global Toolsというものが追加されました。 それによってNuGetを使ってコマンドラインツールを提供できるようになるみたいです。今回はコマンドラインの引数を簡単にパースしてくれるMcMaster.Extensions.CommandLineUtilsを使い…
AndroidのCustomView/CustomLayoutを作るには沼が深いのでそれなりの情報をまとめておきます まだ完全に理解ができてないので詰めが甘いところがあるかもしれませんが、基本は抑えていきたいと思います 公式のドキュメントはここ developer.android.com Cust…
事の発端 <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> <background android:drawable="@color/IconLauncherBackground"/> <foreground android:drawable="@mipmap/IconLauncherForeground"/> </adaptive-icon> Xamarin.Androidでこんな感じに配置したリソースがmipmap…
仕事中に無意識にif (x?.y?.z is int value)(zはint?)みたいなコードを書いてしまい、ちょっと怪しかったのでいつもお世話になっているSharplabで確認してみたらなんかすごい最適化がされてるということを発見したのでその話 前置き この話はC# 7.3 コンパイ…
過去少し記事で触れた程度のasync/awaitですが、実は卒論の研究対象にするぐらいには大学時代からC#の沼に浸かっていたのですが、たまには内部展開をじっくり観察しとこうかなということで書いておきます。 ↓いちおう過去に触れた記事 blog.meilcli.net blog…
唐突ですが、最近やっと仕事でもXamarin.Androidを使い始めました。 仕事で書いてるプロジェクトではMVVM的な感じでViewModel側にReactivePropertyを使っていて、View側を担当しているのでViewModel側が用意したReactivePropertyを購読してやればいいのです…
Xamarin.Android 9.0 - Xamarin Xamarin.Androidのリリースノートを見ていたらいつのまにかにBindingとCode-Behindが追加されていたので試してみました。 xamarin-android/LayoutCodeBehind.md at master · xamarin/xamarin-android · GitHub スペックなどは…
csharplang更新されてないかなーとみてたらC# Language Design Meetingsが更新されてたのでそれの10/15と10/17の分の内容を紹介します。 C# Language Design Notes for Oct 15, 2018 csharplang/LDM-2018-10-15.md at master · dotnet/csharplang · GitHub F…
C#のStringが扱う文字コードはUTF-16ですが、UTF-8が広く使われるようになった現状ではUTF-8→UTF-16の変換コストなどがかかりパフォーマンス上の懸念点となっていました。 そこで最近のパフォーマンス改善の一環として、C#にUTF-8な文字列を扱えるようにしよ…
.NETのクラスライブラリ設計 開発チーム直伝の設計原則,コーディング標準,パターン作者: Krzysztof Cwalina,Brad Abrams出版社/メーカー: 日経BP社発売日: 2016/02/04メディア: Kindle版この商品を含むブログを見る 『.NETのクラスライブラリ設計』という本…
blog.meilcli.net 前回の記事ではnon nullな真偽値の場合を前提として考えましたが、nullableな真偽値を考慮すると前回のような結果にならないなということで続編を書きます。 ※真偽値としてのネーミングとしてflagはナシだろ~~wという話はナシでお願いし…
unsafeとは(哲学) C#でのunsafe C#では元来、危険であると書き手が分かっていれば危険でもパフォーマンスを重視した書き方(ポインター)ができました。その危険という状態を表すのがunsafeコンテキストです。 個人的にはこの思想は気に入っていて、ポインター…
C#をコンパイルするとCILになりますが、CILの情報は結構少ないので、メモがてらに書いておきます。 基本 たとえば1 + 10とするC#コードがあったとして、これをCILにすると以下のようなものに論理的にはなります。 ldc.i4.1 ldc.i4.s 10 add 逆ポーランド記法…
今日の朝にVSTSがAzure DevOpsに改名し、OSS向けのビルド枠が時間無制限ビルドになったと聞いてさっそく試してみました。値段とかそのあたりのことはここに書いてます。そこで、今回CIビルドを試すのはこないだ作ったばかりのSharedPropertyにします。ちょう…
Androidアプリ作ってる人にView.setOnClickListenerを使ったことがない人はいないかと思います。今日はそんなsetOnClickListenerな話です。 ※ViewのクリックをハンドリングすることをClickリスナーと表現しておきます。(AndroidとXamarin.Androidで少し名前…
C#のreadonly structはフィールドすべてにreadonly制約を掛けることによって防衛的コピーを防げる素晴らしい機能ですが、その反面readonlyなため値の書き換えができなくなります。(※C#コードコンパイル時の話、リフレクション先輩のことは考えないでください…
以前すこし話に触れた構造体の防衛的コピーについてCIL的に見ていこうという記事です。 以前触れた記事: [C#]Big Size Structが値コピーでつらいならin引数で値コピーしなければいいじゃない!! < それ本当? 防衛的コピーとは 構造体の値がreadonlyではな…
前回・前々回とCILを見るツールを紹介してきたので、SharpLabを紹介しないわけにはいかないだろうということで紹介しておきます。前回: [C#]ILSpyを使ってCILを見る前々回: [C#]ReSharperを使ってCILを見る SharpLabはWebサイト上でC#のコードがコンパイル後…
前回の記事でReSharperを使ってCILを見てみましたが、ReSharperを利用すると該当ファイルのCILしか見れず、アセンブリ情報などのCILは見れませんでした。前回記事:[C#]ReSharperを使ってCILを見る そこで、ReSharper購入以前に使っていたILSpyを使って見よ…
こないだセールで買ったReSharperですが、さっそくReSharperの機能をことごとくオフにしていってしましました。(決してReSharperが重いということはない(建前)けど、VisualStudio標準のサジェストとかが優秀になってきたからそのあたりはわざわざReSharperじ…
元ネタはこちら: うさ☆うさ日記 - [C#]Xamarin.iOSでLambdaExpression.Compile()が通る件 最初に断っておきますが結構雑なベンチマーク計測してます そこで、本題の件に入る前に技術的背景。 C#でのメタプログラミングにはいろいろと方法があって、この話に…
個人的にstring.StartsWith系統どれが一番早いの選手権開きたかったので、いろいろと計測していたのですが、どうも .NET Core 2.1だけ異常に遅い場合があるという発見をしたのでメモです。 計測したのはいつも通りBenchmarkDotNetです。計測対象は以下のコー…
タイトルは半分釣りです(ごめんなさい)(半分大真面目) 【告知】Xamarin.Formsのhttps://t.co/eC46vr1kqiを強くしたようなもの(自称)としてSharedPropertyを公開しました~内部的にはUtf8JsonかSpanJsonを使うようにしてます。.NET Standard 2.0で作ってるの…
タイトルの通り黒魔術です(多分)、実行環境ごとの動作はどうなるかわかりません。 また、C#などの仕様変更で使い物にならなくなる可能性はあります。(Support extension methods everywhereの流れ次第では仕様変更が入るかもしれない) implicit operatorとは…