タグ

ブックマーク / ufcpp.net (10)

  • Visual Studio の .NET Core 化まだー?

    C# 配信でちょくちょく出てくる話題の1つに 「Visual Studio (for Windows)はいまだに .NET Framework だから」 というものがあります。 もちろん、「.NET Core 化はよ」みたいな文脈です。 Visual Studio は .NET 製アプリの中でも大規模なものの1つなわけで、ドッグフーディング的な意味で早く .NET Core 化してほしいというのもありますし。 .NET Framework → .NET 5 → .NET 6 → .NET 7 と、毎度2・3割は速くなってるというベンチマークがあるわけで合計すると2倍以上速いかもしれず、 普通にパフォーマンス上の理由でも早く .NET Core 系になってほしかったりもします。 そしてもう1個、 実は .NET Framework の方は Unicode 8.0 で止まっているという話があっ

    Visual Studio の .NET Core 化まだー?
  • 最初の C# プログラム(.NET 6 新テンプレート)

    .NET 6 ではプロジェクト テンプレートが更新されて、かなりシンプルになります。 例えば、コンソール アプリの場合(dotnet new console コマンドで生成)は(コメント行を除けば実質)以下の1行だけの C# ファイルが生成されます。 Console.WriteLine("Hello, World!"); 先日の .NET 6 Preview 7 から、コンソール アプリと Web アプリがこの新テンプレートになっています。 トラッキング issue を見るに、他のタイプのプロジェクトも同じ方針で書き換え中みたいです。 今日はこの新テンプレートがらみで、背景とか、内部挙動的な話とか、Preview 7 から正式リリースまでの間に掛かる予定の変更の話とか。 旧テンプレート まあ、これまでのテンプレートが以下のようなものでしたから、ずいぶんとすっきりしました。 using Sy

    最初の C# プログラム(.NET 6 新テンプレート)
  • ピックアップRoslyn 10/31: csharplang の運営方針とかトリアージとか

    また何件かまとめて、C# Language Design Meeting 議事録を紹介。 October 12th, 2020 October 14th, 2020 October 26st, 2020 主に、csharplang の運営方針に関する話と、こまごまとトリアージ話。 (この他に、 October 21st, 2020ではプライマリ コンストラクターの話があったり、 Meeting 議事録とは別に派生型の網羅性の話が出てたりするんですが、 またちょっと話が大きくなりそうなので別の回で改めて。) これの割と冒頭で話してるんですけども、csharplangで、Community Ambassador (コミュニティ大使)を設けようという話が出ていました。 (実際、ほぼ即日、何名か任命。) C# はオープンソース開発されているといっても、マイクロソフトの C# チームが責任を負ってど

    ピックアップRoslyn 10/31: csharplang の運営方針とかトリアージとか
  • 関数

    概要 同じプログラムコードを複数の場所で何度も利用したい場合があります。 例えば、今まで説明してきた中で、たびたび「入力を促すメッセージを出力して、整数を入力してもらう」という場面が出てきました。 そのために何度も同じようなソースコードを書いてきました。 「反復処理」のところでも説明しましたが、 同じコードを複数の箇所に書くのはプログラムを管理していく上で好ましくありません。 そこで、こういう頻繁に使われる機能をまとめて、何度も呼び出せるようにしたのが関数(function)です。 (追記したい) 何度も出てくる処理でなくても、 処理に名前が付く単位で関数化すべき。 明確な名前を付ける(名前が付く単位で区切る)のがよいコードを書くコツ。 ポイント 何度も出てくる処理は関数化する。 数学の「関数」から取った名前。プログラミング用語的には、他に、サブルーチン、プロシージャ(手続き)、メソッド等

    関数
    itotto
    itotto 2020/08/28
    expression-bodied関数
  • .NET Core 3.0 をもって .NET Framework からの移植作業は完結

    corefx で以下のようなアナウンスが。 .NET Core 3.0 concludes the .NET Framework API porting project buildの時点で .NET を .NET Core ベースに一化、.NET Framework は 4.8 をもって最後にするという話があったわけですが、 改めてというか、総括的なアナウンスです。 API 数 まず、.NET Framework から .NET Core に移植してきた API 数の総括。 メソッドのオーバーロード1個1個を「1 API」とカウントしてるんだともいますが、以下のような数字が書かれています。 .NET Core 1.0 時点では1.8万個 .NET Standard 2.0 では .NET Framework、.NET Core、Xamarin の共通部分として3.8万個 Windows

    .NET Core 3.0 をもって .NET Framework からの移植作業は完結
  • C# で、同じソースコードから常に同じバイナリを生成する

    昔、gist にだけ置いてて、そういえばブログに書いてなかったものを思い出したので書いておくことに。 (一応、部分的には言及したことがあるんですけど、ちゃんとした話はしたことがなかったはず。) 決定論的ビルド 3年くらい前まで、C# コードをコンパイルすると、ソースコードを一切書き換えていなくても、生成結果の exe/dll や pdb のバイナリが変化していました(決定性(deteminism)がない)。 原因は以下の2つです。 バイナリ中に埋め込まれる GUID にタイムスタンプと乱数から生成される値を使っていた デバッグ用のファイル情報がフルパスで埋め込まれていた GUID の方はタイムスタンプと乱数なので当に致命的で、ローカルで再コンパイルしても毎回バイナリが変化していました。 フルパスの方は基的には pdb (デバッグ用シンボル情報)だけの問題なんですが、 exe/dll で

    C# で、同じソースコードから常に同じバイナリを生成する
  • await って言う単語

    C# 5.0で非同期メソッドが導入されてから、 正式リリースを基準にしても5年以上、 最初の発表からだと7年以上経っています。 で、5年経っても、「なんて読むの」「asyncのaとawaitのaは違う」などなどが「定番ネタ」として定期的に出てくるわけですが。 特に、ECMAScript 2017がasync/awaitを導入したり、 Unity 2017がやっとC#のバージョンを6.0に上げれる感じになってきたり、 5年の断絶を経て去年からasync/awaitに触れる人が増えているようです。 5年も離れたら、世代断絶も起こりますよね… そりゃ、「定番ネタ」が改めて増えもしますよね… ということで、5年くらい前に同じようなことをどこかで書いてるはずなんですけど、改めて。 英単語 えいしんく まず読み方。 async: エイシンク await : アウェイト ってやつ。async の方が「ア

    await って言う単語
  • 絵文字の連結と、書記素クラスター判定

    みんな絵文字好きすぎだろ… というRT状況なわけですが。 emoji zwj sequences 元々、👪 (U+1F46A)という、1文字で家族を表す絵文字があったわけですが。 「白人の絵しかないのはおかしい」とか「LGBT に配慮しろ。なぜ男女ペアしかないんだ」とかいろいろと地雷になってしまった結果、 合字で解決しようとかいう仕様が Unicode に入ってしまって今に至っているわけですが。 ちなみに、単に合字になるというだけじゃなくて、 「合字は1文字として扱え」という仕様も決まっています。 仕様は以下のページにあり。 Unicode® Standard Annex #29 UNICODE TEXT SEGMENTATION まあ、仕様があるといってもそれにアプリが対応しているかどうかというとまちまち。 以下の動画でのChromeの動作みたいに、「ページ中ではちゃんと1文字として扱

    絵文字の連結と、書記素クラスター判定
  • dynamic(C# によるプログラミング入門)

    概要 Ver. 4.0 .NET Framework 4.0 では、クラスライブラリに Dynamic Language Runtime (DLR)が追加されました。 DLR は、.NET Framework 上で PythonRuby のような動的言語を動かすためのライブラリで、 これに伴い、C# 4.0 にも、動的言語との連携を強化するための仕組みが追加されました。 C# 4.0 で導入された、動的言語との連携の仕組みの1つが動的型付け変数(dynamic キーワード)です。 動的型付け変数を使うことで、動的な(コンパイル時にメンバー情報がわからない型の)メンバーアクセスが可能になります。 動的型付け変数 dynamic キーワードを使うことで、動的型付け変数を定義できます。 使い方としては、dynamic x; というように、変数宣言の型のところに dynamic キーワードを

    dynamic(C# によるプログラミング入門)
    itotto
    itotto 2017/10/23
    "C# の dynamic は、「型が動的」というよりは、「静的な型に対する動的コード生成」と言った方が正確"
  • 型付き参照

    アンダーバー2つ(__)から始まっていて、いかにも隠し機能ですが、図1のように、一応、Visual Studio のサポートもかかります。 といっても、コード補完(IntelliSense)には出ず、キーワードのハイライトのみです。 隠しキーワード(__arglist) ちなみに、標準仕様外の機能ですが、Mono のC#コンパイラーもこの機能対応していて、こちらでも普通に使えます。 ※ 補足: 内部的な話 参照が作れないのは C# の言語仕様上の制限で、.NET の 「IL」 の仕様上は参照があります。 C# でも、内部的には(コンパイル結果の IL 的には)、値型の this 参照や、値型の入れ子の書き換えなどで参照が使われます。 struct A { public int x; public int Y() { return this.x * this.x; // この this はメ

    型付き参照
    itotto
    itotto 2016/06/30
    おもしろいし便利そうだけど使うことはなさそう
  • 1