新的c#开源源码旧版本c#如default不能用如何办

做的手游行业

所以经常有很多很旧的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+,根本不会去动你的代码

外部的人更没时间搞你,他被他老板搞趴下了,顶多加上保证域安全即可

外部的人真要搞你,一般动用到法务部,和代码本身没什么干系了

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

avi9111

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值