做的手游行业
所以经常有很多很旧的C#代码,新版本的很多开源的源码就不能用了(而且很多语法换汤不换药,一直以来微软的尿性就如此)
例如Unity2017,很多新的插件源码都不能直接用
如果打包成dll引入还好
要是引入代码就很多“语法酸糖”
假如都涉及IL2CPP或者Brust编译,会更好吧
程序世界没有假如,有假设和解决方案。。。。。
碰到的问题如下,也顺便学习一下新C Sharp的语法
deault
//6.0不能用的写法
//if (m_last?.Current == null) return default;
if (m_last?.Current == null) return default(T);
字串格式化
string write_code="写代码";
string s = "你妈啊,{write_code}是真de烦";
属性简写
class MyClass
{
string MyProperty => "1";
}
//又例如:
//[SerializeField] [Header("Gizmo")] private bool m_drawGizmo = default;
本身1个Property或者Field好像就有4~5种写法,真的多一种不多
我日&~……&@%*……!~……(~
方法的多个参数返回
public (string, List<glTFBuffer>) ToGltf(string gltfPath)
这个就有点恶心了
Out var XXXXX
T value = default(T);
//if(_ignoreCaseValues.TryGetValue(name, out var value))
if (_ignoreCaseValues.TryGetValue(name, out value))
{
return value;
}
因为改过太多次了,所以倒也没觉得那么恐怖
三元数直接抛错
//value = Enum.TryParse<T>(name, true, out result)
// ? result
// : throw new ArgumentException(nameof(result));
bool ret = Enum.TryParse<T>(name, true, out result);
if (ret == true)
{
value = result;
}
else
{
throw new ArgumentException(nameof(result));
这种代码,我居然看了2秒
双重泛型???
private static class CacheValues<T> where T : struct, Enum
{
结构体的ReadOnly限定
[Serializable]
//public readonly struct BlendShapeKey : IEquatable<BlendShapeKey>, IComparable<BlendShapeKey>
国内软件业发展至今,其实readonly或者各种限制字
其实没那么好用了,要不要都无所谓,俗称“鸡肋”
内部的人996+,根本不会去动你的代码
外部的人更没时间搞你,他被他老板搞趴下了,顶多加上保证域安全即可
外部的人真要搞你,一般动用到法务部,和代码本身没什么干系了