C#笔记-8

修饰符

public和private

public private用于修饰类方法和字段

共有,私有

private修饰时,表示被修饰的方法或者字段只能在类的内部访问
public则是即可内部,也可外部。

类,class,当我们在class前加上public时,才能在其他项目里访问该项目下的这个类。
public class A{}

其他修饰符

protect关键字:保护

只有派生的类才能访问
也就是说,调用被保护的变量的类必须继承这个变量所属的类。

static

用于修饰字段或者方法

修饰字段的时候,这个字段叫静态字段或静态属性
修饰方法时,叫做静态方法或静态函数

使用static修饰的成员,只能通过类名访问。不能通过对象访问

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace learn
{
    class A
    {
        public int a;//公有属性
        private int b;//私有属性
        protected int c;//只能被自己和继承的子类访问
        public static int d;//公有属性,但是是静态属性

        public int B { get => b; set => b = value; }
    }
    class B : A
    {
        public void add()
        {
            a = 10;//调用A类的a变量
            B = 10;//通过get和set来设置私有属性b
            c = 10;//调用父类的变量c

        }
    }
    class C
    {
        static void Main(string[] args)
        {
            B.d = 10; //直接通过类来访问静态属性。
        }
    }
}

定义和实现接口

派生的接口

 接口之间可以继承

列表List的创建和使用

集合类 列表list

using System;
using System.Collections.Generic;

static void Main(string[] args)
{
    List<int> num_1 = new List<int>();
    var num_2 = new List<int>();
    var num_3 = new List<int>() { 1, 3, 4 };
    //三种列表创建方法,常用第二种

    num_3.Add(1);//使用list的add函数添加数据进入列表

    Console.WriteLine(num_3[2]);//直接使用数组下标来访问数据,下标从0开始

}

 列表内部数据依然是使用数组进行的存储,初始为0,

第一次存储,列表容量扩大到4,添加第5组数据时,列表容量直接翻倍到8,
依次类推,每一次列表要满的时候列表容量就翻一倍。

可以使用了列表的构造函数指定列表大小,指定列表大小后,它之后第一次扩容也会在我们指定的大小上翻倍。

using System;
using System.Collections.Generic;

List<int> num = new List<int>(50);
int n = Convert.ToInt32(Console.ReadLine());
int i = 0;
while (i != n)
{
    num.Add(i);
    Console.WriteLine("列表容量:{0}\t列表数据量:{1}", num.Capacity, num.Count);
    i++;
}

操作列表的属性和方法

 

using System;
using System.Collections.Generic;

var num = new List<int>() { 23, 42, 5, 23, 56, -1 };
num.Insert(2, 3);//在数组下标2处插入数据3,列表后其他数据和其下标依次往后移动
Console.WriteLine(num.IndexOf(5));//从头遍历获得数据5所在下标位置
Console.WriteLine(num.LastIndexOf(23));//从尾遍历获得数据23所在下标位置
foreach (int ret in num)
{
    Console.WriteLine(ret);
}
num.Sort();
foreach (int ret in num)
{
    Console.WriteLine(ret);
}

泛型类的定义

list就使用了泛型

 

泛型类的定义:定义一个类,这个类中某些字段的类型时不确定的,这些类型可以在类构造的时候确定下来。

using System;

class A<Var>
{
    private Var a;

    public A(Var a)
    {
        this.a = a;
    }
    public Var GetA()
    {
        return a;
    }
}
class B
{
    static void Main(string[] args)
    {
        var num = new A<int>(2);
        Console.WriteLine(num.GetA());
    }
}

泛型方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace learn
{
    class A
    {
       public static string Add<B,C>(B a,C b)
        {
            return a + "" + b;
        }
        static void Main(string[] args)
        {
            Console.WriteLine(Add<int,string>(421,"sa"));
        }
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值