在Unity5.6.5f1中使用C#7语法
备忘,记忆力越来越差了,必需把这种琐碎的东西记下来,以防1年后想再用完全没头绪。
之前试过用C#6语法,但是怎么配置操作的完全没印象了。
首先去这下载扩展
https://bitbucket.org/alexzzzz/unity-c-5.0-and-6.0-integration/src
左边Donwload选项,写本文时已经支持
C# 7.2 support for Net 4.6 in Unity 2017.1+
但是我目前用的5.6.5,所以下的
CSharp70Support 2.0.6 (for Unity 5.6).zip
用法,新建工程,CSharp7
把解压文件CSharp70Support放到Assets同级目录
管理员权限运行ngen install.cmd
CSharp70Support.unitypackage文件在工程中导入,生成CSharp vNext Support
写入测试代码,代码来源
https://www.cnblogs.com/newnj/p/6530394.html
using UnityEngine;
using System.Collections; public class CS7Test : MonoBehaviour
{
public string TestString { get; set; } = "Hello World"; public class Person
{
public int age;
public string name; public Person(int age, string name)
{
this.age = age;
this.name = name;
}
}; public class Male : Person
{
public Male(int age, string name) : base(age, name)
{
this.age = age;
this.name = name;
}
}; public class Female : Person
{
public Female(int age, string name) : base(age, name)
{
this.age = age;
this.name = name;
}
}; void Start()
{
Debug.Log(TestString); test1();
test2();
test3();
test4();
test5(); } void test1()
{
var str = "7";
// if(int.TryParse(str, out int number))
if(int.TryParse(str, out var number))
{
Debug.Log(number);
}
} void test2()
{
Person p1 = new Male(5, "John");
Person p2 = new Female(10, "Mary"); Person cp = p1;
//Person cp = p2; // switch支持非常量类型
switch (cp)
{
case Male m:
Debug.Log("Male:" + m.name);
break;
case Female f:
Debug.Log("Female:" + f.name);
break;
default:
break;
}
} public class GlobalData
{
private static int UserCount = 0; public static int GetCount()
{
return UserCount;
} public static ref int GetCountNew()
{
return ref UserCount;
}
} void test3()
{
var count = GlobalData.GetCount();
++count; Debug.Log(GlobalData.GetCount());//0 ref int countNew = ref GlobalData.GetCountNew();
++countNew; Debug.Log(GlobalData.GetCount());//1
} //本地函数
void test4()
{
Debug.Log("test4=========="); //本地函数
void Writer(IEnumerable objs)
{
foreach(var item in objs)
{
switch(item)
{
case null:break;
case IEnumerable enumerable:
Writer(enumerable);
break;
default:
Debug.Log(item);
break;
}
}
}
Writer(new object[]
{
1,2,new[] {"3", "4"}
}
);
} void test5()
{
long id = 1234_5678_9012_3456;
Debug.Log(id);//1234567890123456
} void Update()
{ }
}
其他版本配置应该类似,可以看看作者主页自带的说明,但是好像只有最新版本才有说明,其他版本比如C#6可能文件都不同,要自己测试,随机应变。
顺便一提,编译速度非常慢,感觉除了最后一个显示数字可以加下划线对我有用外,其他功能完全用不上,
这种看起来很方便的语法糖,就像C++的STL一样,看起来方便好用,节省时间,
实际上在不了解语法的外人看来,要花更多的时间去学习,才能看懂写的是什么鬼,不容易记住。
而且长期不用,下次用时还要重新复习才能想得起来用法,完全不适合我这种人使用。
在Unity5.6.5f1中使用C#7语法的更多相关文章
- 【Unity】近期整理Unity4.x 项目升级Unity5.0 过程中出现的各种常见问题,与大家共享。
近期整理Unity4.x 项目升级Unity5.0 过程中出现的各种常见问题,与大家共享. 1:Unity4.x 项目中3D模型其材质丢失,成为"白模"? 解决方式:手 ...
- C++反汇编第六讲,认识C++中的Try catch语法,以及在反汇编中还原
C++反汇编第六讲,认识C++中的Try catch语法,以及在反汇编中还原 我们以前讲SEH异常处理的时候已经说过了,C++中的Try catch语法只不过是对SEH做了一个封装. 如果不懂SEH异 ...
- Markdown中Latex 数学公式基本语法
原文地址:http://blog.csdn.net/u014630987/article/details/70156489 Markdown中Latex 数学公式基本语法 公式排版 分为两种排版: - ...
- CI框架 -- 在视图文件中使用 PHP 替代语法
如果你不使用 CodeIgniter 的 模板引擎, 那么你就只能在视图文件中使用纯 PHP 语法了.为了精简视图文件, 使其更可读,建议你在写控制结构或 echo 语句时使用 PHP 的替代语法. ...
- Python3中的yield from语法
Python3中的yield from语法 by Kay Zheng Tags: python, 协程, generator 30 March 2014 2016-2-23 更新 這篇文章是兩年前寫的 ...
- Python中的相对导入语法
Python中支持相对导入语法,即可以相对于某一个package进行导入,具体语法如下: # 导入"./dir2/spam.py", .表示当前目录 from .dir2 impo ...
- Oracle中有关日期的语法
Oracle中有关日期的语法 Oracle提供了丰富的日期函数.利用日期函数可以灵活的对日期进行运算. to_date()函数——将字符串转换为日期型 to_date()函数用于将字符串转换为日期.被 ...
- 如何在Visual Studio 2017中使用C# 7+语法 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构 构建NetCore应用框架之实战篇系列 构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架 NetCore入门篇:(十二)在IIS中部署Net Core程序
如何在Visual Studio 2017中使用C# 7+语法 前言 之前不知看过哪位前辈的博文有点印象C# 7控制台开始支持执行异步方法,然后闲来无事,搞着,搞着没搞出来,然后就写了这篇博文,不 ...
- oracle 中SQL 语句开发语法 SELECT INTO含义
oracle 中SQL 语句开发语法 SELECT INTO含义 在ORACLE中SELECT INTO是如何使用的,什么意思?和SQL SERVER的不一样? 和sqlserver的不一样sql ...
随机推荐
- 9-安装redis
1.在linux上安装C语言环境 yum install gcc-c++ 2.解压源码包 tar -xvf /opt/soft/redis-3.0.0.tar -C /opt/app/ 3.编译源码( ...
- OpenCV使用BGR而非RGB格式
日常开发和交流时,我们习惯将图片的颜色通道按照RGB(red, green, blue)进行排列.闲来无聊,在把玩卷积神经网络模型时发现OpenCV并没有按照这个顺序读入图片.好奇地搜索一下OpenC ...
- @controller不能被识别
记得controller的类不能起名为Controller,否则不能被识别!!!!!
- SQL 查询数据库中包含指定字符串的相关表和相关记录
declare @str varchar(100)set @str='我要找的' --要搜索的字符串 declare @s varchar(8000)declare tb cursor local f ...
- Linux的nmon监控结果分析文件中网络分析NET
1.首先,使用# ifconfig查看Linux系统中的网卡名称,有的是eth0,有的是em1,以查看结果为准,下图为em1 2.先试试Linux系统中有没有安装ethtool工具,没有的话,下载et ...
- C++ 50学习 之提高对 C++的认识
转自Effective C++ 理解设计目标. 1.和 C 的兼容性. 2.效率. C++在效率上可以和 C 匹 敌 ---- 二者相差大约在 5%之内. 3.和传统开发工具及环境的兼容性. 4.解决 ...
- mac下用命令行解压文件
在Mac上的归档工具不能够解压rar文件,这时可以使用终端中的unrar来解决问题. 步骤如下: 1.使用Homebrew安装unrar(有关Homebrew的安装和使用见Homebrew) $ br ...
- JAVA类与类之间的全部关系简述+代码详解
本文转自: https://blog.csdn.net/wq6ylg08/article/details/81092056类和类之间关系包括了 is a,has a, use a三种关系(1)is a ...
- cdnbest 节点和主控连接不上原因主要查看几点
1. 注意安装过程中有没有报错,如果没有报错,检查下节点程序是否有运行,本例以linux系统为例,windows系统可以查看进程管理器 有以下进程说明程序是运行成功的 ps -aux |grep ka ...
- WMS专业术语&系统功能操作培训
逻辑层:公司.分部.地区物理层:仓库.1个仓库只能属于思维的1个地区.命名规则:SCPRD_WMWHSE1货主:纳思达多货主:1个仓库可以配置1个或多个货主SKU:物料代码(stock keeping ...