タグ

csharpに関するamberjack115のブックマーク (22)

  • C# LINQ Aggregate のオーバーロードの挙動を知る - Qiita

    そもそもAggregateとはなんぞや ある集合(IEnumerable<TSource>)に対して処理を通して1つの結果(TSource または TAccumulate)を受け取る集合系メソッドです。 要するに T[] があった時に T 一つひとつに何らかの処理を通して集計した結果を返す的なイメージでOK。 Haskellでいうfoldみたいな。 で、これを使う時3つほどオーバーロードがあるんですが、それぞれの挙動がちょっとだけ気になったので調べてみた。 オーバーロードについて public static TSource Aggregate<TSource>( this IEnumerable<TSource> source, Func<TSource, TSource, TSource> func) { return /* hogemoge */ } public static TAc

    C# LINQ Aggregate のオーバーロードの挙動を知る - 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)を制御する、様々な方法
  • プロパティ名を文字列として取得

    例えば、日付を表すDateTime構造体にはDateというプロパティがあります。 これを"Date"という文字列として取得する方法の紹介。 MVVMが流行りだしてViewModelのPropertyChangedの実装がメンドクサイ頃に話題となった問題。 普通は取れないんですが、世の中には頭のいい人がいるもんです。 元ネタはこちら http://blogs.msdn.com/b/csharpfaq/archive/2010/03/11/how-can-i-get-objects-and-property-values-from-expression-trees.aspx

    プロパティ名を文字列として取得
  • 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#開発者にとってはやはり重要なアップデートとなっている。 そして、これら

  • Use GNU Global to read source code in C# under Windows 2008 R2 - Kiyoshi’s Windows and Unix Worlds

    I do not think that we can create a perfect tag for C#, but want to have a html based source code view. So here is my quick test and it works as expected. Just insert the following into gtags.conf gtags:\ :tc=common:\ :langmap=c\:.c.h,yacc\:.y,asm\:.s.S,java\:.java,cs\:.cs,cpp\:.c++.cc.cpp.cxx.hxx.hpp.C.H,php\:.php.php3.phtml:++ :langmap=cs\:.cs.h.cppproj.csproj.aspx.asax.config.cscfg.csdef:\ and

    Use GNU Global to read source code in C# under Windows 2008 R2 - Kiyoshi’s Windows and Unix Worlds
  • プライマリコンストラクタ - xin9le.net

    今回取り上げるのは「プライマリコンストラクタ」です。テキトーな日語に直すと「一次コンストラクタ」などといった感じになるのでしょうか。この機能を簡単に説明すると、コンストラクタをひとつだけ定義する機能です。それでは順番に見て行きましょう。 とりあえず使ってみる 最小限のサンプルを書いてみるとすると以下のようになります。クラス名の横に関数の引数のような記述がされているのが分かります。このクラス定義 + コンストラクタみたいな書き味がプライマリコンストラクタです。これだけで、「string型のtitleという名前の変数を1つだけ引数に取るコンストラクタを持つBookクラス」が表現できます。 class Book(string title) {} このプライマリコンストラクタの引数は、前回紹介した自動実装プロパティ初期化子やフィールドの初期化に利用できます。例えば以下のような感じです。 clas

    プライマリコンストラクタ - xin9le.net
  • 自動実装プロパティ初期化子 - 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
  • 例外フィルター - xin9le.net

    例外処理はtry句でスローされる例外の型に応じて処理を書き分けます。また、ひとつの例外の型でエラー条件が分かれる場合はcatch句の中にif文を書いて分岐します。例えば以下のような感じです。 try { //--- SQL Serverへの何らかのアクセス } catch (SqlException ex) //--- SqlExceptionの派生クラスに関する例外処理 { if (ex.Number == 1205) { //--- デッドロック発生時 } else { //--- デッドロック以外のSqlExceptionに関する処理 } } catch (Exception ex) { //--- その他のすべての例外 } C# vNextではこのエラーの条件分岐 (= if文) に当たる部分をcatch句の一部として書けるようになりました。つまり、catch句で引っ掛ける例外のフ

    例外フィルター - xin9le.net
    amberjack115
    amberjack115 2014/08/31
    #ILSpyよ…
  • nameof演算子 - xin9le.net

    これまでC# vNextの新機能についていくつか紹介してきましたが、個人的にラムダ形式プロパティよりも、null伝搬演算子よりも、catch/finally句で利用できるawait演算子よりもずっと ×2 興奮したのが今回取り上げるnameof演算子 (nameof operator) です。簡単に言うと、変数名や関数名などをサクッと取得するためのキーワードです。 とりあえず使ってみる nameof演算子の利用方法は以下のような感じです。このように、非常にカジュアルに利用することができます。 var n1 = nameof(value); var n2 = nameof(Console); var n3 = nameof(Console.Title); var n4 = nameof(Console.WriteLine); //--- それぞれの変数の値 /* n1 = value n2

    nameof演算子 - xin9le.net
    amberjack115
    amberjack115 2014/08/31
    #これは良い。もっと早く欲しかった / 実行時に評価されるわけじゃないってのはちと落とし穴っぽいが
  • null条件演算子 - xin9le.net

    三項演算子はひとつの式の中で条件式を表現できて非常に便利です。言うまでもないかもしれませんが、例えば以下のような書き方ができます。 var name = "じんぐる"; return name == null ? "不明" : name; /* //--- 以下と同じ意味 var name = "じんぐる"; if (name != null) return name; return "不明"; */ 上記のような書き方は全然問題ないのですが、「値をnullと比較して、nullでなければそのまま値を返し、nullだったら既定値を返す」という処理は定型句として結構あります。そこでこの定型句をより短く記述するため、C# 2.0でnull合体演算子という短縮形が追加されました。とても簡潔ですね。 var name = "じんぐる"; return name ?? "不明"; null条件演算子

    null条件演算子 - xin9le.net
    amberjack115
    amberjack115 2014/08/31
    #null合体演算子との組み合わせ良いな
  • 競技プログラミングのための C# (4.0 以降) の Tips 詰め合わせ - C♯の勉強

    この記事は、Competitive Programming Advent Calendar Div2013 - PARTAKE の10日目の記事です。 はじめに 長い年月を経て、ついにTopCoderの C# 環境が、.NET Framework 2.0 から .NET Framework 4.0 へとアップグレードされました。 そこでさっそく TopCoder の 番 SRM で使用する言語を C++ から C# へと変更しました。また、それまで競技プログラミングで早解き系のコンテストで C# を使ったことがほとんどなかったため、備忘録としてブログでSRMの過去問を C# 4.0 で解くようにしました。 記事では、過去問を解く過程で得た、競技プログラミング向けの簡単な C♯ の小技をまとめています。 C♯4.0 が利用できるオンラインジャッジ TopCoder CodeForces

    競技プログラミングのための C# (4.0 以降) の Tips 詰め合わせ - C♯の勉強
  • Java 8を関数型っぽく使うためのおまじないをC#でやってみた - ぐるぐる~

    Java 8を関数型っぽく使うためのおまじない - きしだのはてな Java は大変ですね。 C# さんは、ラムダ式も Func 型(Java の Function 型に大体対応)も Visual Studio 2008 時代(5年前)から使えたので、似たようなことはすでにできます。 上記の記事のパクリなので、上記の記事をまずは読んでから読むことをおすすめします。 Func 型 C# では Func デリゲートというものがあります。名前空間名や型パラメータまで含めると、System.Func<TArg, TResult> です。 こんな感じで使います。 Func<string, string> enclose = s => "[" + s + "]"; これを呼び出そうとすると、こんな感じになります。 // Javaだとenclose.apply("foo")と、applyが必要 Syst

    Java 8を関数型っぽく使うためのおまじないをC#でやってみた - ぐるぐる~
  • Browse learning | Microsoft Docs

    Created with Sketch. image/svg+xml image/svg+xml image/svg+xml

    Browse learning | Microsoft Docs
  • C#で始めるテスト駆動開発 ~TDDBC横浜の課題をやってみよう

    はじめに 各地でTDD Boot Camp(TDDBC)が開催されるようになり、このところTDD(テスト駆動開発)が注目を浴びています。ただ、自分でも試してみようと思った時に目につく書籍や記事などは、JavaRubyPHPといった、いわゆるオープンソース系の言語ばかり。.NET Framework(Windows)で開発の仕事をしているとTDDは関係ないんだろうか、…とさえ思えてくるかもしれません。 しかし、そんなことはありません。.NET FrameworkでのTDDに必須のユニットテストフレームワークとして有名なNUnitの最初のバージョンは、Visual Studio .NET 2002がリリースされる以前の2001年に公開されています。.NET Frameworkは、生まれたときからTDDと共にあると言っても過言ではないでしょう。 この記事では、TDDとTDDBCについて簡単に

    C#で始めるテスト駆動開発 ~TDDBC横浜の課題をやってみよう
  • 「C#できます」と言い放ったあいつがJavaプログラマであることを見分ける10の質問 - 平々毎々(アーカイブ)

    <追記> 念のため書いておきますが、ネタですからね。 わざと難しい質問にしてるので、 回答に困っても大丈夫だ、問題ない。 下記質問にそれぞれ50文字以内を目安に簡単に説明すること。 ==演算子のオーバーロードを実装してEqualsメソッドと同じ処理を実行するようにしてもよい場合はどのような時か? ループ内でなければ、たとえ100個の文字列型変数であってもまとめて+演算子で連結してよい理由を説明せよ。 Listのように値型を格納するジェネリックコレクションを使ってもボックス化/ボックス化解除が発生しない理由を説明せよ。 Full GC(Gen2 GC)が動作したときに断片化していてもコンパクションされないヒープ領域はどのような領域か? throw; とthrow ex; の違いをスタックトレースの観点で説明せよ。 フィールドのアクセス修飾子をprivateにしプロパティのgetter/set

    「C#できます」と言い放ったあいつがJavaプログラマであることを見分ける10の質問 - 平々毎々(アーカイブ)
  • SCE、PlayStation Suite SDKの開発言語としてC#を採用 | スラド デベロッパー

    ソニー・コンピュータエンタテインメント(SCE)は、「PlayStation Suite SDK」のベータ版を11月から提供することを発表した(プレスリリース、 Engadget日版の記事、 ITmediaの記事)。 PlayStation Suite SDKはプログラミング言語としてC#を採用。作成したコンテンツは、PlayStation Certifiedライセンスを取得したAndroidデバイスやPlayStation Vita上で実行可能となる。SDKの提供を開始することで、SCEはPlayStation Suiteの幅広い展開を目指す。 C#はECMAやISOにより標準化されているが、Microsoftのイメージが強かったので、意外な印象である。

  • What's New in SQL2016 CTP2 Release - MSDN Blogs

    Ever found yourself staring at the Output Window, overwhelmed by endless lines of logs and cryptic messages? You're not alone! For years, developers have relied on the Output Window for critical build and debug information. But making sense of it—and translating it into action—has...

    What's New in SQL2016 CTP2 Release - MSDN Blogs
  • C#で解説する「データ処理の直交化と汎用化」(1/3) - @IT

    稿では、LINQ(Language Integrated Query)の生い立ちについての話をしてみたい。 LINQは、C# 3.0の目玉機能として、2005年夏に発表、2008年に初頭に製品化されたものである。製品化から数えてももう3年が過ぎたわけだが、いまだ誤解の多い機能だろう。LINQの一側面だけを見て、 O/Rマッパーの一種 C#やVB(Visual Basic)のコード中にSQL風のクエリを埋め込める機能 などといわれることもある。これは、一側面が見えているだけいいかもしれない。まれに、 if文やfor文が書ければ、プログラムは書ける C# 3.0/VB 9で何だかいきなり機能が増えすぎてもう付いていけない というような声さえ聞こえてくる。 しかし、そう身構えないでほしい。LINQが目指すものは実のところ単純で、「データ処理の直交化と汎用化」である。この考え方は何もLINQで初

  • C#/Scala/Python/Ruby/F#でデータ処理はどう違うのか?

    ■概要 以前、C#でのデータ処理について解説した。今回は、同様のデータ処理を、C#以外のプログラミング言語ではどうしているのか、(C#も含めて)以下の5つの言語を比較しながら説明していく。 C# Scala Python Ruby F# 結果としてできることは似ているのだが、その内部的な実装方法は言語ごとにさまざまである。 ■データ処理のおさらい 概念的には、「データ処理」というのは、Figure 1に典型例を示すように、条件選択や変換など、小さな処理単位に分けて、それをつないでいく形を取る。

    C#/Scala/Python/Ruby/F#でデータ処理はどう違うのか?
  • 地獄のC#

    チト @karno 地獄のC# 「やべー、またInt32って書いちまったわー 見てよ、intで良いのにInt32って書いちまったわ、かぁーっ!」 2011-03-28 22:10:05

    地獄のC#