一、类和类成员的访问修饰符
类如果没有加修饰符,那么默认为Internal;
类有两种访问修饰符,要么是internal,要么是public;
- public
公共,所有实例化的对象都可以直接进行调用。
示例代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study_oneday
{
class School
{
/*
* 公有成员
* 实例化的每一个对象都可以直接进行访问
*/
public int A;
public void Input_Name(String name)
{
Console.writeline(name);
}
}
class Program
{
static void Main(string[] args)
{
School School_A = new School();
School_A.Input_Name("AAAAAAAAAAA");
}
}
}
- private
私有成员,只有类中成员访问,子类和实例不能访问;
namespace Study_oneday
{
class Program
{
static void Main(string[] args)
{
Conversion Conversion1 = new Conversion();
int a = Conversion1.Get_Private_number(23);
Console.WriteLine(a);
}
}
class Conversion:IDisposable
{
private int a;
//********************************Private
public int Get_Private_number(int A)
{
this.a = A;
return a;
}
~Conversion()
{
Console.WriteLine("对象已经删除");
}
//*********************************Static
}
}
- protected
只限于本类和子类访问,实例不能访问; - internal
仅可以在程序集内访问,或供友元程序集访问。这是非嵌套类型的默认可访问性。
案例1:在同一个程序集中可以进行访问
位于程序集B中的类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study03
{
public class StudyClass3_1
{
static void Main(string[] args)
{
}
public StudyClass3_1()
{
Console.WriteLine("StudyClass3_1 构造函数");
}
}
internal class StudyClass3_2
{
public int Number1 = 10;
public int Number2 = 100;
public StudyClass3_2()
{
Console.WriteLine("StudyClass3_2 构造函数");
}
}
}
在程序集A中对StudyClass3_2和StudyClass3_1进行实例化,其中internal修饰的不能进行实例化;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Study_03;
namespace Study_oneday
{
class Program
{
static void Main(string[] args)
{
StudyClass3_2 OBJstudyClass3_2 = new StudyClass3_2();//error CS0122
StudyClass3_1 Class3_1 = new StudyClass3_1();//Ok
}
}
- readonly
案例1:readonly只能修饰类中的字段;其初始化可以在构造函数进行或声明时初始化;
internal class StudyClass3_2
{
public readonly int Number3;
}
public StudyClass3_2()
{
Number3 = 100;
Console.WriteLine("StudyClass3_2 构造函数");
}
案例2:readonly本质上是一种语法,不同于const,const定义其为常量,只能修改一次,而readonly可以通过不同手段对其进行多次修改(注意只能在构造函数中进行修改);
- gggg
- ggg
- gggg