C#

継承について (C#)

C#

基本的に継承させない。 コードを確認する際に継承元、継承先の2つを理解しないといけない。複雑度が増す。 インターフェイスの継承はあり。 機能を継承するだけなので、複雑度が低い。 ポリモーフィズム(多様性)で対応できそうならあり。 基本部分が同じで…

C# ListとDictionaryの中身表示

C#

class TestData { Dictionary<int, Dictionary<int, string>> data5 = new Dictionary<int,Dictionary<int, string>> { { 1, new Dictionary<int, string> { {10, "aiueo" } } }, { 2, new Dictionary<int, string> { {20, "aaaaa" } } }, { 3, new Dictionary<int, string> { {30, "10000" } } }, }; Dictionary<int, int>…</int,></int,></int,></int,></int,dictionary<int,></int,>

C# インデクサー Enum 組み合わせる

C#

public class TestScript { public enum User { Name, Hp, Mp, Skill, }; private Dictionary<User, string> dic = new Dictionary<User, string> { {User.Name, "taro" }, {User.Hp, "100" }, {User.Mp, "200" }, {User.Skill, "kick" }, }; public enum Setting { IsVisible = 0, IsAut</user,></user,>…

インターフェイスとabstract class / インターフェイスとジェネリック

インターフェイスと多態性 (WWWの生成) // WWwの生成 public interface IRequest { UnityEngine.WWW create(); } // リクエストに必要なデータを追加 public abstract class Request : IRequest { public abstract UnityEngine.WWW create(); protected read…

1行csv読み込みw

C#

static string[][] getCsv(string path) { return File.ReadLines(path).Select(x => x.Split(new []{','}, StringSplitOptions.RemoveEmptyEntries)).ToArray(); }

簡単な内部結合

C#

var product = new[]{ new { Id = 1, name = "item1" }, new { Id = 2, name = "item2" }, new { Id = 3, name = "item3" }, new { Id = 5, name = "item5" }, }; var price = new[] { new { Id = 1, price = 100 }, new { Id = 2, price = 200 }, new { Id …

GroupByで重複しているIDをグループ化

C#

var ids = new[] { 1, 3, 5, 7, 9, 1, 2, 3 }; // {id, index}の匿名型作成 // idをグループ化 var group_index = ids .Select((x, index) => new {id = x, index = index}) .GroupBy(x => x.id); // id == 1のグループとりだす var check_id = 1; var group…

全角アルファベット → 半角アルファベット変換

C#

C#ではVisualBasicのStrConvを使えばできるみたいですが、 ちょっとめんどくさい設定が必要になるので、適当に自作。 // 全角アルファベット -> 半角アルファベット public static string convertHalf(string s) { var all = "abcdefghijklmn…

PropertyGrid + xml用クラス

C#

追記 A Generic Clamp Function for C# - CodeProject clamp関数を作ればもうチョイ見やすくなる。

C# bitset

C#

C#でbitsetを使いたいなと思ったのですがなかったので適当にネットで調べてみたら、C++でbitsetを自作されていたみたいなので、ちょっとパクってC#で作ってみた。 // --------------------------------------------- // BitSetTest.cs // ------------------…

C# 一行でtxtを全て読み込む

C#

string[] file = File.ReadAllLines("test.txt", Encoding.GetEncoding("Shift_JIS")); 戻り値はstring配列になりますので注意してください。

C#の昇順、降順(クエリ演算)

C#

http://social.msdn.microsoft.com/Forums/ja/csharpgeneralja/thread/30eed626-a891-42af-a764-251ac82103db

リファクタリング

C#

リファクタリングとは何か? ソフトウェアの外部的振る舞いを保ちつつ、理解や修正が簡単になるように、内部構造を改善することです。リファクタリングは非常に統制された方法でコードを洗練していくため、バグの入り込む余地が少なくなっています。 データ…

デリゲート(delegate)

C#

デリゲート メソッドを参照するための型。(匿名メソッド?) あとこれ以外に長いですね。とりあえず基礎から。 delegate void SomeDelegate(int a); class DelegateTest { static void A(int n) { Console.WriteLine("A({0})が呼ばれました。", n); } static …

assertによるエラー表示(デバック用)

C#

System.Diagnostics.Trace.Assert(false, "プログラムエラー"); 第1引数がfalseでエラー表示 第2引数がmessage 第3引数は詳細などmessageも加えられます。 プログラムが途中中断するので、デバッグ時とかに使えばいいと思います。現在のソースファイルと…

sealed 修飾子

C#

sealed修飾子をクラスに適用すると、それ以外のクラスは継承できなくなります。 class X { } class Y { } public sealed class A : X { } public class B : A { } //error class Aはシール型なので継承できない sealed修飾子は、基本クラスの仮想メソッドま…

リストをクローンでコピー

C#

//通常のやつ ※こいつをリストにする public class Test : ICloneable { public int n; public Test(){} //コピーコンストラクタ public Test(Test ts) { n = ts.n; } //クローン public object Clone() { return new Test(this); } } //通常のやつのリスト…

インターフェイス クローン実装

C#

//クローンはSystem.Clonable?を使っています。 public class test : ICloneable { public int value; public test() {} public test(test ts) { value = ts.value; } public object Clone() { Console.WriteLine(value); return new test(this); } } static…

インターフェイス(interface)と抽象クラス(abstract class)、どっち使う?

C#

インターフェイス interface ICloneable { object Clone(); } class Employee : ICloneable { private string name; public string Name{ get{return name;} set{name = value;} } public object Clone() { return new Employee(Name); } } 抽象クラス abstr…

日付・時間書き込み

C#

static void Main(string[] args) { String file = "test.txt"; (using(StreamWriter sw = new StreamWriter(file, false, Encoding.GetEncoding("Shift_JIS"))) { DateTime t = File.GetLastWriteTime(file); sw.Write(t); } }

リストクラスも簡潔に

C#

リストで配列のようなことをやると手間です。 配列の場合 int[] a = { 1, 2, 3, 4, 5}; for(int i=0; i < a.Lenght; ++i) Console.WriteLine(a[i]); リストの場合 List list = new List(); list.Add(5); list.Add(4); list.Add(3); list.Add(2); list.Add(1)…

定数も変換可能?

C#

public static void Main(string[] args) { string s = 1.ToString(); Console.WriteLine(s); } よくわかりません。

拡張メソッド

C#

静的クラス中に、第1引数にthisキーワードを修飾子として付けたstaticメソッド static class StringExtensions { public static string AddTest(this string s) { s = "ok"; return s; } } string s = "This is a Test String."; string s1 = StringExtensi…

例外 try catch throw

C#

static void Main(string args) { CMain main = new CMain(); int a = new int[10]; try { Console.WriteLine(a[11]); } catch (ArgumentOutOfRangeException) { //エラー分投げ 例外発生 throw; } 例外処理の中で、また例外処理をしたい場合に使用するみた…

ハッシュテーブル

C#

キー(key)と値(value) キーが値を保持している。 ht["japan"] = "日本"; //key = "japan" value = "日本" ht["money"] = 100; //key = "money" value = 100 [C#] Hashtable ht = new Hashtable(); //2種類の追加パターン ht["japan"] = "日本"; ht.Add("chin…

リテラル

C#

プログラムでは、数値や文字列を直接記述したものをリテラルと呼ぶ。 整数、浮動小数、文字など。 Console.WriteLine( @"a iue o" ); エスケープ文字をそのまま解釈してくれる http://wisdom.sakura.ne.jp/programming/cs/cs3.html