タグ

C#に関するsiroccoのブックマーク (74)

  • デリゲート

    概要 デリゲート(delegate: 代表、委譲、委託)とは、メソッドを参照するための型です。 C言語やC++言語の勉強をしたことがある人には、 「デリゲートとは関数ポインターや関数オブジェクトをオブジェクト指向に適するように拡張したもの」 と言った方が分かりやすいかもしれません。 デリゲートは用途も関数ポインターとほとんど同じで、 述語やイベントハンドラ(「イベント」で説明)等に利用します。 ただし、C言語の関数ポインターと違い、 インスタンスメソッドを参照したり、 複数のメソッドを同時に参照する事が出来ます。 delegate(委譲)という言葉のニュアンスとしては、 「他のメソッドに処理を丸投げするためのオブジェクト」というような意味です。 イベントが起きたときのイベントハンドリングをどのメソッドに丸投げ(委託)するかを指示するためなどに使われます。 ポイント C# では、メソッドも他

    デリゲート
    sirocco
    sirocco 2016/05/03
    C# で関数を引数として渡すにはデリゲートを使うらしい。
  • List<T>.AddRange(IEnumerable<T>) Method (System.Collections.Generic)

    Examples The following example demonstrates the AddRange method and various other methods of the List<T> class that act on ranges. An array of strings is created and passed to the constructor, populating the list with the elements of the array. The AddRange method is called, with the list as its argument. The result is that the current elements of the list are added to the end of the list, duplica

    List<T>.AddRange(IEnumerable<T>) Method (System.Collections.Generic)
    sirocco
    sirocco 2016/01/21
    List(T).AddRange メソッドはvoidでリストを連結した結果を返さない・・・Orz
  • Biz-Crew - AI Agent Collaboration Platform

    Build, deploy, and orchestrate intelligent AI agent crews for automated workflows

    sirocco
    sirocco 2016/01/16
    DateTime の最小値、最大値同士の比較は危険。.netとSQLServerではDatetime型は最大値と最小値が違う
  • C#のグローバル関数

    C#では、C言語で言うどの関数からでも呼び出せるグローバル関数を作ることができません。これは、C#がクラス言語と呼ばれるもので、グローバル関数はどこからでも呼び出すことができるので、モジュールの結合度が高くなり、これを避けるように配慮された言語だからです。 ではどのような処理を、複数のクラスから呼び出せるクラス、つまりユーティリティクラスとしてまとめるのがよいのでしょうか。次のような設計方針が考えられます。 状態を持たない処理をまとめたユーティリティクラス 具体例であげると、「変換前のデータ」を渡すと「変換後のデータ」が手に入ればよく、状態を保持し続ける必要がない処理は、ユーティリティクラス化に向いています。 また、単なる計算や関数などもユーティリティクラス向きです。java.lang.Mathクラスはこの典型であるといえます。 業務固有のユーティリティクラス ユーティリティクラスは、特定

    sirocco
    sirocco 2015/12/09
    インスタンスを持たないグローバル関数の作り方。Cの関数のようなツールを作りたいときに使う。
  • 型の別名を定義する (using利用) | iPentec

    次のコードはコンパイルエラーになります。 Int32 と記述した場合は、System.Int32構造体のエイリアスとなります。 また、Stringと記述した場合はSystem.Stringクラスのエイリアスとなり、コンパイルできます。 一方、int string と記述した場合は型名となるため、CS1001:識別子がありません エラーが発生しコンパイルできません。 using MyFlag = int; using MyFlag = string; コード例 C# 4.0以降ではnamespaceの外側に記述する必要があります。 using HANDLE = System.IntPtr; namespace GetSetSystemTimeDemo { public partial class Form1 : Form { ... } } プログラム例 UI 下図のUIを作成します。フォー

    型の別名を定義する (using利用) | iPentec
    sirocco
    sirocco 2015/10/31
    同じint でも身長だったり、体重だったりで自分でも分からなくなるので、Haskellだったら新しい型を作る。C# は using ?
  • C# Excel 操作 EXEが残り続ける

    このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。 質問 2010年4月2日金曜日 9:26 Excelを操作しているのですが oXL.Quit();でExcel.Applicationを破棄しても タスクマネ-ジャにEXCEL.EXEが残り続けます。 繰り返し動作させるとEXCEL.EXEが増加し続けるのですが、 タスクバ-にExcelは表示されていません。 EXCEL.EXEを破棄するにはどうすればよいでしょうか。 private Excel.Application oXL = null; private Excel.Workbook oWB = null; public ExcelFile(){ oXL = new Excel.Application()

    C# Excel 操作 EXEが残り続ける
    sirocco
    sirocco 2015/07/16
  • Application.DoEvents - ペンギンの備忘録

    Application.DoEventsが至る所に書かれているプログラムを見ると頭が痛い。VB6からVB.NETへ移行したプログラマは、時間がかかる処理中に再描画やGUIの応答をさせるためにごく当たり前のように使ってしまうようですが・・・。Microsoftは、こんなものはさっさとObsoleteにしてしまうべきだと思います。(必要な場面もあるのでかなり大げさですが) Application.DoEventsについて、MSDNには次のように記載されています。メッセージ キューに現在ある Windows メッセージをすべて処理します。 ボタン押下やキーボードイベントなんかが処理されるだけならコントロールを無効にしておけば良いのですが、厄介なことにWM_TIMERメッセージまで処理されてしまうため裏で動いているSystem.Windows.Forms.Timerの処理まで実行されてしまいます。

    sirocco
    sirocco 2015/07/07
    なんでもかんでも、Application.DoEvents を書くべきではないという話。
  • [C#]Stringとstringの違いは?

    C#で文字列を格納する変数を定義する場合、Stringとstringの2つが有ります。(先頭が大文字か小文字かが違っています) 以下の例では、どちらもエラーなくコンパイル&実行可能ですがこの2つは何が違っているのでしょうか? C#の言語仕様上、stringはSystem.Stringのエイリアス(別名)という位置づけなので、仕様的には両者は全く同じです。 ですので、どっちを使っても問題無く動作するのですが、一般的には以下のガイドラインに沿ってコーディング規約が作られる事が多いです。 1.文字列の変数を定義する場合 先頭小文字のstringを使用します。

    [C#]Stringとstringの違いは?
    sirocco
    sirocco 2015/07/04
    どちらでも良いが、変数を宣言するときの型名は小文字、クラスのスタティックメソッドをコールする場合は大文字。
  • http://main.tinyjoker.net/Tech/CSharp/%A5%C7%A5%A3%A1%BC%A5%D7%A5%B3%A5%D4%A1%BC%A1%CA%BF%BC%A4%A4%A5%B3%A5%D4%A1%BC%A1%CB%A4%F2%A4%C4%A4%AF%A4%EBClone%A4%F2%A5%B8%A5%A7%A5%CD%A5%EA%A5%C3%A5%AF%B3%C8%C4%A5%A5%E1%A5%BD%A5%C3%A5%C9%A4%C7%A4%E4%A4%C3%A4%C6

    sirocco
    sirocco 2015/07/03
    ディープコピー。
  • 標準クエリ演算子(クエリ式関係)

    概要 Ver. 3.0 「LINQ」で、 構文の追加(クエリ式): C# 3.0 で、SQL 風の問い合わせ構文が書けるようになった。 メソッド群の追加(標準クエリ演算子): クエリ式は、Where、Select などのメソッド呼び出しに変換される。(これらのメソッドを標準クエリ演算子と呼ぶ。) という話をしました。 ここでは、 どういう C# クエリ式がどういう標準クエリ演算子(メソッド呼び出し)に変換されるかを説明しつつ、 クエリ式に関係する標準クエリ演算子を紹介します。 (ちなみに、標準クエリ演算子の中には、クエリ式で表せない (メソッド呼び出しの形でしか使えない)ものも多数あります。 次節の「標準クエリ演算子(その他)」で説明。) サンプルデータ 次節以降の説明では、例として以下のようなデータを使います。 var a = new[] { new { X = 0, Y = 10, Z

    標準クエリ演算子(クエリ式関係)
    sirocco
    sirocco 2015/06/25
    安定ソートのようだ。
  • C#でDictionaryの値によるソート - Coniglioの忘備録

    Dictionary<string, int> dic = new Dictionary<string, int>(); dic.Add("A", 2); dic.Add("B", 1); dic.Add("C", 3); //昇順 var vs1 = dic.OrderBy((x) => x.Value); foreach (var v in vs1) { Console.WriteLine(string.Format("{0}:{1}", v.Key, v.Value)); } //降順 var vs2 = dic.OrderByDescending((x) => x.Value); foreach (var v in vs2) { Console.WriteLine(string.Format("{0}:{1}", v.Key, v.Value)); } 参考Dictionaryの値

    C#でDictionaryの値によるソート - Coniglioの忘備録
    sirocco
    sirocco 2015/06/25
    C# のDictionary のソートは安定ソートなんだろうか・・・。
  • 属性

    概要 属性(attribute)とはクラスやメンバーに追加情報を与えるものです。 例えば、public や private などといったC#のキーワードもある種の属性と考えることが出来ます。 public ならば「このメンバーはクラス外からも参照可能」、 private ならば「このメンバーはクラス内のみから参照可能」という追加情報が与えられます。 C++ などの既存の言語では、このような追加情報を定義する場合、 言語仕様自体を拡張し、新たにコンパイラを作り直す必要がありました。 それに対し、C# では自分で属性を定義し、クラスやメンバーに付加することが出来ます。 すなわち、ライブラリで提供されている属性や自作した属性を用いることで、 コンパイラに対する指示を行ったり、クラスの利用者に対する情報を残すことが出来ます。 属性の情報は、以下のような場面で使われます。 条件コンパイルなどの、コン

    属性
    sirocco
    sirocco 2015/06/16
    スクウェアブラケットで囲まれているのが、属性。
  • [.NET][C#]XMLをクラスに変換する/クラスをXMLに変換する

    前ページで、クラスオブジェクトをXMLファイルとして出力できました このページでは、XMLファイルとして出力する際に、一部のタグは出力しない様にする為の方法を記載します スコープによるXMLタグの出力抑制 privateなメンバやプロパティはXMLタグの出力対象となりません これまで使用してきた、Sample.model.Personモデルに以下のprivateなプロパティ "address"を追加します Sample.model.Person //サンプルコード namespace Sample.model { public class PersonModel { /// <summary> /// ID /// </summary> [System.Xml.Serialization.XmlAttribute("id")] public String ID { get; set; }

    sirocco
    sirocco 2015/06/16
    属性とかよくわからん・・・Orz
  • [.NET][C#]XMLをクラスに変換する/クラスをXMLに変換する

    XMLデータをクラスオブジェクトに変換(デシリアライズ)したり、逆にオブジェクトをXMLに変換(シリアライズ)したりしてみます .Net FrameworkにはXML DOMを扱うクラスが用意されています(System.Xml名前空間) 通常は、このSystem.Xml名前空間のクラスを使ってXMLの内容を解析したり出力したりしますが少々面倒だったりします そこで、XMLSerializerの出番です System.Xml.Serialization名前空間にあるこのクラスを使えば、XMLデータから自作クラスのオブジェクトを生成したり、またはその逆ができます 目次 Page.1 構造が単純なXMLデータをクラスオブジェクトに変換する Page.2 階層化されたXMLデータをクラスオブジェクトに変換する Page.3 繰り返しタグ(属性付き)のあるXMLデータをクラスオブジェクトに変換する

    sirocco
    sirocco 2015/06/15
    このサンプルが使いやすそう。
  • HashtableやDictionaryオブジェクトをXMLシリアル化する

    HashtableやDictionaryオブジェクトをXMLシリアル化する「オブジェクトの内容をファイルに保存、復元する」で説明している方法でHashtableやDictionaryオブジェクトをXMLファイルに保存(シリアル化)しようとすると、例外NotSupportedException(型 System.Collections.Hashtable は IDictionary を実装するため、サポートされません)が発生します。ここではこの回避法を幾つか紹介します。 なおここでは「オブジェクトの内容をファイルに保存、復元する」で説明している事柄については一切説明しませんので、基的な部分が分からないという場合は、まずそちらをご覧ください。 DataContractSerializerを使用する.NET Framework 3.0で追加されたDataContractSerializerクラ

    HashtableやDictionaryオブジェクトをXMLシリアル化する
    sirocco
    sirocco 2015/06/15
    Ruby のコードをC#に書き換えています。PStoreを使って何でも保存していたけど、C#では面倒・・・Orz
  • C#のList型とIEnumerable型の違い - 具体的に何が違うのでしょうか?MSDNを見てもよくわからないです。。。 - Yahoo!知恵袋

    反復子(イテレーター)の作成をすると、意味がわかりますよ。 反復子自体の説明は、後述するものとして、質問の違いは、以下の通りです。 なお、「List型 と IEnumerable との違い」というよりも、「List型 と、IEnumerable を使って作るクラスとの違い」になります。 <List型の場合> List型や配列は、C# の開発環境のほうで、既に用意している反復子です。 <IEnumerable の場合> IEnumerable を使って作るクラスは、自分で作る反復子です。 [反復子(イテレーター)の意味] ところで、for文で使う、カウンターをなすオブジェクトを、一般に i と言うオブジェクト名にすることが多いです。 これは、iterator と言う英語を略して、その頭の i を使っています。 その iterator は、「反復子」と言う意味です。 それでは、最初に「反復子(

    C#のList型とIEnumerable型の違い - 具体的に何が違うのでしょうか?MSDNを見てもよくわからないです。。。 - Yahoo!知恵袋
    sirocco
    sirocco 2015/06/10
    C# のList から LINQで抽出すると返す型はIEnumerable。IEnumerableってなんだ?
  • List<T>.GetRange(Int32, Int32) Method (System.Collections.Generic)

    sirocco
    sirocco 2015/06/05
    C# でtailを実現するには list.GetRange(1, (list.Count-1)); 。空っぽなリストだと例外になる。
  • WPFアプリで二重起動の防止を行う - Division By Zero

    以下の手順で、WPFアプリで二重起動を防止することができた。 ソリューションエクスプローラーからApp.xamlを開く プロパティウィンドウの「イベント」タブで、Startupをダブルクリック 下記のようなコードをApp.xaml.csに加える private void Application_Startup(object sender, StartupEventArgs e) { mutex = new System.Threading.Mutex(false, "Mutexの名称"); if (!mutex.WaitOne(0, false)) { MessageBox.Show("起動済み"); mutex.Close(); mutex = null; this.Shutdown(); } } App.xamlを開く プロパティウィンドウの「イベント」タブで、Exitをダブルクリック

    WPFアプリで二重起動の防止を行う - Division By Zero
    sirocco
    sirocco 2015/05/29
    これでOKだった。Windowを閉じるときに終了確認をしているので、それも除外する。
  • アプリケーションの二重起動を防止する

    Microsoft Visual Studio 2005 の Visual C# 8.0 で普通に Windows アプリケーションを作成すると、出来上がったプログラムは、それを実行するたびに 2 つ、3 つと起動させることが出来ます。 例えば文書を編集するようなソフトウェアだったりするとそれは便利だったりするのですけど、システム状態を監視しているソフトのように 1 つだけ動けば十分なものや、中には複数動くと困るような場面が出てくることもあって。そんなときに気にする必要が出てくるのが、今回の二重起動のお話しです。 二重起動を阻止する方法としてはいろいろな方法があるのでしょうけど、とにかく 2 番目に起動することとなったアプリケーションが、既に起動されているものを検出することが出来ればいい感じになります。そして既に起動されていることが分かったら自分自身は終了してあげれば、二重起動を防止するこ

    sirocco
    sirocco 2015/05/29
  • WPF アプリで、二重起動を禁止する

    sirocco
    sirocco 2015/05/29
    WPF アプリで、二重起動を禁止。