C# 一些特性

阵列(array)

阵列是一种资料结构, 可以储存相同类型的多个变数, 阵列中包含的变数称为阵列的元素, 可以指定阵列元素的类型来宣告阵列, 可透过索引存取变数, 阵列包含变数的个数称为长度(Length), 索引范围在 0 到 Length-1 之间
阵列型别是参考型别, 宣告阵列变数只是预留空间给阵列实体的参考, 实际上阵列实体是在 runtime 时使用 new 运算符创造出来, new 运算符指定阵列实体长度, 这长度在阵列的生命周期内是固定的, new 运算子会自动将阵列元素用预设值初始化, 例如, 对於所有数字型别(numeric type)是 0, 对所有参考型别是 null.

// type[] arrayName
int[] a = new int[10];
for (int i = 0; i < a.Length; i++) {
  a[i] = i;
}
// 也支援多维阵列
int[,] a2 = new int[10, 5];
int[,,] a3 = new int[10, 5, 2];

委派 Delegate

一种类型, 具特定参数清单及回传型别的方法参考, 可以用来当作其他方法的引数, 类似於 C 和 C++ 中的函数指标, 不同在於, 委派为物件导向且类型安全, 是 System.Delegate 类型的衍生, Delegate 类型是 sealed 无法被衍生, 用来定义方法签章, 确定参数类型与数量以及回传类型

public delegate void Del(string message);

public static void DelegateMethod(string message)
{
  Console.WriteLine(message);
}

Del handler = DeleteMethod; // 直接指定
Del handler = new Del(DelegateMethod); // 利用 delegate 类别, 建造
handler("Hello World");
// callback 用
public static void MethodWithCallback(int param1, int param2, Del callback)
{
  callback("The number is: " + (param1 + param2).ToString());
}
MethodWith(1, 2, handler);

<<:  Day06:绝对要有的Git观念与习惯

>>:  Day 17 | 常用范例:前後端共用的表单输入验证 Validate

WebAssembly是什么?

Docker 创始人 Solomon Hykes 发布了一条推特在业界引起了轩然大波(见下面的推文)...

Swift 新手-打造第一个 iOS App

开发前的新手纠结 商学院出身,非资工背景,团队内也没有熟悉 app 开发的人才 决定做 app 接触...

JS AJAX基础实作(3) DAY28

今天要来做gotop按钮啦 我们先来看一下程序码 function gotoTop() { if (...

10. CI x Github Action

CI 持续整合。 为什麽要 CI 呢? 想想我们前面写了那麽辛苦的自动测试,结果有人不跑测试就上传。...

每个人都该学的30个Python技巧|技巧 20:Python容器—集合(set)(字幕、衬乐、练习)

昨天的字典进阶操作你有没有学会呢?如果还是不熟悉记得要再去复习呀~ 今天又是一个新容器了,集合跟串列...