マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

2000年から開発が始まったマイクロソフト(アンダース・ヘルスバーグ率いるチーム)が設計・開発したプログラミング言語。

詳細

パラダイム

マルチパラダイム

型付け

他の言語との関係

影響を受けた言語

C++, Delphi, Eiffel, Java, LISP

影響を与えた言語

D言語, F#, Java, Nemerle, Vala

その他

プラットフォーム

Windows, macOS, Linuxなど

ライセンス

Apacheライセンス (Roslyn)

スニペット

忘れ易いスニペット置き場が欲しかったので。

変数定義

var

型推論を利用したローカル変数の宣言。
一時的に使用される型を簡単に定義する。

var her = new { Name = "Jane Doe", Age = 20 }
var him = new { Name = "John Doe", Age = 20 }

dynamic

ref変数

値型を参照型として扱う。

// ref戻り値をref変数で受け取る
ref int max = ref Max(ref x, ref y);
// limitとmaxは同じ値を参照する
ref int limit = ref max;

クラス定義

部分型

開発ツールなどが裏で使用していることが多い。

class MyClass { int a; int b; }

↓↓↓

partial class MyClass { int a; }
partial class MyClass { int b; }

プロパティ

自動実装プロパティ

private int __value;
public int Value
{
  get { return __value; }
  private set { __value = value; }
}

↓↓↓

public int Value { get; private set; }

メソッド定義

オプション引数

public int MethodB(int A = 0, int B = 0, int C = 0)
{
  return A + B + C;
}

ref戻り値

ref変数で受け取る場合、
ref戻り値として返すなどする。

名前付き引数

上記のオプション引数を選択的に指定できる。

public void MethodA()
{
  // 第1引数と第2引数を指定、第3引数は未指定:
  Console.WriteLine("Ans: " + MethodB(1, 2));  // Ans: 3 … 1 + 2 + 0となっている

  // 第1引数と第3引数を指定、第2引数は未指定:
  Console.WriteLine("Ans: " + MethodB(A: 1, C: 3));  // Ans: 4 … 1 + 0 + 3となっている
}

ジェネリック

クラスでも使用可能。STLっぽく書く(コンセプトは違うっポイ)。

ラムダ式

単なる「delegate」代替なので、

上記のように「Action、Funcのデリゲートの型」を使用する。

拡張メソッド

初期化

配列

オブジェクト

自動実装プロパティ

C#6から自動実装プロパティの初期化が可能。

class Class1
{
    public string Auth { get; set; } = "BlahBlah";
}

演算子

nameof

条件分岐

as, is式と拡張

switch文と拡張

三項演算子

以下の例で、始めにaを評価してその評価値が、

null結合演算子

object obj1 = null;
object obj2 = new object();
object obj3 = new object();
return obj1 ?? obj2 ?? obj3; // obj2 を返す
int? i = null;
int j = i ?? -1; // nullをint型に代入することはできない

参考

LINQ

ラムダ式って

拡張メソッド


Tags: :.NET開発, :プログラミング


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS