1、foreach
1-1,微软官网很详细
foreach,in(C# 参考)
foreach
语句针对实现 System.Collections.IEnumerable 或 System.Collections.Generic.IEnumerable<T> 接口的数组或集合中的每个元素重复一组嵌入语句。 foreach
语句用于循环访问集合以获取所需信息,但不用于添加或删除源集合中的项,以避免不可预知的副作用。 如果需要添加或删除源集合中的项,请使用 for 循环。
为数组或集合中的每个元素继续执行嵌入的语句。 为集合中的所有元素完成迭代后,控制将传递给 foreach
块之后的下一语句。
在 foreach
块中的任何点上,可以使用中断关键字中断该循环,或者可以使用继续关键字单步执行到循环中的下一次迭代。
foreach
循环还可以通过 goto、return 或 throw 语句退出。
1-2、对数组使用 foreach(C# 编程指南)
C# 还提供 foreach 语句。 该语句提供一种简单、明了的方法来循环访问数组或任何可枚举集合的元素。 foreach
语句按数组或集合类型的枚举器返回的顺序处理元素,该顺序通常是从第 0 个元素到最后一个元素。 例如,以下代码创建一个名为 numbers
的数组,并使用 foreach
语句循环访问该数组:
int[] numbers = { 4, 5, 6, 1, 2, 3, -2, -1, 0 };
foreach (int i in numbers)
{
System.Console.Write("{0} ", i);//此处的i可以认为像是一个变量
// Output: 4 5 6 1 2 3 -2 -1 0
借助多维数组,你可以使用相同的方法来循环访问元素,例如:
int[,] numbers2D = new int[3, 2] { { 9, 99 }, { 3, 33 }, { 5, 55 } };
// Or use the short form:
// int[,] numbers2D = { { 9, 99 }, { 3, 33 }, { 5, 55 } };
foreach (int i in numbers2D)
{
System.Console.Write("{0} ", i);
}
// Output: 9 99 3 33 5 55
2、函数返回数组
public string[] a()
{
string[] s={"s","f","g","jj","hh,"gg"}//简单定义一个数组
return s ;//返回数组
}
3,Byte to String
byte a234 =199;
// textBox1.Text = a234.ToString();//output 199textBox1.Text = a234.ToString("x3");//output 0c7,转换为16进制了
4,Hashtable下面讲的很清楚,有些时候讲解问题先把定义或原理讲清楚
https://www.cnblogs.com/hfddz/p/6534235.html
5,delegate委托的作用
delegate是C#中的一种类型,它实际上是一个能够持有对某个方法的引用的类。
与其它的类不同,delegate类能够拥有一个签名(signature),并且它只能持有与它的签名相匹配的方法的引用。
上面的定义解释了一个delegate的声明定义了一个reference type, 而这个reference type是用来将一个方法利用一个指定的形式压缩起来。一个delegate的实例压缩一个静态或者一个实例方法。Delegates和C++中的功能指针很相似。然而,不同的是,delegate是安全的,并且是Type-safe。
C#中的委托
1. 委托类似与 C或C++中的函数指针,但委托是 面向对象的,并且是类型安全的
2. 委托 就相对与 一类方法 (即方法类,或者方法接口)
而这一类方法都具有相同的 修饰符、形参以及 返回值类型
委托,既是方法:
声明委托的方式如下:在修饰符后加上 delegate ['dɛlɪɡət]关键字
从格式上看,它与方法的声明极为相似,就是多了个 delegate关键字而已
表示声明了一类,修饰符为public、一个string类型形参的、没有返回值的方法
但委托不是普通的方法,因为它也是类,
所以委托只能声明,而不能定义,如不能这样写:
实例化委托,调用委托: