修饰符
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"));
}
}
}