当前位置: 首页 > news >正文

前端之前,先学学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

相关文章:

  • exosip
  • Shell脚本中的export
  • NSBlockOperation下载图片(三)
  • nodejs --- 核心概念
  • LNMP搭建6:Nginx用户认证
  • 搭建DHCP服务器
  • Linux命令篇之cat命令,tac命令和rev命令
  • Eclipse Ant 批量多渠道打包(二)
  • js数组操作大全
  • Godaddy ssl续费更新问题总结
  • VMware + OpenStack: 从 Plugin 到 VIO (VMware Integrated OpenStack)的演进
  • 反转字符串中的单词
  • 开始51CTO的博客经营
  • 微信小程序把玩(二)window配置
  • Lucene.net站内搜索—2、Lucene.Net简介和分词
  • #Java异常处理
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【刷算法】求1+2+3+...+n
  • JavaScript学习总结——原型
  • Java面向对象及其三大特征
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • maven工程打包jar以及java jar命令的classpath使用
  • Netty 4.1 源代码学习:线程模型
  • nginx 负载服务器优化
  • PhantomJS 安装
  • SegmentFault 2015 Top Rank
  • select2 取值 遍历 设置默认值
  • vue.js框架原理浅析
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • Yeoman_Bower_Grunt
  • 当SetTimeout遇到了字符串
  • 简单数学运算程序(不定期更新)
  • 聊聊redis的数据结构的应用
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 前嗅ForeSpider教程:创建模板
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 软件开发学习的5大技巧,你知道吗?
  • 使用parted解决大于2T的磁盘分区
  • 一道面试题引发的“血案”
  • 用简单代码看卷积组块发展
  • 1.Ext JS 建立web开发工程
  • # Panda3d 碰撞检测系统介绍
  • (1)SpringCloud 整合Python
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (26)4.7 字符函数和字符串函数
  • (zhuan) 一些RL的文献(及笔记)
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (论文阅读40-45)图像描述1
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (十三)Maven插件解析运行机制
  • (学习日记)2024.01.09
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...