备忘,记忆力越来越差了,必需把这种琐碎的东西记下来,以防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. Python 爬虫 Vimeo视频下载链接

    python vimeo_d.py https://vimeo.com/228013581 在https://vimeo.com/上看到稀罕的视频 按照上面加上视频的观看地址运行即可获得视频下载链接 ...

  2. DELL服务器r710配置RAID

    DELL服务器r710配置RAID: 1.开机后等待DELL图标出现,连续按ctrl+r,进入RAID配置界面: 2.进入RAID配置界面,如果是下面的这个界面,选择Disk group 0这项需要按 ...

  3. jdbc与TiDB数据库交互的过程

    以下是使用jdbc操作TiDB数据库,得到的交互过程和指令的说明 ==>代表发送给数据库的指令 // 加载驱动程序Class.forName(driver); // 连接数据库 Connecti ...

  4. python:选房抽签小工具

    1.房间号和姓名写在house_name.xls的house标签页中[注意!名字均不要改动]2.运行house.py3.当前同目录下会生成result.xls,即为结果:程序运行过程中不要打开该文件, ...

  5. 《算法导论》——重复元素的随机化快排Optimization For RandomizedQuickSort

    昨天讨论的随机化快排对有重复元素的数组会陷入无限循环.今天带来对其的优化,使其支持重复元素. 只需修改partition函数即可: int partition(int *numArray,int he ...

  6. html:class名命名规范

    1 前端开发命名规范 1.1 为什么要制定CSS命名规范 统一的命名规范,便于多人开发维护时代码统一,减少项目沟通和交接的成本,增加代码的语义化. 1.2 CSS命名规则 样式类名全部用小写,首字符必 ...

  7. python中的新式类与旧式类

    在python2中,有新式类与旧式类的区别: 首先创建一个类: class Sb(object): pass 如果创建时继承自object,说明这是一个新式类,不写object,说明是一个旧式类: 那 ...

  8. Android Studio 3.1.3正式版的新坑。。。

    Gradle编译时没问题,运行App时候出现: java.util.NoSuchElementException java.lang.RuntimeException: com.android.bui ...

  9. 多层josn数据 修改

    var aa = { a: 1, b: { c: 1, d: 1 }, e: [{ f: 1, g: 2 }, { h: 1, i: { j: 3, k: [{ l: 55, m: [1, 2, 3, ...

  10. Smart Contract - Hello World

    [编写Smart Contract] 1.包含头文件. #include <eosiolib/eosio.hpp> #include <eosiolib/print.hpp> ...