C#_001_各种声明

 

命名规范

 

1.多维数组,常数:

int[, , ,] sz = new int[3, 3, 3, 3];
public const string player = "Player";

ArrayList是动态扩展的,把元素当obj处理,所以可以储存不同类型

ArrayList list1 = new ArrayList();  
//新增数据  
list1.Add("cde");  
list1.Add(5678); 

2.结构体:

struct direnJG  //结构体定义声明
{
    public int direnx;
    public youxi yX;//可写入枚举、函数
}

3.枚举:

enum youxi : int//枚举定义:int 可输入类型 byte、sbyte、short、ushort、int、uint、long 或 ulong	
{
    kaishi = 10,//赋初始标号(,间隔元素)
    jixu
}
	
{
    kaishi = 10,//赋初始标号(,间隔元素)
    jixu
}

4.函数:

   public  int ceshi(params int[] shuzu){}//参数数组params!!!!!!
   //使用: ceshi(a,a1,a2,a3.....);

5.委托:

    Func <int,int, int,int,bool> wt004 = (a,b,c,d)=> a > b;  //  有/无参数,有返回(最后一位)
    Action awt001 = () => { };                              //   有/无参数,无返回
    public delegate int WT001(int a, int b);    //委托定义

6.字段与属性:

class ziduan
{
    private int name;
    public int Name { get { return name; } set { this.name = value; } }//属性封装字段
}

7.虚方法抽象方法

   public abstract void move()//抽象方法
   public virtual void move()// virtual 虚方法
   public override void move()//重写方法!!!

点击打开链接

 

 

8.接口:

 

 

interface IQueue<T>

 

抽象方法与接口区别

注:虚方法,抽象方法,接口,隐藏方法(有点迷糊...)

9.List集合:

      List<int>alist=new List<int>(4);
      var blist = new List<int>() { 1, 2, 3 };

10.线程与任务:

线程死循环需要Thread.Sleep(0),不然将会无法终止

参考

 Thread xc = new Thread((a) => 
            {
                Console.WriteLine("开始下载..."+Thread.CurrentThread.ManagedThreadId);//线程id
                Thread.Sleep(500);
                Console.WriteLine("下载完成!!!"+a);         
            });
            xc.IsBackground = true;//设置为后台(主线程结束后强制关闭)
            xc.Start("你好");//传递参数并开始线程
            Console.WriteLine("进程运行...");
           // xc.Abort();//强制终止
           // xc.Join();//等待该线程执行完毕
           ThreadPool.QueueUserWorkItem(方法名);//线程池!!!!!
           ThreadPool.QueueUserWorkItem(方法名);
//任务: 
          Task xc3 = new Task(qd2);//任务!!!!
            xc3.Start();                           //线程2=线程1.contnuewith(Dosecond)//连续任务!!!!
//=========================================================
            TaskFactory tf1 = new TaskFactory();//任务工厂!!!
            Task xc4 = tf1.StartNew(qd2);
 //           lock (对象)//申请加锁
 //          {
 //               对象.方法体
 //           }//释放

11.Socket:

11.1.TCP

参考

参考链接

//服务端:
 //1.这个类会创建socket对象
            TcpListener listener = new TcpListener(IPAddress.Parse("127.0.0.1"), 9999);
            //2.开始监听
            listener.Start();
            Console.WriteLine("等待...1:" );
            //3.等待客户连接??集合<>?
            TcpClient client = listener.AcceptTcpClient();//阻塞式
             Console.WriteLine("等待...2:"+client.Connected); 
            //4.获取客户端发送过来的数据
            NetworkStream stream= client.GetStream();//得到了一个网络流,从这个网络流里的到客户端发送过来的数据.Read()
//客户端:
  //当对象建立时就会跟server建立连接
            TcpClient client = new TcpClient("127.0.0.1", 9999);//阻塞式
            Console.WriteLine("等待...1");
            //通过网络流进行数据交换
            NetworkStream stream = client.GetStream();
            //写入数据就是发送数据.Write();
//发送与接收
         string message = Console.ReadLine();//阻塞式
         byte[] data1 = Encoding.UTF8.GetBytes(message);//string转字节数组
         stream.Write(data1, 0, data1.Length);
//=================================================================
         byte[] data2 = new byte[1024];
         int length= stream.Read(data2,0,data2.Length);//返回字节长度
         string message2 =Encoding.UTF8.GetString(data2, 0, length)//字节数组转string
//关闭:
 stream.Close();
 client.Close();

11.2.UDP:

//服务端
           //创建udpclient绑定跟端口号
            UdpClient udpClient = new UdpClient(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9999));
            //接受数据
            IPEndPoint point = new IPEndPoint(IPAddress.Any,0);
            while (true)
            {
                //通过point确定数据来自哪个ip端口号,返回一个字节数组
                byte[] data = udpClient.Receive(ref point);//阻塞式
                //转换数据string
                string message = Encoding.UTF8.GetString(data);
                Console.WriteLine(message);
            }
            udpClient.Close();//释放资源
//客户端:
            //创建udpclient对象
            UdpClient client = new UdpClient();
            while (true)
            {
                string message = Console.ReadLine();//阻塞式
                byte[] data = Encoding.UTF8.GetBytes(message);
                client.Send(data, data.Length, new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9999));
            }
            client.Close();//释放资源

12.文件:

 FileInfo Fio = new FileInfo(@"D:\1\5\新建文本文档.txt");//文件操作
 DirectoryInfo DTio = new DirectoryInfo(@"D:\1\5");//目录操作
 
File.WriteAllText(@"D:\1\5\新建文本文档1.txt","你好  233 ");//创建新文件
string[] f001 = File.ReadAllLines(@"D:\1\5\新建文本文档1.txt");
string f002 = File.ReadAllText(@"D:\1\5\新建文本文档1.txt");
byte[] f003 = File.ReadAllBytes(@"D:\1\5\新建文本文档1.txt");    
//========================================================================================   
FileStream stream = new FileStream(@"D:\1\5\新建文本文档2.txt",FileMode.Open);//创建文件流 用来操作文件
stream.Close();//关闭文件流!!!
//========================================================================================
 //创建文本文件读取流
StreamReader reader = new StreamReader(@"D:\1\5\新建文本文档2.txt");
reader.Close();

 //文本文件写入流
StreamWriter writer = new StreamWriter(@"D:\1\5\新建文本文档3.txt");
writer.Close();

 

13反射:

 

   Class1 my = new Class1();//一个类中的数据是存储在对象中的,但是type对象只存储类的成员

            Type type = my.GetType();//通过对象获取这个对象所属类的type对象
            Console.WriteLine(type.Name);//获取类的名字
            Console.WriteLine(type.Namespace);//获取类的命名空间
            Console.WriteLine(type.Assembly);//获取类的程序集

            FieldInfo[]array= type.GetFields();//字段
            foreach (var info in array) 
            {
                Console.WriteLine(info.Name+" "); 
            }

            PropertyInfo[] array2 = type.GetProperties();//属性
            foreach (var info in array2)
            {
                Console.WriteLine(info.Name);
            }

            MethodInfo[] array3 = type.GetMethods();//方法
            foreach (var info in array3)
            {
                Console.WriteLine(info.Name);
            }
            //通过type对象可以获取它对应的类的所有成员(public)
 Assembly assem = my.GetType().Assembly;//通过类的type对象获取它所在的程序集Assembly
            Console.WriteLine(assem.FullName);
          
           Type[] types= assem.GetTypes();
           foreach (var type1 in types)
           {
               Console.WriteLine(type1);
           }
transform.GetType() == typeof(Transform)//判断类的类型

14.内存流(字节流):操作比数组方便

memoryStream = new MemoryStream();
memoryStream.Write(new byte[44], 0, 44);//开辟空间
memoryStream.Write(array1, 0, array1.Length);//写入内容
memoryStream.Position = 0L;//将指针定位到开头
memoryStream.Write(array2, 0, array2.Length);//存储 头数据数组 覆盖到文件开头

 

15.Linq

参考

//数组内容提取
float[] vectors = vector.Select(vector => vector.z).ToArray();
//条件过滤集合
 Vector3[] vectors = vector.Where(vector => vector == Vector3.zero).ToArray();
// 对二维数组进行提取到一维数组
 Char[] vectors = vector.SelectMany(vector => vector.ToString()).ToArray();

//条件过滤
 Char[] vectors = vector.SelectMany(vector => vector.ToString().Where(Char => Char == '0')).ToArray();

.OrderBy()//排序
.ThenBy()//排序附加条件

any判断集合中是否有一个满足,all判断集合中是否全部满足

            bool res = List.Any(m => m.text== "1");
            Console.WriteLine(res);
            res = List.All(m => m.text == "2");
            Console.WriteLine(res);
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值