1.foreach
常见的循环有while,do...while,for循环,foreach是与for循环功能相似的循环结构
class Program
{
static void Main(string[] args)
{
int[] a1 = { 1, 2, 3 };
int[,] a2 = new int[2,2] { { 1, 2 }, { 3, 4 } };
//for循环输出数组a1
for (int i = 0; i < a1.Length; i++)
{
Console.WriteLine(a1[i]);
}
//for循环输出二维数组a2
for (int i = 0; i < a2.GetLength(0); i++)
{
for (int j = 0; j <a2.GetLength(1); j++)
{
Console.WriteLine(a2[i,j]);
}
}
//foreach输出数组a1,a2
foreach (int item in a1)
{
Console.WriteLine(item);
}
foreach (int item in a2)
{
Console.WriteLine(item);
}
}
foreach的优缺点:
优点:
1.foreach语法简洁,多维数组遍历只需要一行代码,for循序需要给初始值,步长,结束值,foreach不需要,会自动遍历集合中的所有值
2.foreach的效率比for循环高,foreach遍历速度比for要快
3.不需要关心数组的起始值
缺点:
1.会造成额外gc开销
2.foreach是只读类型
2.get与set
平时在类外想实现对私有成员变量的改变与获取,通常会用到下面的方法
class A
{
private int num;
public int SetNum(int a)
{
num+=a;
return num;
}
public int GetNum()
{
return num;
}
}
用属性实现对字段的获取,get和set分别对应的是可读和可写,除了可读可写外,没有其它的条件限制操作,就有
class A
{
// 字段:一般设为私有的,不对外开放
private string name;
private int age;
private string gender;
// 属性:一般设为公有的,作为外部访问对应字段的一个接口
//写法1
public string Name
{
get { return name};
set {name=value;}
}
//也可以根据需求只设定只读或只写
//写法2
public int Age
{
get =>age;
set age=>value;
}
//写法3,简化写法
public string Gender
{
get;
set;
}
}
public class Program
{
static void Main(string[] args)
{
A s = new A();
s.Name = "张三";
Console.WriteLine(s.Name);
s.Age = 18;
Console.WriteLine(s.Age);
s.Gender="男";
Console.WriteLine(s.Gender);
}
}