Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
![えっ、まだList<T>使ってるの? [C#, コレクション] - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/ab4182d78d0c749c7fdc624620164784324eccea/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fqiita-user-contents.imgix.net%252Fhttps%25253A%25252F%25252Fcdn.qiita.com%25252Fassets%25252Fpublic%25252Farticle-ogp-background-afbab5eb44e0b055cce1258705637a91.png%253Fixlib%253Drb-4.0.0%2526w%253D1200%2526blend64%253DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnMzLWFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20lMkZxaWl0YS1pbWFnZS1zdG9yZSUyRjAlMkYzNDc0Nzc0JTJGZWJkNjE3ODhmNzU1NjQ1MjQwNDJiYTc0YjAyZTA4YWRjNjYwZGY2YyUyRnhfbGFyZ2UucG5nJTNGMTY4NjMyNTU5OT9peGxpYj1yYi00LjAuMCZhcj0xJTNBMSZmaXQ9Y3JvcCZtYXNrPWVsbGlwc2UmZm09cG5nMzImcz0yZjMwNWQwMWVhNTFhYTBkNTJkMjMyODRiNjg2NDQ3Zg%2526blend-x%253D120%2526blend-y%253D467%2526blend-w%253D82%2526blend-h%253D82%2526blend-mode%253Dnormal%2526s%253D971913ce5904b62ec9e858f4d20bd391%3Fixlib%3Drb-4.0.0%26w%3D1200%26fm%3Djpg%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9JUUzJTgxJTg4JUUzJTgxJUEzJUUzJTgwJTgxJUUzJTgxJUJFJUUzJTgxJUEwTGlzdCUzQ1QlM0UlRTQlQkQlQkYlRTMlODElQTMlRTMlODElQTYlRTMlODIlOEIlRTMlODElQUUlRUYlQkMlOUYlMjAlNUJDJTIzJTJDJTIwJUUzJTgyJUIzJUUzJTgzJUFDJUUzJTgyJUFGJUUzJTgyJUI3JUUzJTgzJUE3JUUzJTgzJUIzJTVEJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LXBhZD0wJnM9NmM5OTA0N2YwYTE5MWQ2MjUxMGQ5ZTZmMGQ5MzNhM2I%26mark-x%3D120%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDBoeXN1aSZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1wYWQ9MCZzPTQ5MmJkZmVkYThhMTM2NzJkMmQ5NzNjYjZjNjk3YjNl%26blend-x%3D242%26blend-y%3D480%26blend-w%3D838%26blend-h%3D46%26blend-fit%3Dcrop%26blend-crop%3Dleft%252Cbottom%26blend-mode%3Dnormal%26s%3D3b2d23f0ef000fba7c7aaabe3acc0efa)
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに C#におけるasync/awaitを使う上で、絶対に意識しないといけないものは「キャンセル処理」です。 正しく処理をキャンセルしないとメモリリークを起こしたり、デッドロックやデータ不整合を引き起こす可能性があります。 今回はこの「async/awaitにおけるキャンセル処理」について話します。 対象 C#におけるasync/await全般 Task/ValueTask/UniTaskすべてに共通します Unity含む C#のasyc/awaitについてイマイチ自信が持ててない人 先に「結論」 asyncメソッドはCancell
はじめに C#のORマッパーといえばEntity Framework(以下、EF)が有名で、データベースの接続を調べると真っ先にEFの名前が出てきます。ORMの機能を充分に備えたライブラリはEFしかありませんが、致命的な欠点があります。欠点については後述しますが、これを解決するには他のライブラリを使うほかありません。本記事では、EFを使わずにORマッパーの機能を使うライブラリとその組み合わせを紹介します。 ORMの基本的な機能 紹介する前にまずはORMで必要な機能を確認します。ORM(Object-relational mapping)は、オブジェクト関係マッピングと呼ばれ、オブジェクト思考とRDB間の非互換であるデータの違いをうまく吸収(これの逆をインピーダンスミスマッチと言います)して、簡単にデータを扱えるようにする技法です。基本的な機能は以下があります。 SQLを意識することなくコー
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#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
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
更新履歴 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
上記の通り、HttpClientオブジェクトは一度作成するだけでそれをずっと使い続けるのが正しい使用法です。知ってる人には当然なんですけども、知らないと結構驚くかも知れません。APIドキュメントにはこう書いてあります。 HttpClientは、1回インスタンス化し、アプリケーションの有効期間全体に再利用することを目的としています。 すべての要求に対して HttpClient クラスをインスタンス化すると、大量の読み込みで使用可能なソケットの数が枯渇します。 これにより、SocketException エラーが発生します。 間違った使い方をしていても普段はあまり問題は起きませんが、高負荷時に突然ダウンすることが起こりえます。 Azure App Service で問題になりやすい理由 間違った実装のアプリをAzure App Serviceで運用している場合、特に問題になりやすいです。どうし
手元でちょっとしたC#プログラムを実行したい 最近のエディタは再生ボタンを押すだけで自動でコンパイルして実行までを行ってくれるので、手動でコンソールからコマンドを叩いてコンパイルすることの必要性はほとんどありませんが、学習のためにサンプルのクラスだけ作って実行結果を見たい時などは有用そうなので、手動コンパイル実行の手順をまとめてみました。 この記事はその記録になります。 DOS/Vとかの頃からプログラマだった人には当たり前すぎる内容かもしれません。 しかし、最近のゆとり開発環境に慣れきった自分は手動コンパイルをやったことがなかったので実際に試して見ました。 といってもMONOを使えば簡単にC#のコードをコンパイルして実行できました。 C#のコンパイラ(Mono)をインストール Monoとは Ecma標準に準じた.NET Framework互換の環境を実現するためのオープンソースのソフトウェ
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? C# CODING GUIDELINES この記事は古い記事です。 あたらしい記事はこちらです。→ C# CODING GUIDELINES 2024 目次 目次 このドキュメントについて 本書の目的 開発環境 Visual Studio 命名規則 サンプルコード 共通スタイルの説明 二文字の名前(※変更) 名前空間 アセンブリ リソース ファイル クラス フィールド(※変更) 静的フィールド(≒グローバル変数)(※追加) コントロールのフィールド(※変更) プロパティ メソッド(≒関数、サブルーチン、ファンクション) 非同期メソッド(
C#やVB.NETでWebページをスクレイピングする方法をWeb検索するとHtml Agility Packが見つかることが多いですが、APIはXHTMLやXPATHといったXML技術をベースにしているので、今これを使うのは少々やぼったい印象があります。 じゃあ何がいいのか?ということですが、私はAngleSharpを強くお勧めします。 AngleSharpの利点 AngleSharpのどこがいいのか?は、改めて別の記事を書くつもりですが、ここでは簡単にまとめます。 HTMLだけでなく、SVG、MathML、CSSもパース可能です。 HTMLをパースするとW3CのWeb標準に従ったDOMが構築されます。HTML5ベースのため、閉じる必要のないタグ(<br>や<img>など)や閉じタグを省略可能なタグ(<li>、<dt>や<dd>、<tr>や<td>など)も正しく理解します。 Selecto
C#で使いやすいJSON形式のシリアライザを探していたので、いくつか試してみるついでに速度検証をしてみました。 比較するシリアライザ 今回試すシリアライザは以下の4つです。 ・DataContractJsonSerializer(.NET Framework標準) → http://msdn.microsoft.com/ja-jp/library/system.runtime.serialization.json.datacontractjsonserializer%28v=vs.110%29.aspx ・Json.NET(↑以外では割と一般的でNuGetでも2番目に出てくる) → http://james.newtonking.com/json ・ServiceStack.Text.JsonSerializer(SeriveStackライブラリ付属のシリアライザ) → https://g
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く