転職を繰り返したサラリーマンの多趣味ブログ

30才未経験でSEに転職した人の多趣味ブログ

プログラミング

【技術書メモ】配列とList<T>の操作まとめ

普段めちゃめちゃよく使う、配列とList。これは自分だけかも知れないが、普段の仕事で書くコードにあまり配列を使わない印象がある。Listの使用率が圧倒的に多い。 けど、配列が使えないと困る部分はあるので、一緒にまとめていく。 配列あるいはListに同じ…

【技術書メモ】文字列の操作まとめ

Atcoderなんかのような競技プログラミングをやっていると、必ず出てくるのが文字列の操作。文字列の中からある文字列を削除したり、くっつけたりと、そういった類の問題が出てくる印象がある。 で、ここらへんはすでにメソッドが用意されているので、知って…

【技術書メモ】C#においてのプロパティ書き方まとめ

Javaでプログラムを書いていたころ、プロパティは以下のように書いていた。ゲッター、セッターだ。 private string name; public string SetName(string _name) { name = _name; } public string GetName() { return name; } けど、C#ではこんな書き方ができ…

条件演算子、null合体演算子まとめ

よくif文使いがちだが、if文は簡単だし、分かりやすい反面、たしかに行数は多くなる。 var list = new List<int> { 1, 2, 3, 4, 5, }; var key = 2; int num; if (list.Contains(key)) { num = 1; else num = 2; リストに2が含まれていたら変数numに1を、リストに</int>…

【技術書メモ】LINQ to Objectsまとめ

C#の特徴でもあるLINQ to Objects。自分の中では、C#でSQLの構文が使えるイメージでいる。それは、LINQに用意されているメソッドが、「Where」、「Select」などクエリ演算子と呼ぶからだ。 var list = new List<string> { "Tyokyo", "New Delhi", "Bangkok", "London</string>…

【技術書メモ】C#ラムダ式まとめ

何度も勉強しているが、すぐに忘れて使えなくなるのがラムダ式。ということで、何度も何度も勉強し直しています。 正直に言うと、「ラムダ式とは何ですか?」と聞かれてもうまく説明できる自身がない。自分の中の理解としては、ラムダ式はPredicateデリゲー…

C#を勉強する16_その他の文字列操作

文字配列から文字列を生成する // 配列の生成 var chars = new char[] { 'P', 'r', 'o', 'g', 'r', 'a', 'm', }; // 文字配列から文字列の生成 var str = new string(chars); 数値を文字列に変換する C#では、数値を文字列に変換する方法が、「ToStringメソ…

C#を勉強する15_文字列の連結と分割

次は文字列の連結と分割。文字連結といえば、+演算子。 var name = "山田" + "TARO"; 連結はこの+演算子でだいたい事足りるが、文字列配列の場合はJoinメソッドを使うと便利な使い方ができる。 var languages = new[] { "C", "Java", "VB", "Ruby" ,}; // 区…

C#を勉強する14_文字列の変換

次は本当によく出てくる文字列の変換。競技プログラミングの問題で、「本当は'L'と入力するところを、誤って'i'と入力した。プログラムで'i'の部分を'L'に変換すること」などがある。 文字列の前後の空白を取り除く var target = " non-whitespace "; // 空…

C#を勉強する13_文字列の検索と抽出

前回は、文字列の判定だった。そのため戻り値はboolだったが、今度は文字列の抽出を行う。 部分文字列を検索し、その位置を求める var target = "1234ABC567"; // 0から始まるため「4」を返す var index = target.IndexOf("ABC"); 文字列の一部を取り出す va…

C#を勉強する12_文字列の判定

前回に引き続き、文字列の操作編。今回は文字列の判定です。 文字列に関わらず、ソースを書く際気をつけないといけないのが、nullpointerexceptionだ。Stringクラスの静的メソッドには、このnull判定が用意されている。 // null あるいは空文字列の場合、tru…

C#を勉強する11_文字列の比較

転職活動のなかで、paizaに出会った。 paiza.jp paizaのスキルチェックでは、プログラミングの問題を解くことができる。この問題を解く際に、文字列やリストを操作するメソッドを知っていると、ソースを簡潔に書くことができる。C#には色々便利なメソッドが…

【Unity】ダメージをくらったら、Spriteを点滅させて無敵時間を作る方法

横スクロールアクションや、シューティングゲームでよくあるあれです。 まずSpriteを点滅させる方法は、SpriteRendererコンポーネントのアルファ値を変化させてやれば、実装できる。そのときのソースコードがこれ。 public SpriteRenderer sp; // ダメージ判…

【Unity】TextがSpriteの後ろの隠れてしまう問題

タイトルそのまんまです。ゲーム作ってたら、こんな感じでTextオブジェクトがSpriteの後ろになってしまう問題が発生。 Sprite同士なら簡単にいくのだが、TextとSpriteだとどうしていいのかわからず、結構悩んでいた。 で、解決した方法がこちら。 Textオブジ…

C#を勉強する⑩_初期化に関して

基本的には、変数の宣言と値の設定はセットで行うことがイディオム(慣用的なコード)とされている。そうしないと、コードの可読性が落ちるから。例としては、以下のような感じ。 int age; Console.WriteLine("hoge"); // 宣言と値の設定の間に、別なコード…

C#を勉強する⑨_可変長引数、オプション引数、コンストラクタ定義について

可変長引数 メソッド定義で、引数の数を限定しない書き方。引数は、配列として扱う。 public static void Main(string[] args) { // 3が出力される Console.WriteLine(LastNum(1, 2, 3)); // 5が出力される Console.WriteLine(LastNum(1, 2, 3, 4, 5)); } pu…

C#を勉強する⑧_プロパティの初期化

これまでプロパティの初期化といったら、コンストラクタでやるものだと思ってた。 class Sale { public int number { get; set; } // コンストラクタ public Sale() { number = 10; } } けど、C#ではコンストラクタを使わずにプロパティの初期化ができる。こ…

C#を勉強する⑦_条件演算子、null合体演算子、null条件演算子

条件演算子 if文で書くと4行になるところが、条件演算子を使うと1行で書ける。たしかに便利だが、慣れないと普通にif文使ってしまいそう。 // ?より前が条件式 // trueなら1、falseなら0を返却 var num = list.Contains(key) ? 1 : 0; null合体演算子 // Get…

C#を勉強する⑥_LINQ to Objects

LINQは「Language Integrated Query」の略。自分が勉強したイメージだと、SQLの構文をC#で使えるイメージ。LINQを使うには、usingディレクティブを使って名前空間System.Linqを指定する。 イメージでSQLと言ったのは、LINQにはクエリ演算子なるものが用意さ…

C#を勉強する⑤_List<T>クラスとラムダ式の組み合わせ

Listクラスには、デリゲートを引数に受け取るメソッドが用意されている。 paizaなどで問題を解く際、Listの操作をするシチュエーションは多々ある。ラムダ式を使うことでListの操作を簡潔にかけるので、ここでまとめておく。 なおこれから書くメソッドは、以…

C#を勉強する④_ラムダ式

C#を勉強すると、ラムダ式の壁にぶつかった。何度勉強しても、難しく感じる。ラムダ式を書くにあたり、「ラムダ式の{}の中が1つの文の場合は、{}とreturnを省略することができる」などのルールが存在するが、それらを全て覚えることは不可能だと判断した。 …

最近転職したので、自分の転職活動をまとめてみた

最近、転職しました。もちろん同じSEではあるけれど、転職活動は結局3ヶ月ほどやった。せっかく転職するんだから今よりもいい条件で働きたくて、色々悩んでたら3ヶ月も経っていた。働き方としては以下を考えた。 正社員_自社開発 正社員_客先常駐 正社員_在…

C#を勉強する③_インターフェイスについて

静的メソッドとインスタンスについて 静的メソッドからは、自分自身のインスタンスを呼び出せない。よく例にあげられるのが、Mainメソッドでのこと。 このように、静的メソッド内では、自分自身のインスタンスメソッドは呼び出せない。 // 静的メソッドとし…

C#を勉強する②_値型と参照型を理解する。

分かったつもりになっても、ちょっと時間がたてば混乱するのが値型と参照型の違い。 まず、例となるソースコードを書いてみた。ちなみに、構造体は値型。 public class Program { public static void Main(string[] args) { MyClass myClass = new MyClass()…

C#を勉強する①_継承の基礎を理解する。

自分はUnityでゲームを作っている。つい先日も、新しいゲームをリリースした。 uuc1h.hatenablog.jp UnityではC#の言語が採用されているので、必然的にC#の知識が必要になってくる。 普段の業務ではJavaを使っているので、なんとなくC#も書けるがやはり1から…

【Unity】30才からプログラミングを始めたサラリーマンが、AndroidアプリをGoogle Playへリリースした。

少し時間が空いたけど、Androidアプリを新たにリリースしました。それがこちら。 play.google.com 30秒間に画面をタップした回数を記録するゲーム。スマホアプリにはよくあるゲームだ。Unityでゲームは作っているが、これまで作ったゲームはUnityの技術書の…

【技術書メモ】C#プログラミングのイディオム / 定石&パターン⑧

今回は、日付、時刻の操作方法。 DateTime構造体 DateTime構造体のインスタンス生成の主な方法と、よく使われるTodayプロパティとNowプロパティ。 // インスタンス生成 var dt1 = new DateTime(2016, 2, 15); var dt2 = new DateTime(2016, 2, 15, 8, 45, 20…

【技術書メモ】C#プログラミングのイディオム / 定石&パターン⑦

今回はディクショナリの操作について。ディクショナリと聞くと馴染みがないが、JavaでいうMapと認識している。 ディクショナリの基本操作 ディクショナリの初期化。 var flowerDict = new Dictionary<string, int>() { {"sunflower", 400}, {"pansy", 300}, }; なお、ディ</string,>…

【技術書メモ】C#プログラミングのイディオム / 定石&パターン⑥

今回は、配列とListの操作です。 配列とListは似たところがあるけど、自分はほぼListしか使わないかも。配列の使い所がわからない。 この章ではLINQのさらに詳しい使い方も説明してくれるらしいので、頑張ります。 要素の設定 配列あるいは、Listを同じ値で…

【技術書メモ】C#プログラミングのイディオム / 定石&パターン④

本のタイトルにもなっているイディオム。 そもそもイディオムって何だろうと思っていたが、これはコーディングレベルでよく利用される汎用的なコードのこと。 なので、このイディオムを覚えれば、品質もよく、正しいコードを書けることに繋がりそう。特に自…