c# 고급 구문
구조 함수
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 집합을 되돌려줍니다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Unity 최적화1. 프레임마다 처리하는 것을 최대한 피한다. 예를 들면: 5프레임당 한 번 처리로 변경할 수 있습니다. 2. 정시 반복 처리는 InvokeRepeating 함수로 이루어집니다. 예를 들어 0.5초 동안 시작한 후 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.