在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 ...
随机推荐
- java.lang.Integer源码浅析
Integer定义,final不可修改的类 public final class Integer extends Number implements Comparable<Integer> ...
- mkimage command not found – U-Boot images will not be built
ubuntu 14.04 64位系统编译Linux kernel时提示: “mkimage” command not found – U-Boot images will not be built 按 ...
- python中定义的颜色
平时学习工作中,我们经常会接触到一些大佬写的Python实用工具,运行起来总会显示出五颜六色的背景,相关的定义在matplotlib模块中,为方便使用,这里给大家展示一下在这个模块中都定义了哪些选颜色 ...
- C#操作IIS程序池及站点的创建配置(转)
原文:http://www.cnblogs.com/wujy/archive/2013/02/28/2937667.html 最近在做一个WEB程序的安装包:对一些操作IIS进行一个简单的总结:主 ...
- oracle 11g密码过期问题解决方法
ORACLE 11G密码过期问题: 1.使用oracle用户进入sql编辑器中执行修改密码(原始密码,保持不变)的命令 sql>alter user 用户名 identified by &quo ...
- 《Effective Java 第三版》新条目介绍
版权声明:本文为博主原创文章,可以随意转载,不过请加上原文链接. https://blog.csdn.net/u014717036/article/details/80588806前言 从去年的3月份 ...
- 一个linux bbr存在的调用顺序bug
最近跟踪bbr的状态转换的代码,发现一个问题: [,min_rtt_us=,full_bw=,cycle_idx=,pacing_gain=,cwnd_gain=,rtt_cnt= [,min_rtt ...
- 项目(三)PXE高效能批量网络装机
PXE:预启动执行环境 PXE是由intel公司开发的网络引导技术,工作在Client/Server模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统. 若要搭建PXE网 ...
- Spark 基础之SQL 快速上手
知识点 SQL 基本概念 SQL Context 的生成和使用 1.6 版本新API:Datasets 常用 Spark SQL 数学和统计函数 SQL 语句 Spark DataFrame 文件保存 ...
- C++ 11 创建和使用 unique_ptr
unique_ptr 不共享它的指针.它无法复制到其他 unique_ptr,无法通过值传递到函数,也无法用于需要副本的任何标准模板库 (STL) 算法.只能移动unique_ptr.这意味着,内存资 ...