c# 고급 구문

24693 단어 unityc#
c# 고급 구문
  • 구조함수 분석함수
  • 특징
  • 위탁(一)모형
  • 의뢰(二)리셋
  • 이벤트
  • 협성
  • c#다중 스레드 오픈 의뢰
  • 획득 루트 종료
  • Thread 클래스
  • lanm 표현식
  • 스레드 풀
  • 커넥터
  • Linq

  • 구조 함수
    class MyClass
    {
    	public MyClass() //      
    	{
    	
    	}
    	private MyClass()//        new    
    	{}
    	
    }
        
    class MyClass
    {
    	~MyClass()
    	{}
    }
    
    
    
    

    특성
    [Obsolete()]//오래된 방법 제시[contional(IsTest)]//이 방법의 호출을 취소하고 정의되었는지 판단하며 정의되지 않으면 호출될 수 없습니다.
    
    
    //1,    Attribute  ,
    //2,    System.Attribute
    //3,  sealed 
    //4,              .           。
    [AttributeUsage(AttributeTarget.Class)]//                   。
    sealed class MyTestAttribute:System.Attribute{
    public string Description{get;set;}
    public int ID{get;set;}
    public MyTestAttribute(string des){
    this.Description=des;
    }
    }
    
    [MyTest("easy",ID=200)]//    ,    ,                   
    class Program{
    }
    Type type=typeof(progrem)//
    obgect[] array=type.GetCustomAttribute(false);//         
    MyTestAttribute mytest=array[0] as MyTestAttribute;
    mytest.Description;//        
    mytest.ID;//         
    

    위탁
    
    
    //              
    public delegate void a(string s);
    class Program
    {
    	static void Test1(string str)
    	{
    		Console.WriteLine("test1");
    	}
    		static void Test2(string str)
    	{
    		Console.WriteLine("test2");
    	}
    }
    static void Main()
    {
    	a D1;          //     
    	D1 +=Test1;    //       
    	D1 -=Test1;    //       
    	D1("1")//        
    }
    
    Delegate[] delegates=a1.GetlnvocationList();//       
    foreach(delegate d in delegates){
    	d.Dynamiclnvoke(null);
    }
    
    
    

    위탁
    static void Test3(a d)
    {
    	id (d!=null)
    	{
    		d("3")
    	}
    }
    	a D2;          //     
    Test3(D2);
    
    

    이벤트
    1 소유자 2 이벤트 3 이벤트에 대한 응답자 4 이벤트 프로세서 5 이벤트에 대한 구독
    
    
    
    startic void Main()
    {
    	Customer customer=new Customer ();
    	Waiter waiter=new Waiter();
    	customer.Order+=Waiter.Action;
    	customer.Action();
    	customer. PayTheBill()
    }
    
    //           EventArgs,        
    public class OrderEventArgs:EventArgs
    {
    	public string DishName{}
    	public string Size{}
    }
    
    public delegate void OrederEventHandler(Customer customer,OrderEventArgs e);//              EventHandler    
    
    
    
    
    
    //     
    public class Customer
    {
    	private OrderEventHandler OrderEventHandler;
    	public event OrderEventHandler Order{
    		add{
    		this.orderEventHandler += value}
    	remove
    	{
    		this.orderEventHandler -= value}
    	}
    	public double Bill{get;set;}
    	public void PayTheBill()
    	{
    		Console.WriteLine("i will pay ${o}.",this.Bill);
    	}
    	//      
    	public	void	 WalkIn()
    	{
    		Console.WriteLine("Walk into  the restaurant");
    	}
    	public void SitDown()
    	{
    		Console.WriteLine("Sit down");
    	}
    	public void Think()
    	{
    		for(int i=0;I<5,i++)
    		{
    			Console.WriteLine("Let me think...");
    			Thread.Sleep(1000);
    		}
    		if(this.orderEventHandler !=null)//           ,        
    		{
    			OrderEventArgs e=new OrderEventArgs();
    			e.DishName="Kon Chicken";
    			e.Size-"Large"
    			this.order.EventHandler.Invoke(this,e)
    		}
    	}
    	public void Action()
    	{
    		Console.ReadLine();//    
    		this.WalkIn();
    		this.SitDown();
    		this.Think();
    	}
    
    }
    
    class Waiter
    {
    	internal void Action(Customer customer,OrderEventArgs e)
    	{
    		Console.WriteLine("")
    		double price=10;
    		switch(e.Size)
    		{
    			case "small":
    				price=price*0.5;
    				break;
    			case "large":
    				price=price*1.5;
    				break;
    			defaule:
    				break;
    		}
    		customer.Bill+=price;
    	}
    }
    
    
    
    
    
    //      
    public event OrderEventHandler Order;
    
    
    
    
    
    
    
    

    협동하여 이루어지다
    이 프레임을 종료하려면 yield return unll 이 프레임을 종료합니다. yield return For End Of Frame 프레임이 끝날 때 한 프레임을 마운트합니다. yield return WaitFor Fixed Update 간격을 마운트합니다. yield return Another coroutione 협동된 yield return WW 대기 네트워크를 기다립니다.
    c#다중 스레드 오픈 의뢰
    static int Test(int i,string str)
    {
    	Console.WriteLine("test"+i+str)
    	thread.Sleep(100);//  0.1s
    	return 100;
    }
    static void Main(string[] args)
    {
    //        
    	Funca=Test;
    	//       a  
    	a.BeginInvoke(100,"siki",nul,null);
    	//IAsyncResul          
    	IAsyncResul ar=Counsole.WriteLine("main");
    	while(ar.IsCompleted==false)
    	{
    		Counsole.WriteLine(".");
    		thread.Sleep(100);//          
    	}
    	int res=a.EndInvoke(ar);//         
    	Console.ReaderKey();
    }
    
    

    스레드 가져오기 종료
    bool isEnd=ar.AsyncWaitHandle.WaiteOne(1000);//1000            ,         false,      true.
    if(isEnd)
    {
    	int res=a.EndInvoke(ar);
    	Console.WriteLine(res);
    }
    Console.ReaderKey();
    

    비동기 콜백
    	Funca=Test;
    	//   null        ,      ,           
    	//    null,           
    	//       a  
    	IAsyncResul ar=a.BeginInvoke(100,"siki",nul,null);//          null
    
    static void OnCallBack(IAsyncResul ar)
    {
    	Func a=ar.AsyncState as Func;
    	a.EndInvoke(ar);
    	Console.WriteLine("   end");
    }
    
    
    
    a.BeginInvoke(100,"siki",ar=>
    {
    	int res=a.EndInvoke(ar);
    	Console.ReaderKey();
    },null);
    

    Thread 클래스
    static void DownloadFile()
    {
    	Thread.Sleep(2000);
    }
    
    static void Main()
    {
    	Thread t=new(DownloadFile);
    	t.Start();//    
    	
    }
    
    

    lanm 표현식
    Thread t=new Thread (()=>
    {
    	Thread.Sleep(2000);
    });
    t.Start();
    
        id
    Thread.CurrentThread.ManagedThreadId
    
    //    
    t.Start("xxx")
    
    private string filename;
    
    public MyThread(string name)
    {
    	this.filename=name;
    }
    
    

    백엔드 라인, 백엔드 라인thread에서 만든 라인은 백엔드 라인입니다.프런트 라인이 끝나면 그에 상응하는 프런트 라인도 끝납니다.
    Thread t=new(DownloadFile);
    t.IsBackground=true;//       
    t.Start();
    

    스레드 우선 순위Priorty 설정 스레드 우선 순위 제어 스레드 상태 runing unstarted t.join ()
    스레드 풀
    static void ThreadMethod(object state)
    {
    console.WriteLine("    "+Thread.CurrentThread.ManagedThreadId);
    Thread.Sleep(2000);
    console.WriteLine();
    }
    static void Main()
    {//         
    	ThreadPool.QueueUserWorkItem(ThreadMethod);
    	ThreadPool.QueueUserWorkItem(ThreadMethod);
    	ThreadPool.QueueUserWorkItem(ThreadMethod);
    	ThreadPool.QueueUserWorkItem(ThreadMethod);
    }
    
    

    이음매
    var user =newPhoneUser(new NokiaPhone){//      ,    
    	user.UserPhone();
    }
    class PhoneUser{
    public PhoneUser(Iphone phone){//    
    	_phone=phone;
    }
    public void UsePhone(){
    	_phone.Dail();
    	_phone.PickUp();	
    }
    interface Iphone{}
    class NokiaPhone:Iphone(){}
    
    

    Linq
    var res=from m in masterList where m.Level>8 select m;//m의 결과를 select m.Name;//m의name 집합을 되돌려줍니다

    좋은 웹페이지 즐겨찾기