Movatterモバイル変換


[0]ホーム

URL:


Shota Baba, profile picture
Uploaded byShota Baba
9,765 views

知って得するC#

Embed presentation

Downloaded 66 times
知って得するC#株式会社ハ・ン・ドプログラマ馬場翔太http://baba-s.hatenablog.com/
スライド内容1. C#の機能紹介2. C#のツール紹介
C#の機能紹介
クラスの定義を複数のファイルに分けるpartialキーワード// CharacterA.cspublic partial class Character{private int id;}// CharacterB.cspublic partial class Character{private string name;}http://d.hatena.ne.jp/pknight/20130206/1360151414
値型でnullを扱うnull許容型int? x = 123;int? y = null;http://ufcpp.net/study/csharp/sp2_nullable.htmlhttp://bleis-tift.hatenablog.com/entry/cmp_Option_Nullable
nullチェックと代入をスマートに書く??演算子(null合体演算子)// 条件演算子の場合z = x != null ? x : y;// ??演算子の場合z = x ?? y;http://d.hatena.ne.jp/pknight/20130206/1360145446http://odashinsuke.hatenablog.com/entry/20090522/1243002878
Unityにおける??演算子の使用例(1)// if文の場合var boxCollider =gameObject.GetComponent<BoxCollider>();if (boxCollider == null){boxCollider =gameObject.AddComponent<BoxCollider>();}http://udasankoubou.blogspot.jp/2013/08/unitynull.html
Unityにおける??演算子の使用例(2)// ??演算子の場合var boxCollider =gameObject.GetComponent<BoxCollider>() ??gameObject.AddComponent<BoxCollider>();http://udasankoubou.blogspot.jp/2013/08/unitynull.html
インスタンス生成が不可能なクラスを作るstaticクラス// privateコンストラクタの場合public class MyClass{private MyClass(){}}// staticクラスの場合public static class MyClass{}http://ufcpp.net/study/csharp/oo_static.html#classhttp://ykimisaki.hatenablog.jp/entry/2013/07/10/220545
ローカル変数の型の宣言を省略する(1)varキーワード// varキーワードを使わない場合の宣言string name = "";MyClass obj = new MyClass();Dictionary<string, MyClass> dict =new Dictionary<string, MyClass>();
ローカル変数の型の宣言を省略する(2)varキーワード// varキーワードを使う場合の宣言var name = "";var obj = new MyClass();var dict = new Dictionary<string, MyClass>();
既存の型にメソッドを追加する(1)拡張メソッド// 文字列を大文字に変換する(通常の関数の場合)public static class StringUtility{public static string UpperCase(string str){// ...}}str = StringUtility.UpperCase(str);http://ufcpp.net/study/csharp/sp3_extension.html
既存の型にメソッドを追加する(2)拡張メソッド// 文字列を大文字に変換する(拡張メソッドの場合)public static class StringUtility{public static string UpperCase(this string str){// ...}}str = str.UpperCase();http://ufcpp.net/study/csharp/sp3_extension.html
Unityにおける拡張メソッドの使用例(1)// エラーtransform.position.x = 0;// OKvar pos = transform.position;pos.x = 0;transform.position = pos;http://kou-yeung.hatenablog.com/entry/2013/11/18/233000
Unityにおける拡張メソッドの使用例(2)// 通常の関数の場合public static class TransformUtility{public static void SetPositionX(Transform transform, float x){var pos = transform.position;pos.x = x;transform.position = pos;}}TransformUtility.SetPositionX(transform, 0);http://kou-yeung.hatenablog.com/entry/2013/11/18/233000
Unityにおける拡張メソッドの使用例(3)// 拡張メソッドの場合public static class TransformUtility{public static void SetPositionX(this Transform transform, float x){var pos = transform.position;pos.x = x;transform.position = pos;}}transform.SetPositionX(0);http://kou-yeung.hatenablog.com/entry/2013/11/18/233000
オブジェクトの初期化をスマートに書く(1)初期化子// Add関数による初期化(List型)var list = new List<int>();list.Add(1);list.Add(2);list.Add(3);// 初期化子による初期化(List型)var list = new List<int>{ 1, 2, 3, };http://cs.hatenablog.jp/entry/2013/06/24/190945
オブジェクトの初期化をスマートに書く(2)初期化子// Add関数による初期化(Dictionary型)var dict = new Dictionary<string, int>();dict.Add("one", 1);dict.Add("two", 2);// 初期化子による初期化(Dictionary型)var dict = new Dictionary<string, int>(){{ "one", 1 },{ "two", 2 },};http://cs.hatenablog.jp/entry/2013/06/24/190945
一時的に利用する型の定義を省略する匿名型// 匿名型を使わない定義の場合var characterId = 0;var characterName = "";// 匿名型を使う定義の場合var character = new { Id = 0, Name = "" };// character.Id// character.Namehttp://ufcpp.net/study/csharp/sp3_inference.html
配列を作成する際に型を省略する暗黙型付け配列// 通常の配列作成var array = new string[] { "1", "2", "3", "4", };// 暗黙型付け配列var array = new [] { "1", "2", "3", "4", };http://gushwell.ldblog.jp/archives/51115733.html
引数の順序を自由に書く名前付き引数static int Sum(int x = 0, int y = 0, int z = 0){}int s1 = Sum(x: 1, y: 2, z: 3);int s2 = Sum(y: 2, z: 3, x: 1);int s3 = Sum(y: 1);http://noriok.hatenadiary.jp/entry/2013/08/18/014408
高速な繰り返し処理を書く(1)ForEachメソッド// foreach文の場合foreach (int n in list){Console.WriteLine(n);}http://www.atmarkit.co.jp/fdotnet/extremecs/extremecs_03/extremecs_03_12.html
高速な繰り返し処理を書く(2)ForEachメソッド// 配列の場合Array.ForEach(array, n => Console.WriteLine(n));// List型の場合list.ForEach(n => Console.WriteLine(n));http://www.atmarkit.co.jp/fdotnet/extremecs/extremecs_03/extremecs_03_12.html
検索に特化したメソッドを使う(1)Findメソッド// foreach文の場合var result = 0;foreach (var n in list){if (n == 0){result = n;}}http://www.atmarkit.co.jp/fdotnet/extremecs/extremecs_04/extremecs_04_03.html
検索に特化したメソッドを使う(2)Findメソッド// 配列の場合var result = Array.Find(array, n => n == 0);// List型の場合var result = list.Find(n => n == 0);http://www.atmarkit.co.jp/fdotnet/extremecs/extremecs_04/extremecs_04_03.html
newで生成するオブジェクトを定数にするstatic readonly// OKprivate const int MaxValue = 100;// エラーprivate const Vector2 Position =new Vector2(100, 100);// OKprivate static readonly Vector2 Position =new Vector2(100, 100);http://msdn.microsoft.com/ja-jp/library/aa645753.aspx
安全にキャストするas演算子// 失敗したら例外発生var str = (string)obj;// 失敗したらnullを返すvar str = obj as string;http://ichitcltk.hustle.ne.jp/gudon/modules/pico_rd/index.php?content_id=131
読み取り専用の配列やリストを作る(1)ReadOnlyCollectionクラスprivate List<int> datas = new List<int>();// ReadOnlyCollectionを使用しないで公開public List<int> Datas{get { return datas; }}http://fernweh.jp/b/csharp-readonly-collections/
読み取り専用の配列やリストを作る(2)ReadOnlyCollectionクラスprivate List<int> datas = new List<int>();// ReadOnlyCollectionを使用して公開public ReadOnlyCollection<int> Datas{get { return datas.AsReadOnly(); }}http://fernweh.jp/b/csharp-readonly-collections/
他のプログラムを起動するProcessクラス// メモ帳を起動するProcess.Start("Notepad");// ファイルを指定してメモ帳を起動するProcess.Start("Notepad", @"C:¥Hoge.txt");// 規定のエディタで画像ファイルを開く(関連付け起動)Process.Start(@"C:¥Hoge.bmp");http://jeanne.wankuma.com/tips/csharp/process/
SQLライクなループ構文を書く(1)LINQ// 偶数を検索するvar array = new []{ 1, 2, 3, 4, 5 };// ループ構文を使用する場合var result = new List<int>();foreach (var x in array){if (x % 2 == 0){result.Add(x);}}
SQLライクなループ構文を書く(2)LINQ// 偶数を検索するvar array = new []{ 1, 2, 3, 4, 5 };// LINQを使用する場合var result = from x in arraywhere x % 2 == 0select x;
SQLライクなループ構文を書く(3)LINQ// 数を数える// ループ構文を使用する場合foreach (var n in list){if (n == 0){num++;}}
SQLライクなループ構文を書く(4)LINQ// 数を数える// LINQを使用する場合var num = (from n in list where n == 0).Count();
C#のツール紹介
ReSharper(Visual Studioのアドイン)
できること•コード監視•ハイライト拡張•クラスや変数の使用箇所の検索•リファクタリング•タスク管理
コード監視•未定義の関数を作成•命名規則の確認•コードの簡略化
未定義の関数を作成
命名規則の確認
varキーワードに置き換える
null許容型に置き換える
null合体演算子に置き換える
初期化子に置き換える
初期化子に置き換える
暗黙型付け配列に置き換える
ハイライト拡張
ハイライト拡張•未使用のusingや変数、関数が灰色になる•エラーになるコードが赤色になる•コーディングルールに沿わないコードに破線が付く
30日間無料
ありがとうございました

Recommended

PDF
今からでも遅くないC#開発
PDF
C# コーディングガイドライン 2013/02/26
PPTX
C#や.NET Frameworkがやっていること
PDF
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
PPTX
.NET Core 2.x 時代の C#
PPTX
C# 9.0 / .NET 5.0
PPTX
C# 7.2 with .NET Core 2.1
PDF
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
 
PPTX
競技プログラミングのためのC++入門
PPTX
C#の書き方
PPTX
Orange Cube 自社フレームワーク 2015/3
PPTX
C# 8.0 Preview in Visual Studio 2019 (16.0)
PDF
C++ ポインタ ブートキャンプ
PDF
競技プログラミングにおけるコードの書き方とその利便性
PDF
Emcpp item31
PDF
基礎からのCode Contracts
KEY
Objc lambda
PDF
プログラムの処方箋~健康なコードと病んだコード
PDF
C++入門?
 
PDF
templateとautoの型推論
PDF
今日からできる!簡単 .NET 高速化 Tips
PPTX
Deep Dive C# 6.0
PDF
C#coding guideline その2_20130325
PDF
C++ Template Meta Programming の紹介@社内勉強会
PPTX
T69 c++cli ネイティブライブラリラッピング入門
PDF
オブジェクト指向できていますか?
PPTX
Visual C++で使えるC++11
PPTX
C#言語機能の作り方
PDF
C#勉強会 ~ C#9の新機能 ~
PPTX
Unity C#3からC#6に向けて

More Related Content

PDF
今からでも遅くないC#開発
PDF
C# コーディングガイドライン 2013/02/26
PPTX
C#や.NET Frameworkがやっていること
PDF
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
PPTX
.NET Core 2.x 時代の C#
PPTX
C# 9.0 / .NET 5.0
PPTX
C# 7.2 with .NET Core 2.1
PDF
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
 
今からでも遅くないC#開発
C# コーディングガイドライン 2013/02/26
C#や.NET Frameworkがやっていること
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
.NET Core 2.x 時代の C#
C# 9.0 / .NET 5.0
C# 7.2 with .NET Core 2.1
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
 

What's hot

PPTX
競技プログラミングのためのC++入門
PPTX
C#の書き方
PPTX
Orange Cube 自社フレームワーク 2015/3
PPTX
C# 8.0 Preview in Visual Studio 2019 (16.0)
PDF
C++ ポインタ ブートキャンプ
PDF
競技プログラミングにおけるコードの書き方とその利便性
PDF
Emcpp item31
PDF
基礎からのCode Contracts
KEY
Objc lambda
PDF
プログラムの処方箋~健康なコードと病んだコード
PDF
C++入門?
 
PDF
templateとautoの型推論
PDF
今日からできる!簡単 .NET 高速化 Tips
PPTX
Deep Dive C# 6.0
PDF
C#coding guideline その2_20130325
PDF
C++ Template Meta Programming の紹介@社内勉強会
PPTX
T69 c++cli ネイティブライブラリラッピング入門
PDF
オブジェクト指向できていますか?
PPTX
Visual C++で使えるC++11
PPTX
C#言語機能の作り方
競技プログラミングのためのC++入門
C#の書き方
Orange Cube 自社フレームワーク 2015/3
C# 8.0 Preview in Visual Studio 2019 (16.0)
C++ ポインタ ブートキャンプ
競技プログラミングにおけるコードの書き方とその利便性
Emcpp item31
基礎からのCode Contracts
Objc lambda
プログラムの処方箋~健康なコードと病んだコード
C++入門?
 
templateとautoの型推論
今日からできる!簡単 .NET 高速化 Tips
Deep Dive C# 6.0
C#coding guideline その2_20130325
C++ Template Meta Programming の紹介@社内勉強会
T69 c++cli ネイティブライブラリラッピング入門
オブジェクト指向できていますか?
Visual C++で使えるC++11
C#言語機能の作り方

Similar to 知って得するC#

PDF
C#勉強会 ~ C#9の新機能 ~
PPTX
Unity C#3からC#6に向けて
PDF
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
PPTX
C# LINQ入門
PPT
CLR/H No.35-2
PDF
Unityで覚えるC#
PPTX
C#6.0の新機能紹介
PDF
Unity2015_No10_~UGUI&Audio~
 
PDF
LINQ in Unity
PPTX
C# design note sep 2014
PDF
知って得するC# LINQ to Objects編
PPTX
復習も兼ねて!C#6.0-7.0
PDF
20141129-dotNet2015
PDF
Inside FastEnum
PPTX
.NET Compiler Platform
PPTX
メタな感じのプログラミング(プロ生 + わんくま 071118)
PDF
Burikaigi 2023「C# Live Coding!」 小島の分
PPTX
Microsoft Learn で C# を学ぶとどんな感じ?
PDF
Unity + C#講座①
 
PDF
C#勉強会
C#勉強会 ~ C#9の新機能 ~
Unity C#3からC#6に向けて
C#の新機能勉強会 ~ C#7、8の新機能を活用して速く安全なプログラムを書こう~
C# LINQ入門
CLR/H No.35-2
Unityで覚えるC#
C#6.0の新機能紹介
Unity2015_No10_~UGUI&Audio~
 
LINQ in Unity
C# design note sep 2014
知って得するC# LINQ to Objects編
復習も兼ねて!C#6.0-7.0
20141129-dotNet2015
Inside FastEnum
.NET Compiler Platform
メタな感じのプログラミング(プロ生 + わんくま 071118)
Burikaigi 2023「C# Live Coding!」 小島の分
Microsoft Learn で C# を学ぶとどんな感じ?
Unity + C#講座①
 
C#勉強会

知って得するC#


[8]ページ先頭

©2009-2025 Movatter.jp