マッピィ Techlog

日々思うこと

C#

【C#】is演算子

C#

is演算子…知ってはいますが、使ったことはありません。 使うだけならこんな感じでしょうか。 static void Main(string[] args) { int a = 123; func(a); string b = "456"; func(b); Console.ReadLine(); // 入力待ち } static private void func(object obj…

【C#】interfaceとは

C#

普段は意識しない interface ですが、理解を深めるためにまとめました。interface の利点ですが、機能を強制することです。(そしてユーザには保証します) 色々なinterfaceがありますが、例として IDisposable を挙げます。VisualStudioで定義を見るとこん…

【C#】ImmutableArrayについて

C#

解説についてはMicrosoft .NET Blogでされています。 https://devblogs.microsoft.com/dotnet/please-welcome-immutablearrayt/ 公式なので信頼性はあります。ImmutableListとの違いはパフォーマンス。 要素数が16より小さい時は使うべきとあります。ともか…

【C#】null許容型

C#

前の話ですが、C#2.0以降で int? x = 123; というintの後ろに?をつける「null許容型(Nullable型)」が用意されたそうです。 周りでは見かけたことがなく、理解が浅かったので調べてみました。 (気になるきっかけはMore Effective C# 6.0/7.0の項目6を読ん…

【Programming】【C#】オンラインエディタを探す

ちょっとC#で試したいことがある時に、いちいちVisual Studioを起動するのは面倒です。 オンラインで検索したら見つけたのは以下のサイト「paiza」です。 https://paiza.io/ja/projects/new?language=csharp よーし、これでモリモリ試すぞ! と思ってタプル…

【C#】値型と参照型

C#

C#でstructを使っていませんでした。 値型としてはこちらを使うのだそうです。 普段は参照型のclassしか使っていませんでした。 小さなサイズの場合はstructの方がパフォーマンスがいいそうですが、ゲーム制作はそこそこ大きくなりがちだったこともあり、見…

【C#】バッキングフィールド

C#

More Effective C# 6.0/7.0を読んでいて「バッキングフィールド」という用語がありました。 これが基礎なのかそうでないのか分かりませんが、学ぶことは大切です。 class ClassA{ ... public int hoge { get; set; } のように指定するプロパティを「自動実装…

【C#】More Effective C# 6.0/7.0

C#

ふーむ、一歩上にいくために、この本は欲しい。 予約しておこう。 More Effective C# 6.0/7.0 作者: Bill Wagner,吉川邦夫 出版社/メーカー: 翔泳社 発売日: 2018/02/20 メディア: 大型本 この商品を含むブログ (1件) を見る

【C#】Unix時間からUTCに変換

C#

簡略化しているため、動かないかもしれませんが。 public class test { private readonly static DateTime UnixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); private void exec() { DateTime date = UnixEpoch.AddSeconds(unixTime); } }

【C#】数字のカンマ区切り

C#

String.Format("{0:#,0}", 1234567) →1,234,567 昨日に引き続きC#。 この書式では3桁区切りなのですが、n桁区切りなんてのもできるのかな?

【C#】配列に指定要素があるかを調べる

C#

If(Array.IndexOf(array, “abc”) >= 0) 今まで泥臭いやり方しかしてこなかったので、こういう方法に出会うと感動します。 C#にはいろいろ便利そうなので、調べていきたいです。

【C#】予約語を識別子に使う方法

C#

まず問題の発端ですが、JSONの解析で、 MiniJSON.Json.ToObject(object output, object input) を使っていて、inputに含まれる要素がC#の予約語にかち合ってしまい、output側に定義できなくなってしまいました。 自分の例でいえば、「params」という単語でし…

【C#】【Unity】forとforeachの速度の差

teratailの質問の一部であったので、気になりました。 C# memory and performance tips for Unity | somasim games によると、foreachの方が遅いとのこと。 理由としては、enumeratorが内部的に生成されることによるオーバーヘッドだそうです。 コードを引用…

【C#】DictionaryとList

C#

Unity C# DictionaryとListの使いかた(ざっくり) - 週刊SleepNel新聞 一応C++にどちらもあるみたいですが、Dictionaryは使っていませんでした。 C#になって、ちょいちょい使ってはいます。 Dictionaryはキーと値を持っていて、Listは順次追加できる配列み…

【C#】配列のシャッフル

C#

検索したら、以下の方法が簡潔でいいです。 int ary = new int { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int[] ary2 = ary.OrderBy(i => Guid.NewGuid()).ToArray(); Guid.NewGuid() というのはランダムな128bit数値を生成する関数です。 UUIDについては、4/22の…