正确 C# 未来的期望

接触 C# 一年。整体上是一个很完好的语言,可是某些细节特征还是不够完美。这里记下我如今对它将来的一些期望。

更强大的泛型约束

与 C++ 的模板相似,C# 的泛型使得编写适用于多种类型的代码更加简洁。假设没有泛型。我们可能须要使用 object 并运行类型转换,或者针对每一种类型写大量雷同的代码。在泛型类型约束上。C# 一如既往的严格。可是因为泛型约束还不完好,有时不得不写一些反复的代码。比方以下这个样例:

public static T MaxT(T a, T b) where T is int or long or float or double

{

return a = b ? a : b;

}

可惜如今的 C# 还没有这个功能......System.Math 的做法就是为各种类型分别写一个 Max 方法。

关于C#的泛型约束參考这里:类型參数的约束,模板与泛型的差别:C++ 模板和 C# 泛型之间的差别。

命名空间范围的訪问修饰

C# 提供了 internal 訪问修饰符来保护程序集内部类型或成员。可是实际开发中我们常常也须要在一个程序集中划分子模块。

为了更清楚的把同一个子模块内部的类之间公开的内容与不同的子模块之间公开的内容差别开,希望未来
C# 能够提供命名空间范围的訪问修饰。

比方以下这个样例:

namespace Moudle

{

public class Common { ... }

private class Secret { ... }

}

加入 private 类型的訪问修饰,这样 Common能够訪问 Secret,Secret 类型在 Moudle命名空间可见,对 Moudle 之外是不可见的。注意,如今的 C# 不同意命名空间内的元素声明为 private 或 protected。

C++ 中的友元也能够解决问题,可是我猜你们都不喜欢
friend。。。

使用内部类能够一定程度上解决问题。可是太不自由了。

在 Unity 开发中这个问题更严重,由于脚本组件必须写在单独的文件、且不能够为内部类。

可定义变量的引用

C# 支持在方法參数上使用 ref 和 out keyword来引用实參,这对结构类型非常重要,否则你非常难通过方法来改动结构本身的值。可是可能是为了避免 C# 太过复杂,所以这个特性仅限于方法參数。这样我们常常遇到看起来非常不正常的问题。比方 foreach 遍历结构类型集合无法改动值,用下标遍历结构数组仅仅能使用数组名+。为了避免太复杂,能够限制仅能够定义一级引用。

foreach(ref Vector3 position in positions)

{

position.x = 0;

}

更自由的扩展方法

如今的扩展方法必须写在单独的静态类里。并且必须使用了命名空间才干够使用。

这就是一个没有意义的限制。我们按功能模块来划分代码,发现某一个方法使用扩展的形式来编写更优雅,于是不得不把这种方法拿出去,放到某个名字没有意义的静态类里。这太无聊了。另外。扩展方法不支持以属性的形式扩展、不支持以引用的形式扩展,都是须要改进的。

class MyClass

{

public static DoSomething(this OtherClass obj, ...) { ... }

public static getSetSomething(this OtherClass obj){ get {...} set{...} }

public static void ModifyValue(this ref ValueType value) { ... }

}

更简洁的命名空间使用规则

看这个样例:

using A.B;

class MyClass { A.B.C.OtherClass x; }

在不使用不论什么命名空间时,须要如上面那样写一长串代码;using A 的情况下,你还是得写这么一串。假设命名空间层次太多时,你要么using到类所在的命名空间,要么从头写起前缀。

这太不智能了。

希望能够正确的识别子命名空间。

using A.B;

class MyClass { C.OtherClass x; }

声明:此篇文档时来自于【狗刨学习网】社区-unity极致学院,是网友自行公布的Unity3D学习文章,假设有什么内容侵犯了你的相关权益,请与官方沟通。我们会即时处理。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

正确 C#
未来的期望

时间: 2025-01-08 12:28:49

正确 C# 未来的期望的相关文章

对 C# 未来的期望

接触 C# 一年,总体上是一个非常完善的语言,但是某些细节特征还是不够完美.这里记下我现在对它将来的一些期望. 更强大的泛型约束 与 C++ 的模板相似,C# 的泛型使得编写适用于多种类型的代码更加简洁.如果没有泛型,我们可能需要使用 object 并执行类型转换,或者针对每一种类型写大量雷同的代码.在泛型类型约束上,C# 一如既往的严格,但是由于泛型约束还不完善,有时不得不写一些重复的代码.比如下面这个例子: public static T Max<T>(T a, T b) where T

神舟还玩“三板斧” 未来究竟行不行

神舟似乎很久没有什么新的大动作,只是不断在各大IT网站上看到"神舟笔记本降价XXX元"消息.不过在这看似宁静的背后,神舟却在谋划一场巨大举动.近日,神舟举行发布会,推出包括笔记本.一体机.平板.手机等在内的全线新产品.这意味着神舟几乎已经确定接下来的战略规划,短期内不会更改. 这次的全线产品更新看起来都很不错,也具备了神舟一贯"价格屠夫"的特质.只是在其他IT企业大举进军新领域的当下,神舟还玩着"三板斧",是不是有点不合时宜?而其未来究竟行不行?

loj6171/bzoj4899 记忆的轮廊(期望dp+优化)

题目: https://loj.ac/problem/6171 分析: 设dp[i][j]表示从第i个点出发(正确节点),还可以有j个存档点(在i点使用一个存档机会),走到终点n的期望步数 那么 a[i][k]表示i点为存档点,从i点走到k点(正确节点)的期望步数(中间没有其它存档点) 那么a[i][j]可以递推预处理出 其中g[v]表示从一个错误节点v开始走,期望走g[v]步会读档 解方程可以解出 s[j-1]就是点j-1出去的所有错误儿子的g[v]之和 那么接下来只要知道如何求g[v]就行了

立足当下,展望未来

回想一下你初入大学时对软件工程专业的畅想 当初你是如何做出选择软件工程专业的决定的? 软件行业就业前景好,加上自己对软件编程方面的一丝兴趣,就毫不犹豫的选择了这个专业. 你认为过去两年中接触到的课程是否符合你对软件工程专业的期待,为什么? 不太符合,甚至与近几年互联网行业的就业需求严重脱轨.目前我们的课程大纲所学习的课程注重基础教育,大多数必修课程都是围绕计算机软硬件基础来设计的,而且我们所学习的编程语言多而杂,大一到现在,C语言.C++.JAVA.汇编.C#,看起来学习了这么多语言,有哪一门能

项目管理术语表

术语表中的许多单词,在词典中都有更广泛甚至不同的含义.本术语表遵循如下惯例对术语进行定义:? 在某些情况下,一个术语由多个单词组成(如风险紧迫性评估):? 当出现同义词时,不再对同义词进行定义,而建议读者参见相应的常用词语(即见某某词语):? 对非同义词的相关术语,则在其定义结尾处标明交叉引用(即参见某某词语).Acceptance Criteria 验收标准:可交付成果通过验收前必须满足的一系列条件.Accepted Deliverables 验收的可交付成果:项目产出的,且被项目客户或发起人

我对知乎前端相关问题的十问十答

之前知乎上有不少同行邀请我回答一些前端相关问题,但是,大家都知道了,要认真回答一个问题是需要大量时间和精力的,对于还在不断学习积累阶段的我,时不时分散原本的精力,打乱自己原本的节奏,实际上是一件不划算的事情.就好像邮件或者微信,来一条信息,你就去看一下,时间和精力都会大大分散,工作和学习效率必然会大打折扣.所以我的策略是一段时间后专门花时间统一处理,这样时间利用率会更高,投入产出比会更大. 对于知乎上的这些前端的问题,我也打算采用同样的套路,趁着端午节前还有两个晚上的自由时间(当晚修正:两个晚上

CISSP AIO 2th: Information Security Governance and Risk Management

2.11 Security Steering Committee(安全指导委员会) A security steering committee is responsible for making decisions on tactical and strategic security issues within the enterprise as a whole and should not be tied to one or more business units. The group sho

【转载】张鑫旭对知乎前端相关问题的十问十答

问题一.前端现在怎么这么多人? 原问题地址是:https://www.zhihu.com/question/55886635 问题描述如下: 投出去的简历没有人看了 我的回答: 想来想去,还是从一个非前端领域的切身故事说起吧. 我的老家江苏泰兴是中国银杏之乡,产量全国1/3,而我外公家宣堡镇除了小馄饨出门,还是就是中国银杏第一乡的美称.在我小的时候,银杏的药用价值和使用价值被发掘,银杏价格突然猛增,那个时候的银杏树是没有人专门种植的,全部都是很早很早以前的那些老树,百年以上的比比皆是,或者说全部

看DeepMind如何用Reinforcement learning玩游戏

原文地址:http://www.infoq.com/cn/articles/atari-reinforcement-learning 原文作者:作者简介 尹绪森,Intel实习生,熟悉并热爱机器学习相关内容,对自然语言处理.推荐系统等有所涉猎.目前致力于机器学习算法并行.凸优化层面的算法优化问题,以及大数据平台性能调优.对Spark.Mahout.GraphLab等开源项目有所尝试和理解,并希望从优化层向下,系统层向上对并行算法及平台做出贡献. 引子 说到机器学习最酷的分支,非Deep lear