总目录
C# 语法总目录
系列链接
C# 面向对象编程(一) 类 第一篇
C# 面向对象编程(一) 类 第二篇
C# 面向对象编程(一) 类 第三篇
C# 面向对象编程 一 ——类 第一篇
- 简介
- 面向对象编程
- 访问权限修饰符
- 类 第一篇
- 1. 字段
- 2. 属性
- 3. 构造器
简介
主要记录的是面向对象编程中,类的字段,属性,构造器的使用,注意事项
面向对象编程
访问权限修饰符
- public :完全访问权限
- internal:仅可以才程序集内访问,或友元函数访问
- private:仅可以在包含类型中访问
- protected:仅可以在包含类型或子类中访问
- protected internal:protected 和 internal 可访问性的并集
程序集 : 就是一次打包的集合,包含多个资源文件
添加程序集特性,才能让其他友元程序集访问
[assembly:InternalsVisibleTo("Friend")]
//如果友元程序集有强名称,必须指定完整的160字节公钥
[assembly:InternalsVisibleTo("StrongFriend,PublicKey=xxx....")]
//这里的公钥是打包的时候设置的,在vs中也可以点击右键项目,在属性中设置
类 第一篇
- 类的修饰符
有 public ,internal , abstract ,sealed , static , unsafe , partial,默认是internal
- 类名后缀
可以添加泛型参数、唯一基类、实现多个接口
//public 为修饰符
public class MyClass{
}
- 类成员
有 字段 ,属性,构造器,解构器, 方法,事件,索引器,终结器 ,重载运算符
1. 字段
字段可以用以下修饰符进行修饰
- 静态修饰符:static
- 访问修饰符:public,internal,private,protected
- 继承修饰符:new
- 不安全代码修饰符:unsafe
- 只读修饰符:readonly 只能在声明时或类构造器中赋值,其他地方无法更改
- 线程访问修饰符:volatile
internal class Person
{
private readonly string name="xiaoli";
private int age = 18;
public Person()
{
name = "zhangwei";
age = 20;
}
public override string ToString()
{
//this.name = "zhangsan"; //无法修改 readonly
return this.name+","+this.age;
}
}
2. 属性
通常属性是公有,字段是私有
属性可以用以下修饰符:
- 静态修饰符:static
- 访问权限修饰符:public ,internal , private , protected
- 继承修饰符: new , virtual ,abstract ,override ,sealed
- 非托管代码修饰符:unsafe , extern
//1.基本用法
internal class Person
{
//属性初始化
public string Name { get; set; } = "xiaoli";
public int Age { get; set; } = 18;
public override string ToString()
{
return this.Name+","+this.Age;
}
}
static void Main(string[] args)
{
Person p = new Person();
p.Age = 18;
p.Name = "zhangwei";
Console.WriteLine(p.ToString());
Console.ReadLine();
}
//输出
xiaoli,18
//2.属性搭配字段使用
internal class Person
{
private string name;
private int age;
public string Name { get => name; set => name = value; }
public int Age { get => age; set => age = value; }
public override string ToString()
{
return this.Name+","+this.Age;
}
}
static void Main(string[] args)
{
Person p = new Person();
p.Age = 18;
p.Name = "zhangwei";
Console.WriteLine(p.ToString());
Console.ReadLine();
}
//输出
zhangwei,18
//给属性 set 添加私有访问修饰符
internal class Person
{
private string name;
private int age;
public string Name { get => name; set => name = value; }
public int Age { get => age; private set => age = value; }
public override string ToString()
{
this.Age = 20;
return this.Name+","+this.Age;
}
}
static void Main(string[] args)
{
Person p = new Person();
p.Name = "zhangwei";
Console.WriteLine(p.ToString());
Console.ReadLine();
}
//输出
zhangwei,20
3. 构造器
隐式无参构造器:默认有一个无参构造器,但是如果显示写一个有参或无参构造器,则该无参构造器自动消失,必须手动添加一个无参构造器。默认无参构造器中的字段值为默认类型值或者是字段声明时的初始化值。
internal class Person
{
//这里的 ? 是指这个字段可以为 null
private string? name;
private int age;
//无参构造器
public Person()
{
name = "zhang";
age = 18;
}
//有参构造器
public Person(string? name,int age)
{
this.name = name;
this.age = age;
}
public string? Name { get => name; set => name = value; }
public int Age { get => age; set => age = value; }
public override string ToString()
{
return this.name+","+this.age;
}
}
static void Main(string[] args)
{
Person p = new Person("xiaoli",20);
Person p1 = new Person();
Console.WriteLine(p.ToString());
Console.WriteLine(p1.ToString());
Console.ReadLine();
}
//输出
xiaoli,20
zhang,18
总目录
C# 语法总目录
系列链接
C# 面向对象编程(一) 类 第一篇
C# 面向对象编程(一) 类 第二篇
C# 面向对象编程(一) 类 第三篇