备忘,记忆力越来越差了,必需把这种琐碎的东西记下来,以防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语法的更多相关文章

  1. 【Unity】近期整理Unity4.x 项目升级Unity5.0 过程中出现的各种常见问题,与大家共享。

    近期整理Unity4.x 项目升级Unity5.0 过程中出现的各种常见问题,与大家共享. 1:Unity4.x 项目中3D模型其材质丢失,成为"白模"?       解决方式:手 ...

  2. C++反汇编第六讲,认识C++中的Try catch语法,以及在反汇编中还原

    C++反汇编第六讲,认识C++中的Try catch语法,以及在反汇编中还原 我们以前讲SEH异常处理的时候已经说过了,C++中的Try catch语法只不过是对SEH做了一个封装. 如果不懂SEH异 ...

  3. Markdown中Latex 数学公式基本语法

    原文地址:http://blog.csdn.net/u014630987/article/details/70156489 Markdown中Latex 数学公式基本语法 公式排版 分为两种排版: - ...

  4. CI框架 -- 在视图文件中使用 PHP 替代语法

    如果你不使用 CodeIgniter 的 模板引擎, 那么你就只能在视图文件中使用纯 PHP 语法了.为了精简视图文件, 使其更可读,建议你在写控制结构或 echo 语句时使用 PHP 的替代语法. ...

  5. Python3中的yield from语法

    Python3中的yield from语法 by Kay Zheng Tags: python, 协程, generator 30 March 2014 2016-2-23 更新 這篇文章是兩年前寫的 ...

  6. Python中的相对导入语法

    Python中支持相对导入语法,即可以相对于某一个package进行导入,具体语法如下: # 导入"./dir2/spam.py", .表示当前目录 from .dir2 impo ...

  7. Oracle中有关日期的语法

    Oracle中有关日期的语法 Oracle提供了丰富的日期函数.利用日期函数可以灵活的对日期进行运算. to_date()函数——将字符串转换为日期型 to_date()函数用于将字符串转换为日期.被 ...

  8. 如何在Visual Studio 2017中使用C# 7+语法 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构 构建NetCore应用框架之实战篇系列 构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架 NetCore入门篇:(十二)在IIS中部署Net Core程序

    如何在Visual Studio 2017中使用C# 7+语法   前言 之前不知看过哪位前辈的博文有点印象C# 7控制台开始支持执行异步方法,然后闲来无事,搞着,搞着没搞出来,然后就写了这篇博文,不 ...

  9. oracle 中SQL 语句开发语法 SELECT INTO含义

    oracle 中SQL 语句开发语法 SELECT INTO含义 在ORACLE中SELECT INTO是如何使用的,什么意思?和SQL SERVER的不一样?   和sqlserver的不一样sql ...

随机推荐

  1. windows shell命令相关

    一 系统自带的命令 1 创建文件夹 mkdir 文件夹名 2 强制删除文件夹 rd/s/q 文件夹名 3 强制删除文件 del/f/s/q 文件名 4 移动文件到文件夹 move 文件名 文件夹名 二 ...

  2. 模拟实现简单ATM功能

  3. 深入学习 Java 序列化

    前言 对于Java的序列化,一直只知道只需要实现Serializbale这个接口就可以了,具体内部实现一直不是很了解,正好这次在重复造RPC的轮子的时候涉及到序列化问题,就抽时间看了下 Java序列化 ...

  4. leetcode121

    public class Solution { public int MaxProfit(int[] prices) { //寻找最优极值点(包括2个端点) ) { ; } ) { ] - price ...

  5. leetcode200

    深度优先搜索,每次遇到1,则岛的数量+1,从这个1开始找到所有相连的1,将其改为0. public class Solution { private void dfsSearch(char[,] gr ...

  6. 转 cxgrid属性说明

    TCXGRID控件:属性:ActiveLevel: 当前层BorderStyle: 窗口风格Color: 颜色FocusedView: 当前View;Font: 字体LevelTabs: 类似Page ...

  7. Unity for VsCode

    安装以下两个插件 以下设置VsCode在换行保存时不删除tab空格

  8. React页面插入script

    项目中遇到插入广告的需要,而广告的信息只是一个url链接,这个链接返回的时一个js,和以前插入广告有点不同.所有找了很多方式. 先来展示广告链接返回的信息: 假设广告链接为:http://192.16 ...

  9. springboot+mybatis+freemark+oauth开发环境搭建

    一.创建springboot工程 1.环境介绍: a:jdk版本:1.7 b:Springboot版本:1.5.6(使用1.5.9的版本整合mybatis会报错:java.lang.NoClassDe ...

  10. Linux下chkconfig命令介绍

    一.引论 chkconfig命令检查.设置系统的各种服务.这是Red Hat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行哪些系统服务, 其中包括各类常驻服务.谨记chkco ...