タグ

C#に関するnaga_sawaのブックマーク (43)

  • 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
    naga_sawa
    naga_sawa 2020/12/05
    知っていれば簡潔に書けるようになったけれども/浦島太郎してると読めなくなってるという/disposable eventとか公式で入らんかなぁ
  • System.Threading.Channelsのメモ-01 (基本的な使い方) - いろいろ備忘録日記

    概要 インストール サンプル 概要 最近、Goでよく遊んでいるのでGoのチャネルみたいなものが C#で無いかなーって探してみたら、以下がありました。 www.nuget.org そのものスバリの名前のライブラリがあるじゃないですか。知らなかったです。 で、.NET Blog の方にも紹介記事がありました。 devblogs.microsoft.com 上の記事とかまだちゃんと読めていないのですが、後で読む。 また、以下のようなめっちゃ丁寧に書いてくださっているシリーズ記事もありました。 deniskyashif.com deniskyashif.com deniskyashif.com これも後できっちり読む。 とりあえず、今回は基的な使い方の勉強です。 インストール インストールは NuGet で インストールすれば終わりでした。 プレリリースで、5.0.0 preview が出ている

    System.Threading.Channelsのメモ-01 (基本的な使い方) - いろいろ備忘録日記
    naga_sawa
    naga_sawa 2020/06/07
    awaitable な Producer-Consumer Queue System.Threading.Channels.Channel<T> /Net Framework 4.6以降が必要
  • System.Threading.Channelsを使う - Qiita

    はじめに マルチスレッドでの非同期データ受け渡しライブラリのSystem.Threading.Channels(corefxlabにあったころはSystem.Threading.Tasks.Channels)が、corefxに統合され、この度4.5.0-rc1としてリリースされたので、 さすがに大きな変更はないだろうと踏んで使い方などを書く。 参考: corefxlabにあったころの記事 何ができるようになるか 非同期でのプロデューサー・コンシューマーパターンを作るのがより容易になる。 特徴としては以下のようになる 順序は必ずFIFO(先入れ先出し) 読み:書き=M:1、1:N、M:Nのパターンに対応 asyncと親和的な設計 パフォーマンスに配慮 netcoreapp2.1では更に特化実装で速い 注意: 現在netcoreapp2.1で、ConcurrentQueueが特定のケースでne

    System.Threading.Channelsを使う - Qiita
    naga_sawa
    naga_sawa 2020/06/07
    awaitable な Producer-Consumer Queue System.Threading.Channels.Channel<T> /Net Framework 4.6以降が必要
  • Complete Guide on How To Turn A Monitor On/Off/Standby

    naga_sawa
    naga_sawa 2020/06/06
    SendMessageでのディスプレイ電源操作
  • Programmatically enter Connected Standby in C#

    So it seems there are many questions asking how to detect when a system enters Connected Standby, but I'm looking to actually cause it to happen. Reason is, simply calling the SetPowerState(Sleep) methods in C# no longer works if Connected Standby is enabled (doesn't do a darn thing whatsoever), and my app that puts the system to sleep therefore no longer works. Note: I don't want to wake up the s

    Programmatically enter Connected Standby in C#
    naga_sawa
    naga_sawa 2020/06/06
    Win10モダンスタンバイ機ではSetSuspendStateでのスリープ移行ができない問題/SendMessageでディスプレイOFFするとConnectedStanby状態になる
  • 技術解説 – 非同期

    .NETの世界での「非同期」とは、非同期処理(主に非同期I/O)を効率よく、しかも最小のプログラミングコストで実現するため、コンパイラとライブラリの補助で実現する機能の事です。C#やVB.netにおいて、「async-await」キーワードを使って、ほぼ従来通りのフローコーデイングを実現可能で、コンパイラが自動的に複雑なステート管理に展開してくれるため、人的なエラーを起こしにくく、コード量も飛躍的に削減出来ます。 これまでの非同期処理のセオリーは、プロセスレベルやスレッドレベルで、いわゆる「ワーカープロセス・スレッド」を使ってオフロード処理する方法が主流でした。この方法の問題点は、メインの処理とワーカーとの間で行わなければならない同期処理や、ワーカー処理がI/Oのブロッキングを保持するためだけにCPUリソースを消費(プロセスやスレッドを使う)してしまう事でした。.NETの非同期処理は、非同

    技術解説 – 非同期
    naga_sawa
    naga_sawa 2017/07/18
    await 時点で元メソッドはリターン(仮)する/非UIな一般的な非同期処理とする場合はConfigureAwait(false)
  • LINQ to Objects と Java8-Stream API の対応表

    Java8 で filter や map が使えるようになったー! というわけで .NET の LINQ to Objects との対応表を作ってみました。 2018.2.7 - Kotlin も追記しました! LINQ - Enumerable クラス (System.Linq) Java8 - Stream (Java Platform SE 8 ) Kotlin - kotlin.collections, kotlin.sequences らへん の比較です。 kotlin.collections は遅延ではないので注意です。 Java の方は Collectors (Java Platform SE 8 ) も使います。 まだ試したものは少ないので間違ってるかもしれない & カテゴライズが適当 なので、編集リクエストしてもらえるとありがたいです。 機能 LINQ Java8 Kot

    LINQ to Objects と Java8-Stream API の対応表
    naga_sawa
    naga_sawa 2017/07/13
    Java9 になると SkipWhile, TakeWhile 相当が増えたはず
  • nullが生まれた背景と現在のnullの問題点 ― null参照問題(前編)

    Cの系譜を継ぐC#ではnullが長らく使い続けられてきたが、最近ではその存在が大きな問題だと認識されている。前後編でこの問題を取り上げ、今回(前編)はnullを取り巻く事情について考察する。 ← 前回 連載 INDEX 次回 → 近年、nullの存在は、billion dollar mistake(10億ドル規模の損失をもたらす過ち)と呼ばれるくらい忌避されるものになっている。 nullは、低コストでそこそこ安全に参照を扱えるという意味で悪くない妥協ではあるが、技術が進歩した現在ではもう少し賢い参照の扱い方があるはずである。C#のように、これまでnullを認めてしまっているプログラミング言語で、今からそれを完全になくすというのは現実的ではないが、nullに起因する問題を少しでも避ける手段はこれからでも追加していけるだろう。 今回は、nullが生まれるに至った背景から始め、nullが抱える問

    naga_sawa
    naga_sawa 2017/01/11
    メソッドシグネチャでnull可否を書けるようになるだけで入口と返り値の定形nullチェックは省けるのでメソッドシグネチャ定義部だけに導入するとか/コレクションを渡した時の要素のnullチェックが残るけれども
  • C#を使って最小化した時にタスクトレイに格納する - 酢ろぐ!

    以下のサンプルコードは、フォームを最小化した時にタスクトレイに入れて、タスクトレイのアイコンをダブルクリックされるとフォームを表示する処理です。 最小化した時にタスクトレイに格納する private void Form1_FormClosing(object sender, FormClosingEventArgs e) { // トレイリストのアイコンを非表示にする notifyIcon1.Visible = false; } private void Form1_ClientSizeChanged(object sender, EventArgs e) { if (this.WindowState == System.Windows.Forms.FormWindowState.Minimized) { // フォームが最小化の状態であればフォームを非表示にする this.Hide();

    C#を使って最小化した時にタスクトレイに格納する - 酢ろぐ!
    naga_sawa
    naga_sawa 2016/08/02
    最小化時にタスクトレイに収納する
  • Windows ソケット エラー コード (Winsock2.h) - Win32 apps

    ほとんどのWindows ソケット 2 関数は、関数が戻るときにエラーの特定の原因を返しません。 詳細については、「 Winsock Errors の処理 」トピックを参照してください。 WSAGetLastError 関数は、呼び出し元のスレッドで発生した最後のエラーを返します。 特定のWindows Sockets 関数がエラーが発生したことを示す場合は、この関数を直ちに呼び出して、失敗した関数呼び出しの拡張エラー コードを取得する必要があります。 これらのエラー コードと、エラー コードに関連付けられている短いテキストの説明は、 Winerror.h ヘッダー ファイルで定義されています。 FormatMessage 関数を使用して、返されたエラーのメッセージ文字列を取得できます。 ソケット アプリケーションを Winsock に移植するときにエラー コードを処理する方法については、

    Windows ソケット エラー コード (Winsock2.h) - Win32 apps
    naga_sawa
    naga_sawa 2016/07/13
    Windows ソケットのエラー コード
  • How to rethrow InnerException without losing stack trace in C#?

    naga_sawa
    naga_sawa 2016/07/12
    stacktraceを壊さずにInnterExceptionを再スローするにはExceptionDispatchInfo.Capture(e.InnerException).Throw();
  • 次期C#とパフォーマンス向上(前編)―― 必要となった背景と改善内容

    機能や構文ばかりが注目されるが、プログラミング言語ではパフォーマンスも重要だ。パフォーマンス向上に対する要求が高まってきた背景と、向上のための改善方法を説明。C# 7以降で追加が検討されている新機能にも言及する。 ← 前回 連載 INDEX 次回 → 近年、さまざまなプログラミング言語では、ソフトウェア開発の生産性を向上するべく便利な機能が実装されてきた。その一方で、書かれたプログラムのパフォーマンスへの配慮も重要である。「確かに書きやすいが、出来上がったものが遅くてつらい」ということになっては言語の魅力は半減する。 C#では、これまでも、パフォーマンスに配慮した言語機能をいくつか提供してきている。例えば、値型(構造体)がその代表例だ。ジェネリックが型消去ではない実装になっているのもパフォーマンス上の理由である。利用場面によってはイテレーターや非同期メソッドなどもパフォーマンス向上に寄与す

    naga_sawa
    naga_sawa 2016/05/12
    メモリ確保解放のオーバヘッド削減してパフォーマンスを上げていく方向性
  • 次期C# 7: 複数データをまとめるための言語機能、タプル型

    メソッドが複数の値を戻す場合など、複数のデータを緩くまとめて、扱いたい場合はよくある。C#の次バージョンではこれを簡潔に記述するための機構として「タプル型」が導入される。 ← 前回 連載 INDEX 次回 → 現在、C#への機能追加に当たって、いくつかのテーマが設けられている。その中でも大きなものの1つが「データ処理」である。データ処理というと、C# 3.0でLINQと関連して多くの言語機能が取り入れられたが、まだまだ検討すべきことは多く残されている。 今回は、そんなデータ関連の提案の1つであるタプル型について紹介していこう。 タプルとは タプル(tuple)という単語は、倍数を表す「double, triple, quadruple, ...」などを一般化したN-tupleという言葉に由来する。単純に「複数のもの」という意味の言葉だ。つまり、「データを複数束ねたもの」程度の意味であり、「

  • 次期C# 7: 式の新機能 ― throw式&never型/式形式のswitch(match式)/宣言式/シーケンス式

    Build Insiderオピニオン:岩永信之(2) 次期C# 7: 式の新機能 ― throw式&never型/式形式のswitch(match式)/宣言式/シーケンス式 ―― さまざまな式が書けて、もっと便利になるC# ――

    naga_sawa
    naga_sawa 2015/12/27
    なんか式だらけになりそうだな/簡潔に書けるならそれはそれでいいけれど
  • ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発

    これから C# 開発を始める方、あるいはチームの開発品質をあげたい リーダー・マネージャ向けに、C# の勉強方法を解説した、約2時間の研修用の資料です。Read less

    ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
    naga_sawa
    naga_sawa 2015/05/01
    一般的なアプリケーション向け
  • 連載:C# 5.0&VB 11.0新機能「async/await非同期メソッド」入門 - @IT

    メディア ローコード/ノーコードセントラル クラウドネイティブセントラル 連載一覧 @IT Special セミナー ホワイトペーパー クラウド AI IoT アジャイル/DevOps セキュリティ キャリア&スキル Windows 機械学習 eBook その他 Server & Storage HTML5 + UX Smart & Social Coding Edge Java Agile Database Expert Linux & OSS Master of IP Network Security & Trust System Design Test & Tools Insider.NET ブログ AI for エンジニアリング サプライチェーン攻撃 脆弱性管理 OSS管理 Windows 11/365 GitHub その他の特集 @IT アジャイル/DevOps Insider.

    naga_sawa
    naga_sawa 2015/02/18
    async await/裏側ではステートマシンに展開されるのね
  • C# 6.0で知っておくべき12の新機能

    Visual Studio 2015正式版のリリースで利用可能になったC#言語の最新バージョン「6.0」の新機能を解説する。CTP 5→正式版に合わせて改訂。 連載 INDEX 次回 → 「C# 6.0」と呼ばれているC#の最新バージョンは、Visual Studio 2015*1で利用可能になっている。 この最新バージョンでは、「.NET Compiler Platform」(コード名:“Roslyn”)と呼ばれる新しいコンパイラーが導入されており、静的解析APIの提供など、コンパイラーまわりに大きな変更が行われている。一方、言語機能に目を向けると、async/awaitという大きな機能が追加されたC# 5.0に比べると、一つ一つの新機能自体は小さい。しかし、それらはプログラムをより書きやすくするための機能なので、C#開発者にとってはやはり重要なアップデートとなっている。 そして、これら

    naga_sawa
    naga_sawa 2015/02/10
    C#6.0 の新記述方法
  • 連載:C# 4入門 - @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用のアドイン。プレゼンテー

    naga_sawa
    naga_sawa 2015/01/12
    C#4.0
  • 連載:C# 3.0入門 ― @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用のアドイン。プレゼンテー

    naga_sawa
    naga_sawa 2015/01/12
    C#3.0
  • 連載:C# 2.0入門 ― @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用のアドイン。プレゼンテー

    naga_sawa
    naga_sawa 2015/01/12
    C#2.0