タグ

C#に関するteracy_junkのブックマーク (291)

  • プログラム実行時のコマンドライン引数を取得する (C#プログラミング)

    目次1 System.Environment.CommandLine を利用する1.1 コード11.1.1 解説1.2 実行結果11.3 コード21.4 実行結果22 System.Environment.GetCommandLineArgs() を利用する2.1 コード12.1.1 解説2.2 実行結果12.3 コード22.4 実行結果23 Main 関数の引数を利用する3.1 コード3.1.1 解説3.2 実行結果 C#でプログラム実行時のコマンドライン引数を取得するコードを紹介します。 System.Environment.CommandLine を利用する System.Environment.CommandLine プロパティを利用すると、コマンドライン引数を含めた実行コマンドを取得できます。 コード1 コンソールアプリケーションの場合です。 using System; usin

    プログラム実行時のコマンドライン引数を取得する (C#プログラミング)
  • MSTestのAssertでコンソール出力の文言を比較する - ごずろぐ

    コンソールアプリの中で標準出力している文言をMSTestでテストしたい テスト対象の戻り値が成功でも状態によって出力される文言が変わるのでテストしておきたい StringWriter でコンソール出力を奪ってからメソッドを実行し、StringReaderで読み出せば良いらしい [TestClass] public class HogehogeTest { [TestMethod] public void fooという処理でbarという文字列が出てくる() { string expected = "bar"; var builder = new StringBuilder(); var writer = new StringWriter(builder); // コンソール出力を奪い取る Console.SetOut(writer); // テスト対象(このメソッドの中でコンソールに出力して

    MSTestのAssertでコンソール出力の文言を比較する - ごずろぐ
  • C# 6 features – Null-conditional (?. and ?[]) and null-coalescing (??) operators – C# Today

  • 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
  • 引数の型を何でも List にしちゃう奴にそろそろ一言いっておくか - Qiita

    この記事は C# その2 Advent Calendar 2018 の第一日の記事である。 はじめに この記事では、主にエンタープライズアプリケーション(SI、企業向けの業務システムやパッケージ製品)の開発に於いて、新規開発ではなく修正や拡張を行うようなシーンを想定して、無駄な工数をなるべく削減すべく自分なりに考えて実践しているベストプラクティスを書いている。 新規開発の場合でも、将来の拡張や修正が見込まれるはずなので、考慮すべき事は同じだ。 競技プログラミングや、組み込み開発の場合でも基的な考え方は適用可能だが、メモリ効率やパフォーマンスを考慮する必要もあるので、あえて配列を使ったり、逸脱するようなケースもあるだろう。 対象とする読者層は、C#プログラミング歴1年以上、SIer やユーザー企業に所属(もしくは常駐)し、特に複数人チームでの開発に携わる若手プログラマ、初級から中級へのステ

    引数の型を何でも List にしちゃう奴にそろそろ一言いっておくか - Qiita
  • Reactive Extensions とか知らない人向けの ReactiveProperty のはじめかた その 2 - かずきのBlog@hatena

    blog.okazuki.jp はじめに 最初の記事を受けて使い始めてきた人向けのちょっと Rx っぽい使い方を紹介します。 ReactiveProperty 値を加工して代入しているケース ReactiveProperty に値を代入するケースがあると思います。例えば以下のような感じですね。 public ReactiveProperty<string> A { get; } = new ReactiveProperty<string>(); public ReactiveProperty<string> B { get; } = new ReactiveProperty<string>(); public コンストラクタ() { A.Subscribe(x => B.Value = $"Value is {x}"); } プロパティ A の値が変わったら値を加工してプロパティ B に代

    Reactive Extensions とか知らない人向けの ReactiveProperty のはじめかた その 2 - かずきのBlog@hatena
  • C# 非同期、覚え書き。 - Qiita

    記憶力の悪い自分のために、C# における非同期処理の書き方を記述しておきたいと思います。 専門家ではないので、不出来な内容でもあしからず。 目次 Task async / await 並列処理 System.Threading の便利なクラス Task 皆さんおなじみの、非同期操作を表すクラスです。 生成および実行の方法が何通りかあります。 Task.Factory.StartNew 次のようにして Task を生成、実行します。 using System; using System.Threading.Tasks; class Program { static void Main(string[] args) { var task = Task.Factory.StartNew(() => Console.WriteLine("OK")); Console.ReadLine(); } }

    C# 非同期、覚え書き。 - Qiita
  • Taskを極めろ!async/await完全攻略 - Qiita

    この記事は、 Task.Runを書けばとりあえず非同期で動くのはわかる 時々なんかうまく動かなかったりするけどどうして動かないのかはよくわからない よくわからないまま書いてよくわからないまま動いてるけどこれで大丈夫なのかわからなくてこわい みたいな人を対象にしています。 Taskクラスとasync/await 皆さん、非同期してますか?当然してますね。同期処理が許されるのはC#2.0までだよねーじゃなくて、async/awaitはC# 5.0から導入された、Taskクラスと紐付いた言語構文の一つです。登場はもう数年前なはずなんですが、未だに新しい言語仕様な感じがしてフシギです。それでもさすがに今は馴染んでいて、どこにでも遠慮なく飛び出てくるようになっています。 Taskの難しさ Taskは、難しいです。 Taskがというよりは、非同期処理自体が持つ複雑さが根に存在するため、いくらシンプル

    Taskを極めろ!async/await完全攻略 - Qiita
  • neue cc - ToArray vs ToList

    LINQの結果は遅延評価なので、その場で全部評価して欲しかったりする場合などに使うToArrayとToList。どちらを使っていますか?私はToArrayのほうが好みです。と、いうのも、LINQで書く以上、長さは決まったようなものなので、これ以上AddやRemoveしたいことなんてほとんどない。勿論、必ずないとは言いませんので、その場合だけToListを使いますが、そうでない場合は、長さが固定だという意図を示すためにもToArrayが好ましい。 パフォーマンス T[]やList<T>に変換されたあとだと、T[]のほうが、大体においてパフォーマンスは良い。という点でもToArrayがいいかなあ、と思うわけですが、それはさておき、ではToArrayとToListメソッドそれ自体のパフォーマンスはどちらのほうが良いでしょうか?理屈の上ではToListのほうが上です。というのも、変換処理は下記の図

  • LINQチートシート的なもの - Qiita

    UnityのC#のコード(幾つかの公式Assetとか)読んでたらFindとかいっぱい使ってあって悲しくなったんでLINQのメソッド一覧的なの作ってみました。 お願いだからforeach+List.AddじゃなくてSelect使ってとか お願いだから引数配列じゃなくてIEnumerableにしてとか なんでforeach回すだけなのにToArrayやってるの?とか 明らかに適切な場所じゃないとこで使っていて悲しかったんや・・・ とりあえずこんな事できるよ~的なの作ってみました。 とりあえずC#書く人なら常識的なところ辺りまで ※ファイルの頭に当然using System.Linq;入れています ※ソースコード形式です。各メソッド最後の行は出力を示します ※IEnumerableをシーケンス表記で統一しています。(リストと読み替えてもいいと思います) ※LINQは基的に少しだけ低速ですが気に

    LINQチートシート的なもの - Qiita
    teracy_junk
    teracy_junk 2018/03/09
    久々に触ったので。Rxに手が馴染んでいるので面倒
  • タプル

    概要 Ver. 7 「名前のない複合型」で説明したように、 型には常によい名前が付くわけではなく、名無しにしておきたいことがあります。 そういう場合に使うもののうちの1つがC# 7で導入されたタプルです。 タプルの最大の用途は多値戻り値です。 関数の戻り値は引数と対になるものなので、タプルの書き心地は引数に近くなるように設計されています。 ポイント (int x, int y)というような、引数みたいな書き方で「名前のない型」を作れます この書き方をタプルと呼びます C# 7で導入されたタプル(tuple)は、 (int x, int y)というような、引数みたいな書き方で「名前のない型」を作る機能です。 ※ タプルの利用には、ValueTuple構造体という型が必要になります。 この型が標準ライブラリに取り込まれるのは .NET Framework 4.7、.NET Standard 1

    タプル
  • await って言う単語

    C# 5.0で非同期メソッドが導入されてから、 正式リリースを基準にしても5年以上、 最初の発表からだと7年以上経っています。 で、5年経っても、「なんて読むの」「asyncのaとawaitのaは違う」などなどが「定番ネタ」として定期的に出てくるわけですが。 特に、ECMAScript 2017がasync/awaitを導入したり、 Unity 2017がやっとC#のバージョンを6.0に上げれる感じになってきたり、 5年の断絶を経て去年からasync/awaitに触れる人が増えているようです。 5年も離れたら、世代断絶も起こりますよね… そりゃ、「定番ネタ」が改めて増えもしますよね… ということで、5年くらい前に同じようなことをどこかで書いてるはずなんですけど、改めて。 英単語 えいしんく まず読み方。 async: エイシンク await : アウェイト ってやつ。async の方が「ア

    await って言う単語
  • LINQで書くとデバッグしづらいよね?そんなことないよ - かずきのBlog@hatena

    小ネタです。 LINQで処理をぱぱっと1ステートメントで書けると気持ちいいですよね。 でも、デバッグ難しくない?ということがあるのですが大丈夫です安心してください。 ブレークポイントのはり方のコツさえつかめば大丈夫です。例えば以下のようなコードがあるとします。 using System; using System.Linq; namespace ConsoleApp10 { class Program { static void Main(string[] args) { var numbers = new[] { 1, 2, 2, 3, 3, 3, 4, 4, 4 }; var values = numbers .Where(x => x % 2 == 0) .Distinct() .Select(x => x * x); foreach (var value in values) {

    LINQで書くとデバッグしづらいよね?そんなことないよ - かずきのBlog@hatena
  • Unite 2017 Tokyo講演「「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術」 - Grani Engineering Blog

    CTOの河合です。Unite 2017 Tokyoにて、 「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 という講演を行いました。 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術 from UnityTechnologiesJapan 講演に参加いただいたみなさま、ありがとうございます。資料のほか、講演の動画は、また後日配信されるようなので、そちらもご覧いただけたらと思います。 C#大統一理論 「黒騎士と白の魔王」は、世にも珍しくクライアントとサーバーが共にC#で構築されています。クライアントがC#なのは当たり前ですが(Unityのお陰ですね!)、サーバーがC#なのも、そう珍しいわけではないのですが(特にBtoBの場では、Windows Serverで

    Unite 2017 Tokyo講演「「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術」 - Grani Engineering Blog
  • 【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術

    講演者:河合 宜文(株式会社グラニ) こんな人におすすめ ・C#大統一理論について興味のある方 ・UniRxを使ったことがある/使ってみたい方 受講者が得られる知見 ・C#で統一したプロジェクトの作り方 ・UniRxの活用法、メリットとデメリット 講演動画:https://youtu.be/Lvbs22iZFPkRead less

    【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術
  • マイクロソフト、Visual Studio 2017正式リリース。コードを書きながら自動的にユニットテストを実行してくれるライブユニットテスティングなど

    Visual Studio 2017はさまざまなプログラミング言語やプラットフォームに対応。C#や.NET Frameworkを用いたWindowsアプリケーションだけでなく、C++Linux対応のアプリケーションを開発することも、TypeScriptでWebアプリケーションを開発することも、クラウドアプリケーションやモバイルアプリケーションの開発も可能です。 Visual Studio 2017ではインストールの時間を大幅に短縮。いままで2時間ほどかかっていたインストールを10分程度に短縮。 また必要な機能のみを必要なときに読み込む構造にすることで、起動時間も約半分になり、従来より軽快に動作すると説明されています。 開発者にとって注目すべき新機能のひとつは、C#かVisual Basicでコードを書いている場合、バックグラウンドで自動的にユニットテストを実行してくれる「ライブユニットテ

    マイクロソフト、Visual Studio 2017正式リリース。コードを書きながら自動的にユニットテストを実行してくれるライブユニットテスティングなど
    teracy_junk
    teracy_junk 2017/03/08
    『C#かVisual Basicでコードを書いている場合、バックグラウンドで自動的にユニットテストを実行してくれる「ライブユニットテスティング」』
  • Entity FrameworkでJoinを使わずに内部結合する - Qiita

    RDBからデータ取得する時はテーブルの結合は必須です。 しかしながら、メソッド構文でJoin書くのってめんどくさい。 *テーブル構造はEntityFramework6で単純なデータ表示フォームを作成のを流用。 var result = entities.Models.Join(entities.Titles, //結合するEntityの指定 model => model.ModelID, title => title.ModelID, //結合キーの指定 (model, title) => new { model.ModelName, title.TitleName, title.RunningDate } //取得するデータの指定 ).ToArray(); これをノータイムで読める人ってほとんどいないんじゃないですかね……。 おとなしくクエリ構文で書け?アーアーキコエナイ 外部キーをしっ

    Entity FrameworkでJoinを使わずに内部結合する - Qiita
  • Unity C# and Shader Tutorials

    for the Unity Engine These tutorials teach you about C# and shader programming for Unity. They build on one another, introducing new programming concepts, math, algorithms, and Unity features. They're useful to both novice and experienced developers. One of many things you can make with Unity. Become My Patron Your support makes these tutorials possible! If you like them and want to see more, plea

    Unity C# and Shader Tutorials
  • C#のswitch文のコンパイラ最適化について - Grani Engineering Blog

    CTOの河合(@neuecc)です。グラニもエンジニアブログはじめました!グラニの中心的テクノロジーであるC#関連は元より、Unity関連やUniRx、最近力を入れているVR関連についての情報を色々と発信していけたらと思っています。私自身は、思いたったときが書き時ということで、私が社内にふっと流したくなったものを、外向けに発信していこうかな、と思っています。 さて、今回のテーマはswitch文のコンパイル結果について。C#は割と素直なコンパイル結果(ILへの変換)を得られるのですが、一部のものはアグレッシブな変換を行います。有名所ではラムダ式のクロージャなどは、隠れたクラスを作ってくれる、作ってしまうなど、コードの見た目からイメージした通りではない結果を出力しますが、実はswitch文もかなりアグレッシブな変換を行います。そこで、今回はそうしたswitchの最適化を見ていきましょう。 なお

    C#のswitch文のコンパイラ最適化について - Grani Engineering Blog
  • 【Unity勢に】C#のforeachとラムダ式の落とし穴、そしてその破壊的言語仕様変更【今読んでほしい】 - Qiita

    Unity勢に】C#のforeachとラムダ式の落とし穴、そしてその破壊的言語仕様変更【今読んでほしい】C#.NETUnity.NETFramework はじめに C#アドベントカレンダー2016、19日目は『【Unity勢に】C#のforeachとラムダ式の落とし穴、そしてその破壊的言語仕様変更【今読んでほしい】』と題して室星が担当させていただきます。 タイトルはラムダ式としていますが、正確にはデリゲートです。 foreachとデリゲートの落とし穴 次のコードを実行するとどのようなログが出力されるでしょうか? var names = new List<string> { "Taro", "Jiro", "Saburo" }; var actions = new List<Action>(); foreach (string name in names) { actions.Add(()

    【Unity勢に】C#のforeachとラムダ式の落とし穴、そしてその破壊的言語仕様変更【今読んでほしい】 - Qiita