C#第一、二部分ノートを深く理解する

4798 ワード

  • C#の進化(プロパティ)
  • C#1:読み取り専用属性、弱型集合
  • C#2:プライベート属性付与方法、強いタイプのセット
  • C 3:自動実装属性、拡張集合およびオブジェクト初期化
  • C 4:名前付き実パラメータのより明確な呼び出し構造関数と方法
  • //2
    string name
    public string Name{
        get {return name;}
        private set {name = value;}
    }
    
    //3
    public string Name{get; private set;}
  • C#進化(ソート関数)
  • C#1:弱タイプの比較機能で、依頼ソート
  • はサポートされていない.
  • C#2:強いタイプの比較機能、依頼比較、匿名メソッド
  • C 3:式、拡張方法、リストが並べ替えられていない状態を維持できるようにする
  • //2
    products.Sort(delegate(Product x, Product y){return x.Name.CompareTo(y.Name);}
    products.Sort((x,y) => x.Name.CompareTo(y.Name));
    //3
    foreach(Product product in products.OrderBy(p=>p.Name){}
  • C#進化(クエリー)
  • C#1:条件操作が緊密に結合する、両者ともハードコーディング
  • である.
  • C#2:条件操作が分離する、匿名方法により依頼が簡単になる
  • .
  • C 3:Lambda式
  • // 2
    products.FindAll(delegate(Product p){return p.Price > 10;})
        .ForEach(Consorl.WriteLine);
    // 3
    foreach(Product product in products.Where(p=>p.Price > 10)){}
  • Null:products.Where(p=>p.Price == null)
  • LINQ:言語継承クエリ、暗黙型ローカル変数var
  • //  
    List products = Product.GetSampleProducts();
    List suppliers = Supplier.GetSampleSuppliers();
    var filtered = from p in products
                    join s in suppliers
                        on p.SupplierID equals s.SupplierID
                    where p.Price > 10
                    orderby s.Name, p.Name
                    select new{SupplierName = s.Name, ProductName = p.Name};
    foreach (var v in filtered){
        Console.WriteLine("Supplier={0}, Product={1}",v.SupplierName, v.ProductName);
    }
  • 符号化仕様:
  • コードセグメントの形式の全能コード//Snippetを使用してクラス構造
  • を生成する.
  • 依頼
  • は、特殊な戻りタイプを含むパラメータのセットをカプセル化する動作
  • を依頼する.
  • イベントは、委任インスタンスではなく、ペアのadd/removeメソッド
  • にすぎない.
  • classは参照タイプであり、structは値タイプである.梱包メカニズムを参照
  • に変換
  • 汎用型には、汎用型(クラス、インタフェース、委任、構造を含む)と汎用法
  • の2つの形式がある.
  • タイプ制約およびタイプ判定
  • 反射のすべては「検査対象とそのタイプ」をめぐって展開され、System.Typeの参照が最も重要な
  • である.
  • SomeTypeがタイプパラメータを返す動作のみを記述する場合、コヒーレントは安全である.受信タイプパラメータのみを記述する場合、インバータは安全な
  • である.
  • Nullable,A ?? Bヌルマージオペレータ
  • Netにおける反復器は、IEnumeratorおよびIEnumerableインターフェースおよびそれらの汎用等価物によってカプセル化された
  • である.
  • 分部タイプ:1つのクラスは複数のファイルを中間書きすることができ、継承チェーンの複雑さによるパッケージの問題を低減することができ、partial(ユニットテスト用)
  • 分割メソッド:生成コードと手書きコードが自動的にインタラクティブになり、生成コンパイラがなければ宣言
  • が削除されます.
  • 静的タイプ:(すべてのメンバーが静的で、直接再objectが派生し、キャッシュまたは単一の例に関連しない限り、可視構造関数が存在しない、seal)
  • C#では属性自体をプライベートにすることはできません.値の取り方をパブリックにすることはできません..?
  • #progma到来時削除警告/checksum
  • fixed:再構成外追加申請メモリ
  • なぜならunity 5.4 C#カードを使ってさらに2.0、それでは先にコードのブックマークはここにあります~
    付録:unity C#バージョンの印刷:
    using UnityEngine;
    using System.Collections;
    using System.Reflection;
    
    public class scri : MonoBehaviour {
    
        // Use this for initialization
        void Start () {
            Type type =Type.GetType("Mono.Runtime");
            if(type !=null)
            {
            MethodInfo displayName = type.GetMethod("GetDisplayName",BindingFlags.NonPublic|BindingFlags.Static);
            if(displayName !=null)
            Debug.Log(displayName.Invoke(null,null));
            }
        }
    
        // Update is called once per frame
        void Update () {
    
        }
    }