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

wordpress媒体库增加分类什么优化

wordpress媒体库增加分类,什么优化,做网站的原型文件下载,小雨免费主机文章目录 一、Using 声明二、静态本地函数三、Null 合并赋值四、解构函数 Deconstruct五、模式匹配增强功能 ​ 注意:在此仅提及 Unity 开发中会用到的一些功能和特性,对于不适合在 Unity 中使用的内容会忽略。 ​ C# 8 对应 Unity 版本: Un…

文章目录

        • 一、Using 声明
        • 二、静态本地函数
        • 三、Null 合并赋值
        • 四、解构函数 Deconstruct
        • 五、模式匹配增强功能

​ 注意:在此仅提及 Unity 开发中会用到的一些功能和特性,对于不适合在 Unity 中使用的内容会忽略。

​ C# 8 对应 Unity 版本:

  • Unity 2020.3 —— C# 8

​ 但是部分新内容还不在该版本 Unity 中被支持,下面筛选了一些比较实用的内容。

​ C# 8 新增功能和语法:

  1. Using 声明
  2. 静态本地函数
  3. Null 合并赋值
  4. 解构函数 Deconstruct
  5. 模式匹配增强功能

一、Using 声明

​ Using 声明是对 using 语法的简写,当函数执行完毕时会调用对象的 Dispose 方法来释放对象。

public class Lesson10 : MonoBehaviour
{void Start() {using StreamWriter s2 = new StreamWriter("文件路径");// 对该对象进行逻辑操作s2.Write(5);s2.Flush();s2.Close();// 利用这个写法 就会在上层语句块执行结束时释放该对象}
}

​ 注意:在使用 using 语法时,声明的对象必须继承 System.IDisposable 接口:

public class TestUsing : IDisposable
{public void Dispose() { }
}public class Lesson10 : MonoBehaviour
{void Start() {using TestUsing t = new TestUsing();}
}

​ 因为必须具备 Dispose 方法,所以当声明没有继承该接口的对象时会报错.

二、静态本地函数

​ 静态本地函数就是在本地函数前方加入静态关键字。

​ 作用:让本地函数不能够使用访问封闭范围内(也就是上层方法中)的任何变量,让本地函数只能处理逻辑,避免让它通过直接改变上层变量来处理逻辑造成逻辑混乱。

public int TestTst(int i) {bool b = false;i += 10;Calc(ref i, ref b); // 执行静态本地函数return i;// 静态本地函数static void Calc(ref int i, ref bool b) {i += 10;b =  true;}
}

三、Null 合并赋值

​ 空合并赋值是 C# 8.0 新加的一个运算符 ??=,类似复合运算符:
左边值 ??= 右边值
​ 当左侧为空时才会把右侧值赋值给变量。
​ 举例:

string str  = null;
str ??= "4565";
print(str); // "4565"// 注意:由于左侧为空才会讲右侧赋值给变量,所以不为空的变量不会改变
str ??= "1111";
print(str); // "4565"

四、解构函数 Deconstruct

​ 我们可以在自定义类当中声明解构函数,这样我们可以将该自定义类对象利用元组的写法对其进行变量的获取。
​ 语法:在类的内部声明函数:

public void Deconstruct(out 变量类型 变量名, out 变量类型 变量名.....)
​ 特点:一个类中可以有多个 Deconstruct,但是参数数量不能相同。

public class Person
{public string name;public bool   sex;public string number;public string email;// 三个解构函数public void Deconstruct(out string n, out bool sex) {n   = name;sex = this.sex;}public void Deconstruct(out string n, out bool sex, out string number) {n      = name;sex    = this.sex;number = this.number;}public void Deconstruct(out string n, out bool sex, out string number, out string email) {n      = name;sex    = this.sex;number = this.number;email  = this.email;}
}public class Lesson10 : MonoBehaviour
{void Start() {// 初始化并赋值Person p = new Person();p.name   = "xxx";p.sex    = false;p.number = "123123123123";p.email  = "xxxxxxxx@163.com";// 对该对象利用元组将其具体的变量值解构出来// 相当于把不同的成员变量拆分到不同的临时变量中(string name, bool sex) = p;print(name); // "xxx"print(sex);  // "false"string str3;(_, _, str3) = p;print(str3); // "123123123123"}
}

​ 解构函数也可以简写成:

public void Deconstruct(out string n, out bool sex) => (n, sex) = (this.name, this.sex);public void Deconstruct(out string n, out bool sex, out string number) => (n, sex, number) = (this.name, this.sex, this.number);public void Deconstruct(out string n, out bool sex, out string number, out string email) => (n, sex, number, email) = (this.name, this.sex, this.number, this.email);

五、模式匹配增强功能

​ C# 7 中模式匹配已经有常量模式、类型模式和 var 模式三种,在 C# 8 中新加入了如下几种模式:

  • switch 表达式
  • 属性模式
  • 元组模式
  • 位置模式

(一)switch 表达式

​ 对于如下枚举:

public enum PosType
{Top_Left,Top_Right,Bottom_Left,Bottom_Right,
}

​ 当需要写一个函数获取对应位置时,使用 switch 写法如下:

public Vector2 GetPos(PosType type) {switch (type) {case PosType.Top_Left:return new Vector2(0, 0);case PosType.Top_Right:return new Vector2(1, 0);case PosType.Bottom_Left:return new Vector2(0, 1);case PosType.Bottom_Right:return new Vector2(1, 1);default:return new Vector2(0, 0);}
}

​ switch 表达式是对有返回值的 switch 语句的缩写:

  • => 表达式符号代替 case: 组合
  • _ 弃元符号代替 default:

​ 它的使用限制,主要是用于 switch 语句当中只有一句代码用于返回值时使用:

public Vector2 GetPos(PosType type) => type switch {PosType.Top_Left     => new Vector2(0, 0),PosType.Top_Right    => new Vector2(1, 0),PosType.Bottom_Left  => new Vector2(0, 1),PosType.Bottom_Right => new Vector2(1, 1),_                    => new Vector2(0, 0)
};

(二)属性模式

​ 即在常量模式的基础上判断对象上各属性。
​ 用法:变量 is {属性:值, 属性:值}

​ 对于如下折扣类:

public class DiscountInfo
{public string discount;public bool   isDiscount;public DiscountInfo(string discount, bool isDiscount) {this.discount   = discount;this.isDiscount = isDiscount;}public void Deconstruct(out string dis, out bool isDis) {dis   = this.discount;isDis = this.isDiscount;}
}

​ 如果需要判断其具体信息,需要获取其两个成员变量的值进行判断:

DiscountInfo info = new DiscountInfo("5折", true);if( info.discount == "6折" && info.isDiscount)print("信息相同");

​ 使用属性模式可以快捷判断:

if (info is { discount: "6折", isDiscount: true })print("信息相同");

​ 结合 switch 表达式:

public float GetMoney(DiscountInfo info, float money) => info switch {// 属性模式结合 switch 表达式判断 n 个条件是否满足{ discount: "5折", isDiscount: true } => money * .5f,{ discount: "6折", isDiscount: true } => money * .6f,{ discount: "7折", isDiscount: true } => money * .7f,_                                    => money
};

(三)元组模式

​ 元组模式可以不需要声明数据结构类,可以直接利用元组进行判断:

int  ii = 10;
bool bb = true;if ((ii, bb) is (11, true)) {print("元组的值相同");
}public float GetMoney(string discount, bool isDiscount, float money) => (discount, isDiscount) switch {("5折", true) => money * .5f,("6折", true) => money * .6f,("7折", true) => money * .7f,_            => money
};

(四)位置模式

​ 如果自定义类中实现了解构函数,那么可以直接用对应类对象与元组进行 is 判断:

if (info is ("5折", true)) {print("位置模式 满足条件");
}

​ 同时还可以配合 when 关键字进行逻辑处理:

public float GetMoney2(DiscountInfo info, float money) => info switch {("5折", true) when money > 100 => money * .5f,("6折", true)                  => money * .6f,("7折", true)                  => money * .7f,_                             => money
};
http://www.15wanjia.com/news/14565.html

相关文章:

  • 个人可以做导航网站吗中山seo关键词
  • 沈阳网站推广¥做下拉去118cr网站制作出名的公司
  • 假网站怎么做呢seo站长工具推广平台
  • 余姚网站建设报价百度一下官网
  • 做团购网站需要注册哪些商标百度搜索引擎怎么弄
  • 那个网站做租赁好青岛关键词排名提升
  • 音乐网站开发与设计zac seo博客
  • 树莓派做网站服务器性能怎么样平台优化是指什么
  • 宁津县建设局网站最新域名解析
  • 泰安工作招聘杭州网络推广网络优化
  • 宁波建设网站公司百度管理员联系方式
  • 宝应县住房和城乡建设局网站如何做网络推广
  • 室内设计效果图多少钱一张针对百度关键词策划和seo的优化
  • 做花语的网站提高网站排名
  • hois.skxy.wordpressseo推广绩效考核指标是什么
  • 抚州建设工程造价管理站网站优化营商环境 提升服务效能
  • 动漫网站设计毕业论文seo是干什么的
  • 网站建设与设计方案新媒体营销
  • 营销网站首页设计软文推广发布平台
  • 专业的天津网站建设长沙网站设计拓谋网络
  • 丹东市房屋建设委员会网站网络推广有多少种方法
  • 学会了vue 能搭建一个网站平台知识营销
  • 网站建设服务器都有哪些新闻最新消息
  • 租一个网站服务器多少钱2021友情链接qq群
  • 影视 网站建设 新媒体上海百度首页优化
  • wordpress引用fa图标seo外链建设方法
  • wordpress推广网站插件淘宝关键词查询工具哪个好
  • 做网站什么主题好做知名的网络推广
  • 网站制作框架重庆seo研究中心
  • 做视频网站设备需求谷歌广告开户