タグ

C#に関するmas-higaのブックマーク (22)

  • async/await 比較(C#, JavaScript, Python) - Qiita

    using System.Windows.Threading; Dispatcher.CurrentDispatcher.InvokeAsync(async () => { // いろいろな処理... // メッセージループを終了させる Dispatcher.CurrentDispatcher.BeginInvokeShutdown(DispatcherPriority.Normal); }); Dispatcher.Run(); WPF とか WinForms とかでは、フレームワークがすでにメッセージループを回しているので、自分で Dispatcher.Run() する必要はない。 JavaScript 自分で書く必要なし。 Python asyncio.run(最初に実行するasync関数)

    async/await 比較(C#, JavaScript, Python) - Qiita
  • Newtonsoft.Json から System.Text.Json へ移行したら JSON のデシリアライズが失敗した

    開発チームの川江です。Cosmos DB を多用する関係で、JSON のシリアライズ・デシリアライズを行うコードを近頃よく書いています。 C# で JSON を扱う場合のライブラリは、以前は Newtonsoft.Json (Json.NET) が定番でしたが、今では .NET 標準の System.Text.Json 名前空間を使えるようになりました。しかし既存のコードを移行する場合、両者の振る舞いの違いに注意が必要です。実際の移行時に、Newtonsoft.Json だと問題なくデシリアライズできていたクラスが、System.Text.Json にしたら例外が出るようになった、という問題がありました。 System.Text.Json ではデシリアライズに失敗するケース 分かりやすくするため、以下のシンプルな JSON を例にします。

    Newtonsoft.Json から System.Text.Json へ移行したら JSON のデシリアライズが失敗した
  • C#におけるnull合体演算子 ?? の優先順位と結合規則 - Qiita

    概要 稿では,C#におけるnull合体演算子の優先順位と結合規則について,例とともに簡単に述べる.また,結合規則については演習問題を用意した. 詳細 null合体演算子とは ?? のことである. a ?? b は,a がnullのときに b,そうでないときに a となる: a\ ??\ b= \begin{cases} a & (a\neq\text{null}) \\ b & (a=\text{null}) \end{cases}

    C#におけるnull合体演算子 ?? の優先順位と結合規則 - Qiita
    mas-higa
    mas-higa 2022/12/08
    ?? の優先順位は設計ミスとしか思えんわ
  • [C#]最新言語仕様を使った『宣言的プログラミング』でバグが少なく可読性の高い高品質なコードを書こう - Qiita

    はじめに LINQの登場後、C#は地道な進化を続け、C# 7で登場したタプルと分解、パターンマッチング、C# 8で登場したswitch式、C# 8,9で強化されたパターンマッチング などによって、C#のプログラミングスタイルは劇的に変化しました。 昔では考えられなかったようなスタイルのコードが記述可能になり、可読性やコードの安定性が飛躍的に向上しています。 そのキーポイントとなるのが、「宣言的プログラミング」です。 この記事では、最新のC#を使ってコードを宣言的に書く手法を紹介します。 やってる人は自然とやっている事だとは思いますが、そうではない人もいると思いますので、そういう方の参考になればと願っています。 宣言的プログラミングとは 宣言的プログラミングとは、「どうやってやるか(how)ではなく何をしたいか(what)を書く」と良く言われますが、なんとなくあいまいです。 これをもう少し具

    [C#]最新言語仕様を使った『宣言的プログラミング』でバグが少なく可読性の高い高品質なコードを書こう - Qiita
    mas-higa
    mas-higa 2022/03/09
    immutable == 宣言的 というのには違和感があるなぁ。switch 式は書式が煩雑すぎて読みにくい。以前から Linq は積極的に使ってるけど、遅延評価を止めるタイミング間違えるとバグるし宣言から受ける印象と違って(文字数
  • C# 1.0 と C# 9.0 で同じプログラムを書いてみよう - Qiita

    この記事は C# Advent Calendar 2020 の 2 日目の記事です。1 日目は @RyotaMurohoshi さんの C# 9.0で加わったC# Source Generatorと、それで作ったValueObjectGeneratorの紹介 でした。 私の記事では、.NET Framework 1.0 の頃の C# 1.0 と今の .NET 5 時代の C# 9.0 で同じお題をもとにプログラムを書いてみて比べてみようと思います。これを書くにあたって事前に xin9le さんと 岩永さんに色々見てもらいました!感謝! ではやってみましょう! 記事を書く前の感覚では LINQ の有無と async/await の有無が大きいだろうな…と思ってます。 プロジェクトの設定 Windows 10 に .NET Framework 1.1 SDK を入れようと思えば入れることが出来

    C# 1.0 と C# 9.0 で同じプログラムを書いてみよう - Qiita
  • .NET API ブラウザー

    .NET API ブラウザー .NET API ブラウザーへようこそ。Microsoft から提供される .NET ベースの API がすべてここで揃います。 下のボックスに入力すると、マネージド API の検索を始めることができます。 API ブラウザーの詳細については、こちらのブログ投稿をご覧ください。 フィードバックがあれば、GitHubMicrosoftDocs/feedback リポジトリで新しい問題を作成してください。

    .NET API ブラウザー
  • 私がC#の勉強のために必ずクローンしているGitHubリポジトリを紹介します - Alternative Architecture DOJO

    こんにちは。MLBお兄さんこと松村です。 今回は私がPCに必ずgit cloneしているC#系のGitHubリポジトリを紹介します。 どういったリポジトリであるか、リポジトリをクローンしている目的も併せて書いてみます。 とりあえず詳細はいいから、どんなリポジトリがあるか知りたい方はこちらをご覧ください。 gist.github.com それでは列挙していきます。(アルファベット順です) 常にクローンするもの dotnet-presentations/aspnetcore-app-workshop github.com ASP.NET Core 2.2でSPAのWebアプリケーションを作るワークショップです。 dotnet-presentations/aspnetcore-concepts-workshop github.com 前述の dotnet-presentations/aspnet

    私がC#の勉強のために必ずクローンしているGitHubリポジトリを紹介します - Alternative Architecture DOJO
    mas-higa
    mas-higa 2020/01/14
    タイトルの日本語が理解できない
  • C#リフレクションTIPS 55連発 - Qiita

    タイトルの通り、C#のリフレクションのTIPS集です。 これから示すコードは、以下のusingディレクティブが前提のコードとなってます。 using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Reflection; 普段はvarキーワードをよく使ってますが、ここでは変数の型がわかるようにvarキーワードの利用はできるだけ控えています。 それと、いくつかのコードはdynamic使ったほうが簡単に書ける場合もありますが、あくまでもリフレクションのサンプルということでご容赦を。 1. 型名から型情報を得る

    C#リフレクションTIPS 55連発 - Qiita
  • 列挙可能から完全なるモノまで – IEnumerableの探索 – C# Advent Calendar 2014

    この投稿は、C# Advent Calendar 2014 の14日目の記事です。 IEnumerableにまつわるアレやアレ こんにちは! いつもはAsyncとLINQの事をしゃべったり書いたりしています。「列挙可能から完全なるモノまで – IEnumerableの探索」というお題で書いてみようと思います。 .NETでは、LINQにまつわるインターフェイスがかなり多く含まれています。その中でも、IEnumerableインターフェイスの継承グラフに存在する様々なインターフェイスを、どのように使い分けるべきか、と言うのが分かりにくいかも知れません。沢山のインターフェイスが定義されているのは、歴史的な事情もあります。 LINQ to ObjectやLINQ to Entitiesなど、一般的に使用されているLINQの背景には、「列挙可能である」という性質があります。この事は、以前にLINQの勉

    列挙可能から完全なるモノまで – IEnumerableの探索 – C# Advent Calendar 2014
  • C#で作られたプログラムをデコンパイルしてみよう - ほげほげー

    この記事はC#アドベントカレンダー2014の15日目の記事です。 C# Advent Calendar 2014 - Qiita デコンパイルとは 大雑把に言うと、コンパイルされたプログラム(exe, dllなど)から、元のコードを復元する行為のことです。 特にC#やJavaの様に中間言語に翻訳された状態でコンパイルされるような言語の場合は 元のコードにかなり忠実に復元されます。 記事ではC#に限らず、.NETに関わる言語全般のデコンパイルをする方法を書いていきます。*1*2 中間言語(IL) C#(や、VB.NETなど)では、コンパイル時に直接ネイティブコードにするのではなく、 一旦中間言語(以下、IL)という形にし、実行時にネイティブコードを生成するJITコンパイル方式を採用しています。 事前コンパイルという手段も用意されていますが基的にはILを出力します。 ところで、ネイティブコ

    C#で作られたプログラムをデコンパイルしてみよう - ほげほげー
  • 今日からはじめる LINQPad

    この記事は C# Advent Calendar 2014 の 6 日目の記事です。LINQPad の基礎的な機能について解説します。 LINQPad をご存知の方はもしかしたら多いのかもしれず、あるいは少ないのかもしれませんが、このツール、LINQPad という名前ではありますが LINQ とはあまり関係ありません。名前で結構損をしてるのではないかと常々思ってしまうので、ちょっと残念な感じではあります。 もちろん LINQ のお勉強にも便利なのは間違いないのですが、お手軽な C# / F# / VB コードの実行環境として、また、.NET オブジェクトを見やすく出力することのできるツールとして、十分に便利なツールです。Visual Studio の C# Interactive もしばらく出てこなさそうですし、ちょっとしたコード パッドとしてだけでも十分有用ではないかと思います。 ですが

    mas-higa
    mas-higa 2014/12/09
    "安定性は実際のところどちらも変わらない感じ" えっ
  • Emacs で C# を書こう - Qiita

    はじめに OmniSharp はエディタ上で intellisence に近い機能を実現するための OSS ソフトウェアです。 今回は emacs から OmniSharp を使うことについて紹介します。 紹介のためのスクリーンキャスト 短い動画ですが、 omnisharp-add-dot-and-auto-complete で補完 omnisharp-run-code-action-refactoring で using System.Linq を追加 omnisharp-rename で名前変更 (15行目のnumは影響を受けない!) omnisharp-auto-complete-overrides で ToString をオーバーライド を行なっています。この他にも 定義ジャンプ ソリューション内のファイルを開く ビルド 単体テスト実行 などなど便利コマンドがたくさん用意されている

    Emacs で C# を書こう - Qiita
    mas-higa
    mas-higa 2014/12/09
    ふつうに Emacs で C# 書いてるよ。補完は M-/
  • [.NET][C#]XMLをクラスに変換する/クラスをXMLに変換する

    XMLデータをクラスオブジェクトに変換(デシリアライズ)したり、逆にオブジェクトをXMLに変換(シリアライズ)したりしてみます .Net FrameworkにはXML DOMを扱うクラスが用意されています(System.Xml名前空間) 通常は、このSystem.Xml名前空間のクラスを使ってXMLの内容を解析したり出力したりしますが少々面倒だったりします そこで、XMLSerializerの出番です System.Xml.Serialization名前空間にあるこのクラスを使えば、XMLデータから自作クラスのオブジェクトを生成したり、またはその逆ができます 目次 Page.1 構造が単純なXMLデータをクラスオブジェクトに変換する Page.2 階層化されたXMLデータをクラスオブジェクトに変換する Page.3 繰り返しタグ(属性付き)のあるXMLデータをクラスオブジェクトに変換する

  • (.Net)アプリケーションの設定ファイルを作ろうとしたけど。。。 | old_3流プログラマのメモ書き

    Windowsアプリケーションの設定先としては ini ファイル、そしてレジストリへと遷移してきました。 .Net では XML ベースのアプリケーション構成ファイル(アプリケーション名.config)と user.config が設定先として推奨されてるようです。 しかし、このアプリケーション構成ファイル、user.config がなかなか曲者でハマりました。(VistaのUACも少し絡んでます。) まず、アプリケーション構成ファイル(アプリケーション名.config)はWindowsユーザにかかわりなくアプリケーション全体の設定を保存するファイルとなります。 DBの接続文字列など、スコープがアプリケーションになっているものがアプリケーション構成ファイルに保存されます。(Visual Studioのデザイナでは接続文字列のスコープは変更できません。しかし、(VB.Net)DBへの接続文字

    (.Net)アプリケーションの設定ファイルを作ろうとしたけど。。。 | old_3流プログラマのメモ書き
  • C#-Ruby比較早見表 - Archives/Ruby - 総武ソフトウェア推進所

    C#とRubyの対比・比較表、いわゆるチートシートです。 「C#で言うところの…」と「Rubyで言うところの…」に対応する記述・クラス等を対比表としてまとめたものです。 Rubyスクリプトを書いているときに「C#で言うところのアレはRubyではどう書くんだっけ」ということが多いので、すぐに参照できるようよく使う部分を中心にまとめてあります。 全般的なことすべてが完全に一致するものではなく、ある程度似た動作をするものを記述している箇所があります引数や記述を一部省略しているので、そういう部分はニュアンスで読んでくださいメソッドがクラス/インスタンスかどうか(Rubyでは破壊的/非破壊的かどうか)はあまり区別せずに記述しています特に対応するものが無い場合は空欄にしてあります C#についてC# 3.0、.NET Framework 2.0(と一部Mono 2.4)をベースに書いています Ruby

    mas-higa
    mas-higa 2013/05/13
    べんり!!
  • 問題の検証に c# のローカル DTD ファイルと XML ファイル

    mas-higa
    mas-higa 2013/05/09
    XML ってクソだと思うの。
  • http://atnd.org/events/33905

    http://atnd.org/events/33905
  • C#は強い型付けの言語?それとも弱い型付けの言語? - 平々毎々(アーカイブ)

    Eric Lippert's Blogを勝手に翻訳。 ■C#は強い型付けの言語?それとも弱い型付けの言語? そうだよ。 ■その答えじゃ何もわからない。 そんなことはない。おもしろいことに、もしさっきの質問の「それとも」を「そして」に変えたとしても*1、答えは同じだ。 ■へ?つまりC#は強い型付けの言語でもあり、弱い型付けの言語でもあるということ? そう。C#は強い型付けの言語でもあり、弱い型付けの言語でもある。 ■混乱してきた。 僕もね。思うにあなたは「強い型付け」と「弱い型付け」をどういう意味で使ったのかをちゃんと話すべきだよ。 ■ううう。実はその言葉の意味をちゃんとは知らないから、その質問をするべきなのは私の方だね。ある言語が「強い型付け」または「弱い型付け」って実際どういう意味なの? 「弱い型付け」の方は「この言語の型検証システムが気に入らない」で、「強い型付け」の方は「この言語の型

    C#は強い型付けの言語?それとも弱い型付けの言語? - 平々毎々(アーカイブ)
    mas-higa
    mas-higa 2012/10/18
    つまり、C# は気に入らない。
  • C# によるプログラミング入門 / ++C++;// 未確認飛行 C

    C# によるプログラミング入門です。C# 初心者の方はもちろん、これからプログラミングを始めようという方も対象としています。

    C# によるプログラミング入門 / ++C++;// 未確認飛行 C
    mas-higa
    mas-higa 2011/09/20
  • 連載:[完全版]究極のC#プログラミング - @IT

    第2回 簡潔なコーディングのために (2017/7/26) ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21) Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基の「キ」をマスターしよう 第1回 明瞭なコーディングのために (2017/7/19) C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える Presentation Translator (2017/7/18) Presentation TranslatorはPowerPoint用のアドイン。プレゼンテー