c#中foreach、get与set

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);
        }
    }

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值