タグ

.NETに関するryskosnのブックマーク (78)

  • (C#) #if DEBUG を使わないデバッグ分岐 - ネコのために鐘は鳴る

    デバッグとリリースで処理を変えたいときは普通は大体以下のように書きます。 public void Foo() { #if DEBUG Console.WriteLine("This is Debug."); #else Console.WriteLine("This is Release"); #endif } 正直見にくいです。コンパイルされない側の記述は Visual Studio のコードアナリティクスもシンタックスハイライトもなくなり、非常に使いにくい。当然、関数名変更などのリファクタリングも効かなくなり、いつの間にかリリースビルドが通らないコードになっていたり、なんてこともあり得ます。 これぐらいの分岐なら全然いいですが、もっといくつもシンボルがあって大量に分岐があちこちに書かれているコードは非常に苦痛。おいおいここはC++じゃないんだぜ なので、以下のように書きます。 inte

    (C#) #if DEBUG を使わないデバッグ分岐 - ネコのために鐘は鳴る
    ryskosn
    ryskosn 2024/06/13
    なるほど~!
  • .NETの正規表現 - キャプチャ

    .NETの正規表現 .NETでは正規表現が標準で提供されます。 あらゆる環境で利用されることを想定しているようで、数ある正規表現エンジンの中でもかなり強力な部類だと思います。 マッチした結果はMatchクラスからアクセスできます。 キャプチャ ()でキャプチャできるのは他のエンジンと同じです。(の出現順に1から番号が振られます。Groupsプロパティでアクセスできます。 (?:(\d+) )+のように複数回マッチしたら…最後の値が得られる、だけじゃないんです。Groupクラスは最後の値を指すValueプロパティだけでなく、Capturesプロパティがあり、一連のマッチにアクセスできます。 (?<name>subexpression)や(?'name'subexpression)で名前付きキャプチャもできます。これも他の言語にもあります。()と異なり連番ではなく名前でアクセスできます。 名前

    .NETの正規表現 - キャプチャ
  • 今日からできる!簡単 .NET 高速化 Tips -2024 edition-

    C# / .NET における、パフォーマンス改善の Tips をお届けします。 これを見れば、効率良く 80 点を取ることができるようになるはずです!

    今日からできる!簡単 .NET 高速化 Tips -2024 edition-
  • 【C#】Dependency Injection(依存性の注入)とは - Annulus Games

    今回の記事はDependency Injection(依存性の注入)について。 設計についての学習を始めると「依存性の逆転」「Dependency Injection(依存性の注入)」「DIコンテナ」など言葉を耳にする機会が増えてくると思います。適切にDIを扱えるようになると設計の柔軟性が飛躍的に向上するため、是非とも習得したい知識です。 今回は「そもそもDependency Injection(依存性の注入)とは何なのか」という話から始め、サービスロケータやDIコンテナについてまで解説していきたいと思います。 またこの記事ではSOLID原則(特に依存性の逆転)等の知識を前提として進めるため、設計何もわからん!という方は以下の記事から読むことをお勧めします。記事の後半で依存性の逆転について触れているため、その辺りを押さえてからDIについて学ぶと良いでしょう。

    【C#】Dependency Injection(依存性の注入)とは - Annulus Games
  • .NETを使った別プロセスのOfficeの自動化が面倒なはずがない―そう考えていた時期が俺にもありました。 - Qiita

    $app = New-Object -ComObject Excel.Application $books = $app.Workbooks $book = $books.Open("test.xlsx") Write-Host $book.Sheets["Sheet1"].Cells[1,1].Text $book.Close() $app.Quit(); Excelを立ち上げて、シートのセルを表示し、Excelを終了するコードです。 来であれば、なんの問題もありません。 しかしながら、起動したExcelのプロセスは終了せずタスクマネージャーに残り続けます。 今回はExcelで説明しましたが、これはWordでもOutlookでも同様です。また、PowerShellでなくC#で同様の実装をしても、この問題は発生します。 何が問題なのか? Office オートメーションで割り当てたオブジェ

    .NETを使った別プロセスのOfficeの自動化が面倒なはずがない―そう考えていた時期が俺にもありました。 - Qiita
  • Xid.Net by Yortw

    ryskosn
    ryskosn 2022/04/08
  • .NET/C#関連の情報収集に利用するサイトのまとめ(随時更新) - Qiita

    記事の概要 c#/.NET関連の情報収集に利用しているサイト/ブログ/動画/コミニティ/講演を共有する。 また、開発で利用するサイトも記載する。 記事の用途 新しい技術情報を収集するサイトの蓄積。 公式サイト、非公式サイトからの情報検索時間の短縮する。 Microsoftの公式ドキュメントは膨大すぎて、目的の記事に辿りつくのに時間がかかる。 公式サイトだけで問題を解決できず、知見者にヒントをもらって解決したことがある。非公式サイトも載せる。 過去に見つけ、役立ったサイトの蓄積。 「あれ、どこ?」と検索する時間を省く。 情報収集用 近年のソフトウエア技術トレンド 情報サイトInfoQが発表した2020年以降の技術トレンドレポートを下記リンクに記載する。 技術調査のご参考に。 近年のソフトウエア技術トレンド Microsoftの公式情報 ドキュメント No リンク 説明

    .NET/C#関連の情報収集に利用するサイトのまとめ(随時更新) - Qiita
  • 【トラブル回避】端末依存のC#処理に注意! - Qiita

    記事は、サムザップ Advent Calendar 2021の12/7の記事です。 はじめに C#の一部APIには、端末の設定によって結果が変わる挙動をするものがあります。 今回はそんな危うい挙動をする処理と、それを端末の設定に依存させないで行う方法を紹介したいと思います。 端末の言語設定に依存した処理

    【トラブル回避】端末依存のC#処理に注意! - Qiita
  • .NET非同期処理(async-await)を制御する、様々な方法

    async-awaitベースの非同期処理を制御する方法をまとめました。コードはわざと冗長に書いています。 概要: Taskベースのワーカースレッド生成 他の非同期I/Oと連携してタスクを制御する方法 TaskとLINQを応用して、多量の計算を安全に並列実行させる方法 Taskを使っていない非同期処理をTask化する方法 非同期処理のキャンセルの実現方法 WinRT・ユニバーサルWindowsアプリケーション(UWP)での非同期処理とTaskの連携方法 読む前に補足 C#でTaskやasync-awaitを使った非同期処理の書き方を探しているのであれば、ポイントに絞って書いた、こちらの記事をお勧めします: 「できる!C#で非同期処理(Taskとasync-await)」 Taskクラスの使用例として、ワーカースレッドを起動するという例が良く挙げられます。記事も最初にTask.Runによるワ

    .NET非同期処理(async-await)を制御する、様々な方法
  • 非同期処理、なにもわからない

    最近のお仕事で、C#の非同期処理の書き方が分からずに、溶岩地帯に自爆していくコードを沢山みるようになったので、ケースとして日常風の記事にしてみました。 どんな風にハマってしまい、どうやって解決するのかが分かると思います。 結論 先に書いておきます。 Task.Run()を使ってはいけません Task.Result, Task.Wait()を使ってはいけません Threadクラスを使ってはいけません async-await構文だけを使って書きます async voidにするのは特殊な場合だけです がんばれー、わかってしまえば難しくない! 補足: もしあなたがJavaScriptで非同期処理を書いた事があるなら、その知識をそのまま生かせます。 JavaScriptではTaskの代わりにPromiseを使いますが、Promiseには上記1,2,3は存在しません。しかし、それで困ることはありません

    非同期処理、なにもわからない
  • [C#]クラス自体がinternalなときのUnitTest - Qiita

    UnitTest関連記事 やりたいこと 以前、private、internalなメソッドをUnitTestしたいときのやり方を調べたが、クラス自体がinternalだったときに、そもそもUnitTest側コードからそのクラスが見えないため、テストできなかった。何とかUnitテストしたい。 やり方 InternalsVisibleTo属性を使う。 まず、dll側のAssenblyInfo.csを開く。 そこに、下記の一文を追加する。 「UnitTestProject1」の部分は、internalクラスを公開する公開先のアセンブリ名を書く。 これで、公開先のアセンブリ(ここでいうところの「UnitTestProject1.dll」)からは、Class1に含まれるinternalなクラスが見えるようになる。 コード https://github.com/tera1707/WPF-/tree/ma

    [C#]クラス自体がinternalなときのUnitTest - Qiita
    ryskosn
    ryskosn 2021/11/19
    internal になっている dll 側の AssenblyInfo.cs に書き加える
  • .NET 6とVSCodeでデスクトップアプリ(ランチャー) - Qiita

    無地のウィンドウが起動します。 最大化ボタンのスナップレイアウトメニューが表示される、標準的なウィンドウです。 一通り動作確認したら閉じてください。 ■画面の作成 「MainWindow.xaml」を開き、画面を作成します。 <Window x:Class="WrapLauncher.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:WrapLauncher" xmlns:mc="http://schem

    .NET 6とVSCodeでデスクトップアプリ(ランチャー) - Qiita
  • .NET Core 3.0時代のメモリ管理

    .NET Conf 2019 meetup in AICHI IMemoryOwner<T>で所有権を説明しようとしたRead less

    .NET Core 3.0時代のメモリ管理
  • Span<T>を使うべき5つの理由 - Qiita

    C# 7.2からSpan構造体というのが使えるようになって、こいつが結構すごいやつなんだが、いかんせん日語記事が少ない。なら自分で書いて広めるしかないんじゃい!ということで、なんとなくでも凄さが伝わればいいなって思います。 マサカリぶんぶん大歓迎。 はじめに:Hello World ランタイムが.Net Core2.1以降なら標準で使える。 それ以外の場合はNugetでSystem.Memoryというパッケージを入れよう。 それから、言語の方もC# 7.2以上が必要。 Visual Studio 2017でプロジェクトを作った場合、デフォルトではC# 7.0になっているので引き上げておこう。 で、Span<T>ってなんぞ? A. とりあえず、配列っぽい何かと思っておけばいい。 正確に言うなら、配列の一部分のビューである。 次のコードでは、arrayのビューとしてspanを作っている。 u

    Span<T>を使うべき5つの理由 - Qiita
  • SpanとかMemoryとかIntPtrとかArrayの変換方法チートシート - Qiita

    SRIS.MemoryMarshal.TryWriteメソッド、 SRIS.MemoryMarshal.Write()

    SpanとかMemoryとかIntPtrとかArrayの変換方法チートシート - Qiita
    ryskosn
    ryskosn 2021/10/16
  • Spectre.Console - Welcome!

    Spectre.Console is a .NET library that makes it easier to create beautiful console applications. Spectre.Console.AnsiConsole Features Easily output text with different colors and even styles such as bold, italic and blinking with a Rich inspired markup language. Supports 3/4/8/24-bit colors in the terminal with auto-detection of the current terminal's capabilities. Render complex widgets such as t

    ryskosn
    ryskosn 2021/09/07
  • JsonPrettyPrinter 1.0.1.1

  • C#(.NET)コレクションの使い分けヒント - Qiita

    概要 .NETには多数のコレクションが用意されている。 データが少ないうちは全部List<T>でも何とかなるが、データの数が1000個、10000個、100000個、と大きくなるにつれ、使用するコレクションによってパフォーマンスに大きな差が出てくる。 パフォーマンス特性を理解するには内部データ構造や計算量を知るのが一番よいが、まずはざっくり検討できるようヒントを作ってみた。 ※内部データ構造や計算量については C#(.NET)コレクションの使い方と計算量 に書いた。 Genericコレクションの分類と使い分け List:データの順番が重要 型 適する用途

    C#(.NET)コレクションの使い分けヒント - Qiita
  • 自作クラスの配列やコレクションでSortやBinarySearchができるようにする

    自作クラスの配列やコレクションでSortやBinarySearchができるようにする IComparableインターフェイスを実装して値の大小を指定するIComparableインターフェイスの実装IComparable<T>ジェネリックインターフェイスの実装Equalsメソッドと演算子のオーバーライドこの記事への評価、コメント 自作クラスの配列やコレクションでSortやBinarySearchができるようにする IComparableインターフェイスを実装して値の大小を指定する自作クラスの配列やコレクションをSortメソッドで並び替えたり、BinarySearchメソッドで検索する必要がある時、どのように並び替えられるようにするかを定義しておく必要があります。その方法は、IComparerを指定するか、自作クラスにIComparableインターフェイスを実装するかのどちらかです。IComp

    自作クラスの配列やコレクションでSortやBinarySearchができるようにする
  • C# xUnit - Qiita

    こういうのって実際のやつで試してみた方がいいんだろうけどとりあえず簡単なまとめ。 今回macでやっているのでxUnitを使っていきます。 まずはコンソールアプリのプロジェクトを作る。 次にソリューションから追加で新しいプロジェクトを追加でxUnitを追加する。 テストコード using Xunit; namespace unit_sample { public class UnitTest1 { [Fact] public void Test1() { Assert.True(true); } } }

    C# xUnit - Qiita