タグ

.NETとc#に関するsatoshieのブックマーク (30)

  • C#でSQLite3を使ってみる - Qiita

    C#でSQLite3を使ってみたのでまとめ。DBが1つのファイルで完結するって何かと便利ですよね。 このへんの記事が参考になりました。 SQLite で LINQ を使う : http://www.moonmile.net/blog/archives/7979 C# で SQLite を便利に使うサンプルコード(LINQ to SQLite): http://shinta0806be.ldblog.jp/archives/9084539.html 1.どのパッケージを使う? ここが問題。NuGetで「SQLite」で検索すると、 まずどれを使っていいかわかりません。大抵「System.Data.SQLite」をインストールするのですが、これはEntity Frameworkや、SQLiteのLINQ拡張(これを入れなくてもLINQ to SQLが使える謎)など全部入った欲張りセットで、気づ

    C#でSQLite3を使ってみる - Qiita
  • .NET 5 を使いたい理由6選(C#編) - Qiita

    C#9.0の進歩が目覚ましいので使いたい .NET5 がリリースされました。C#も9.0となりました。C#9.0は.NET5以降でしか使えません。 .NET5 を使えるプロジェクトではどんどん新しい文法を活用しましょう。 C#9.0の新機能から、素晴らしいと思った部分をまとめてみました。 使いたい理由1 : record class, struct に加えて record を用いて型定義することができます。 変更不可能な参照型とのことです。 public record Person // classのかわりにrecord { public string Name { get; } public DateTime BirthDate { get; } public Person(string name, DateTime birthDate) { Name = name; BirthDate

    .NET 5 を使いたい理由6選(C#編) - Qiita
  • ファイルを削除する際にごみ箱に入れる [C#]

    C#でファイルを削除する際にごみ箱に移す方法について紹介します。 C#にはファイルをごみ箱に移す操作を行うクラス、メソッドが用意されていません。 ですのでVisual Basicのアセンブリを使ってごみ箱に移す処理を行います。 Visual Basicのアセンブリを参照する C#で全角と半角、ひらがなとカタカナの変換を行うために、Visual Basicのアセンブリを参照します。 ソリューション エクスプローラーでアセンブリを追加するプロジェクトのツリーノードを展開します。 展開すると表示されるツリーノードの「参照」を右クリックします。 コンテキストメニューが表示されるので「参照の追加」をクリックします。 「参照マネージャー」ダイアログが表示されますので、左ペインの「アセンブリ」を選択(クリック)し、表示されるアセンブリの一覧から「Microsoft.VisualBasic」を選択(クリッ

    ファイルを削除する際にごみ箱に入れる [C#]
  • C#のインクリメント演算子(++)がスレッドセーフじゃないから色々調べた話。 - Qiita

    17年プログラマをやっていて、いまさら i++ がスレッドセーフじゃないことを知った 1 ことを反省しての記事です。 ざっくりいうと C#のインクリメント演算子はスレッドセーフではありません。 スレッドセーフを求める場合は、System.Threading.Interlocked.Incrementを利用しましょう。 System.Threading.Interlocked.Incrementがスレッドセーフたる理由を調べてみた。 文 検証してみる 以下のMSTestを実行してみたところ、テストはエラーになりました。 [TestMethod] public void TestIncrementersThreadSafe() { var tasks = new List<Task>(); int counter = 0; for (int i = 0; i < 250; i++) { ta

    C#のインクリメント演算子(++)がスレッドセーフじゃないから色々調べた話。 - Qiita
  • Microsoftが「ML.NET 1.5.2」を公開、.NET開発者向け機械学習フレームワーク

    Microsoftが「ML.NET 1.5.2」を公開、.NET開発者向け機械学習フレームワーク:ONNXエクスポートなどの機能も強化 Microsoftは、.NET開発者向けのオープンソース機械学習(ML)フレームワークの最新版「ML.NET 1.5.2」を公開した。Model Builderツールで「Azure ML」を使ってオブジェクト検出モデルをトレーニングできるようになった他、ML.NET CLIで画像分類モデルをローカルでトレーニングすることも可能になった。 Microsoftは2020年9月25日(米国時間)、オープンソースの.NET開発者向けクロスプラットフォーム機械学習(ML)フレームワークの最新版「ML.NET 1.5.2」を公開した。 ML.NETでは、.NETエコシステムから離れることなく、MLやデータサイエンスの経験が乏しい開発者でも、.NETアプリケーションにM

    Microsoftが「ML.NET 1.5.2」を公開、.NET開発者向け機械学習フレームワーク
  • 第3回 マルチスレッドでデータの不整合を防ぐための排他制御 ― マルチスレッド・プログラミングにおける排他制御と同期制御(前編) ―

    第3回 マルチスレッドでデータの不整合を防ぐための排他制御 ― マルチスレッド・プログラミングにおける排他制御と同期制御(前編) ―:連載.NETマルチスレッド・プログラミング入門(1/3 ページ) 連載目次 前回では、.NETにおけるマルチスレッド・プログラミングの基的な実装方法についてまとめた。今回および次回では、マルチスレッドを使いこなすうえで欠かせない、スレッドをコントロールするためのプログラミング手法について解説していこう。 排他制御と同期制御とは シングルスレッド・プログラムでは問題にはならないが、マルチスレッド・プログラムで注意をしなくてはならないのが、「排他制御」と「同期制御」である。これらはまとめて同期制御と呼ばれることも多いが、ここでは分かりやすく説明するために、2つに分けて考えることにしたい。 排他制御とは、複数のスレッドから共通のリソース(データ)にほぼ同時にアク

    第3回 マルチスレッドでデータの不整合を防ぐための排他制御 ― マルチスレッド・プログラミングにおける排他制御と同期制御(前編) ―
  • マルチスレッドで高速なC#を書くためのロック戦略 - Qiita

    unsafeはロックを取得していないのでプログラマーの意図した動きにはなりませんが、ロックによるオーバーヘッドを見るために計測しました。 Interlocked > lock > SemaphoreSlim > Semaphore > Mutex の順に早いようです。 lock > SemaphoreSlim > Interlocked > Mutex > Semaphore の順に早いようです。 とはいえロック方法によっては得手不得手があるので、使う状況をそれぞれ見ていきます。 lock

    マルチスレッドで高速なC#を書くためのロック戦略 - Qiita
  • 自動実装プロパティ初期化子 - xin9le.net

    「Try! C# vNext」ということで、次期C#の新機能を少しずつ試していきたいと思います。まず最初は自動実装プロパティ初期化子 (= Auto-property initializers) です。これまではメンバー変数の初期化はクラス宣言と同時にできたのですが、自動実装プロパティはコンストラクタなどでしか初期化ができませんでした。その制約を取り払い、より簡潔な記述を可能にしようというものです。 とりあえず使ってみる 使い方は簡単で、以下のように自動実装プロパティに対して値を代入するように記述するだけです。 class Book { public string Title{ get; set; } = "Untitled"; public int Price{ get; set; } = 100; } これは以下の書き方と等価です。定型的な初期化するだけのコンストラクタがほぼほぼ不要に

    自動実装プロパティ初期化子 - xin9le.net
  • Mono Project

    Mono is a software platform designed to allow developers to easily create cross platform applications. Sponsored by Microsoft, Mono is an open source implementation of Microsoft's .NET Framework as part of the .NET Foundation and based on the ECMA standards for C# and the Common Language Runtime. A growing family of solutions and an active and enthusiastic contributing community is helping positio

  • C# で出来ること一覧 - Qiita

    更新履歴 2020/03/23 IoT について追記 その他に帝国兵さんのツイートを追加 サーバーレスカテゴリーを追加して AWS Lambda を追加 ASP.NET Core Razor Pages を追記 2020/03/24 kennakamu さんの「個人的に C# が向かないと思うこと」へのリンク追加 文 昔ブログにこんな記事を書きました。 C# で何か出来るのか?まとめてみた あれから 2 年が経って昔からある Windows 専用の .NET Framework に対する新機能の提供が終わり、クロスプラットフォームに対応した .NET Core が今後のメインストリームとして .NET 5 → .NET 6 のように進化していくことが 2019 年 5 月の Build 2019 で発表されました。以下の Blog 記事がアナウンス後に発表されています。 Introduc

    C# で出来ること一覧 - Qiita
  • 私が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
  • HttpClientをusingで囲わないでください - Qiita

    using (var client = new HttpClient()) { var response = await client.GetAsync(url); .... } これは間違いです。HttpClientオブジェクトは dispose してはいけません! Stackoverflowにも沢山この間違いがあります。 (追記: 正確に言うとdisposeしてはいけないわけではなく、生成と破壊を繰り返すのが誤りです) 正しい使い方はAPIの公式ドキュメントに書いてある通りです。 public class GoodController : ApiController { private static readonly HttpClient HttpClient; static GoodController() { HttpClient = new HttpClient(); } } 上

    HttpClientをusingで囲わないでください - Qiita
  • C# で Slack に投稿する | Moonmile Solutions Blog

    いままで忘備録的に、twitter にメモを投稿していたのだけど、半年ほど独り slack に投稿するということをやっている。ツイッターの自分の投稿をググるのも大変というのもあり、仕事に関係するものを投稿して、逆に仕事自体を推測されるのもアレなので(そういアピールだったらいいんだけど、実際、そういうこともやるし)、手元のものは手元でやるということで。 で、せっかくのクローズドな独り slack なのだから、redmine への投稿も slack 経由でやったり、逆に新規のチケットがでてきたら slack のほうに投げ返したりしたらどうか?と思ったりする。 slack の場合、http://slack.com/apps に各種アプリケーションがアップしてあって(twitter の連携アプリのような感じか?)、直接 slack api を触れなくて、適当な連携アプリを探してくるのがベターだった

  • 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
  • ファイルをロック(アクセスを制限)する

    ファイルをロック(アクセスを制限)するファイルを開いているときに、そのファイルの内容が他のプロセスから勝手に変更されては困るというケースは多いでしょう。FileShare列挙体を指定してFileStreamクラスでファイルを開けば、そのファイルへのアクセスをどのように制限するか(読み込みのみを制限するか、書き込みのみを制限するか、両方制限するか、何も制限しないか)を変更できます。この制限は、Closeメソッドでファイルを閉じるまで有効です。 なお、FileStreamでファイルを開く方法については、「ファイルをバイト型配列に読み込む、バイト型配列をファイルに書き込む」で詳しく説明していますので、そちらをご覧ください。 以下の例では、ファイルを閉じるまで、書き込み、読み込みすべてのアクセスを禁止しています。このような方法でファイルを開いている最中に別のプロセス(または自分のプロセス)がファイ

    ファイルをロック(アクセスを制限)する
  • MacでC#のコードをコンパイルして実行する - Qiita

    手元でちょっとしたC#プログラムを実行したい 最近のエディタは再生ボタンを押すだけで自動でコンパイルして実行までを行ってくれるので、手動でコンソールからコマンドを叩いてコンパイルすることの必要性はほとんどありませんが、学習のためにサンプルのクラスだけ作って実行結果を見たい時などは有用そうなので、手動コンパイル実行の手順をまとめてみました。 この記事はその記録になります。 DOS/Vとかの頃からプログラマだった人には当たり前すぎる内容かもしれません。 しかし、最近のゆとり開発環境に慣れきった自分は手動コンパイルをやったことがなかったので実際に試して見ました。 といってもMONOを使えば簡単にC#のコードをコンパイルして実行できました。 C#のコンパイラ(Mono)をインストール Monoとは Ecma標準に準じた.NET Framework互換の環境を実現するためのオープンソースのソフトウェ

    MacでC#のコードをコンパイルして実行する - Qiita
  • C#でモダンにスクレイピングするならAngleSharp - Qiita

    C#やVB.NETでWebページをスクレイピングする方法をWeb検索するとHtml Agility Packが見つかることが多いですが、APIはXHTMLXPATHといったXML技術をベースにしているので、今これを使うのは少々やぼったい印象があります。 じゃあ何がいいのか?ということですが、私はAngleSharpを強くお勧めします。 AngleSharpの利点 AngleSharpのどこがいいのか?は、改めて別の記事を書くつもりですが、ここでは簡単にまとめます。 HTMLだけでなく、SVG、MathML、CSSもパース可能です。 HTMLをパースするとW3CのWeb標準に従ったDOMが構築されます。HTML5ベースのため、閉じる必要のないタグ(<br>や<img>など)や閉じタグを省略可能なタグ(<li>、<dt>や<dd>、<tr>や<td>など)も正しく理解します。 Selecto

    C#でモダンにスクレイピングするならAngleSharp - Qiita
  • 【.NET】列挙型(enum)を拡張して文字列値を扱う | irislab-blog

  • 世界で通用するエンジニアになるための高度な技術記事(英語) - Qiita

    英語サイトでは、日語のサイトでは絶対に手に入らないレベルの記事がわんさか読めます。今日はCodeProjectよりシステム構築をする上で知っておくべき深い知識を解説した記事を3行要約と共にご紹介します。 C#と.NETの記事 C#や.NETのかなりディープな記事たちです。日語ではあまり見かけない深い部分まで知れます。 ■高パフォーマンスなクラスのデザイン方法 Performance Considerations of Class Design and General Coding in .NET - CodeProject ・クラスvs値型のメモリ使用の詳細 ・値型のGetHashCodeとEqualメソッドをオーバーライドする ・シールドクラスによりVirtualメソッドを避ける ・インターフェースのDispatchについて ・ボクシングを避ける ・for vs foreachはfo

    世界で通用するエンジニアになるための高度な技術記事(英語) - Qiita
  • C#でJSONの読み書き~Json.NETを使ってみる~ - SourceChord

    最近は、何かとJSON形式でデータを扱うこと多いですよね。 てことで、C#でJSONの読み書きをやってみました。 C#でJSON扱うときは、↓のライブラリを使うのが定番っぽい。 Json.NET ASP.net WebAPIのJSONシリアライザの標準実装らしいです。 てかダウンロード数半端ないですね。 インストールは、Nugetから以下のコマンドで。 Install-Package Newtonsoft.Json 使ってみた サンプルコードとか 以下のページにサンプルコードがたくさんあります。 この辺見てけば、何となく使い方は掴めそう。 http://www.newtonsoft.com/json/help/html/Samples.htm その他メモ よく使いそうな操作についてメモ。 JSONへのシリアライズ // データ型定義 public class Person { public

    C#でJSONの読み書き~Json.NETを使ってみる~ - SourceChord