前端之前,先学学C# [误

因为课题的原因,现在还要先用一下Unity,Github上的源码个个如此炫酷以至于没有c#基础的我根本看不懂……

买了一本c#入门对着敲代码,现在多少懂一点了。比如下面这一段对泛型类型的编写。

using System;
using System.Collections.Generic;

namespace CustomGenericType
{
    struct Point<T>
    {
        T x;
        T y;
        public Point(T x, T y)
        {
            this.x=x;
            this.y=y;
        }
        public T X
        {
            get {return x;}
            set {this.x=value;}
        }
        public T Y
        {
            get {return y;}
            set {this.y=value;}
        }
//这个里面value还是第一次见,大概就是说把setter的参数拿来用
        public void Print()
        {
            Console.WriteLine("({0},{1})",x,y);
        }
    }
}

好吧我根本不懂啥叫泛型类型,但是感觉这个东西就是做一个模板,里面两个变量,这两个变量先不声明什么类型,反正啥类型都行,所以就叫泛型是吧?

里面有几点是之前没看到过的

  • Point<T>以及下面的 T x; T y;因为是泛型所以也没什么可说的了,就把T当做接受类型的一个坑吧
  • Point(T x, T y)这个应该就是Point在外面用到的constructor吧,比如如果写Point(int a, int b)?其实不是这么写的,例程里面写的是
Point<double> b=new Point<double> (12.3, 244.4);
//对了,这里直接写小数,后面没跟f,所以是double类型
  • getter and setter,呃,也是啊,getter and setter肯定不止objective c才有啊…… 不过比较有意思的是X和Y是大写。然后如果要在外面用到get或者set的话呢:
a.x=2;
//这样子是不行的,会报错说inaccessible due to protection level.
a.X=2;
//这样子就ok了,因为这里的X是之前声明好的一个Setter and getter

总之呢这一段代码敲完有几个收获

  • c#也是有getter and setter的(废话),而且简单粗暴的读取和改写一个class里面的变量是非常不绅士的,通过Getter and setter来吧。
    •   改变大小写也是一个给getter and setter起名字的好办法呢
  • 泛型这个东西,还真是很有意思呢,这样一套模板建起来就可以根据实际需要反复去用了。嗯,这也就是所谓的提升代码复用性?
  • 泛型类型的新建也是要像List,Dictionary那样 Point然后<>再然后才是(),不要直接把类型放进括号里面了,话说放进去是为啥……
原文地址:https://www.cnblogs.com/SiumingLearning/p/SiumingLearningC_Sharp1.html