C# 类与对象、字段、静态与非静态+四大访问修饰符

一、类与对象 核心概念(必考)

1. 核心关系

  • :是模板、是类型,仅做定义,不占用内存

  • 对象:是类的实例,通过模板创建出来的真实个体,占用内存

  • 一句话:类是图纸,对象是造出来的实物

2. 对象创建规则

对象必须通过构造函数 new 创建

复制代码
// 语法:类名 对象名 = new 类名();
People zs = new People();
People ls = new People();

每 new 一次,就产生一个全新独立对象,数据互不干扰。


二、类的定义规范(语法默写)

1. 类的位置

必须写在 namespace 命名空间内部,不能写在方法内部。

2. 类语法格式

复制代码
// 修饰符 class 类名 { 类成员 }
public class People
{

}

3. 命名与修饰符规则

  • 类名:大驼峰命名法

  • 常用修饰符:public(公共)、internal(默认内部)


三、类的三大成员:字段、属性、方法

1. 字段(成员变量)

作用:存储对象的数据状态

语法:修饰符 数据类型 变量名;

复制代码
string name;     // 私有字段(默认)
int age;
bool sex;
public string id; // 公共字段
private int _height; // 私有规范字段(下划线开头)

字段核心规则(超级重点)

  • 字段默认访问权限是 private(私有的)

  • 私有字段:只能在当前类内部访问,外部无法直接赋值读取

  • public 公共字段:外部对象可以直接访问、赋值、读取


四、成员方法:静态方法 & 非静态方法(必考区分)

1. 非静态方法(实例方法 / 对象方法)

无 static 修饰

复制代码
public void F1()
{
    Console.WriteLine("非静态无返回值方法");
}

调用规则:必须通过【对象】调用

复制代码
zs.F1();
ls.F1();

2. 静态方法(类方法)

带 static 修饰,属于类不属于对象

复制代码
public static int F2(int a)
{
    return 100000;
}

调用规则:必须通过【类名】调用,不需要 new 对象

复制代码
People.F2(10);

五、静态、非静态 终极区别(简答题满分)

类型 修饰符 归属 调用方式 创建对象
非静态方法 无 static 归属对象 对象名.方法() 必须 new 对象
静态方法 有 static 归属类 类名.方法() 无需创建对象

六、访问权限重点(必考坑点)

  • 类中字段 默认 private 私有

  • 私有字段:外部无法直接访问

  • public 公共字段/方法:任意位置都可以访问


七、考前极简背诵口诀

  • 类是模板对象实例,new创建对象占内存

  • 字段默认是私有,public公开可访问

  • 无static对象调用,有static类来调用

  • 非静态属于对象,静态方法属于类

四大访问修饰符(internal重点+跨项目访问),访问修饰符的测试例子

一、四大访问修饰符总览(考试必背)

public、private、internal、protected

控制:类、字段、属性、方法 的访问权限


二、逐权限精讲(结合你的代码)

1. internal(重点!你代码核心考点)

权限规则

只能在【当前项目】内部访问,绝对不能跨项目访问

默认权限

类默认访问修饰符就是 internal

你代码:

复制代码
internal class Class1 { ... }

含义:Class1 只能在本项目随便用,别的项目引用也访问不到

你的代码验证

复制代码
// 同项目:正常访问
Class1 c1 = new Class1();
c1.age = 1;

经典报错场景(必考)

你上一个课件的 People 类是 internal

所以:新项目即使添加引用、引入命名空间,也无法访问 People 类

这就是 internal 的核心限制:锁死项目边界


2. public 公共的

最高权限,任意位置、任意项目都能访问

你的代码中:

复制代码
public int age;

public 字段/方法:跨项目、跨类、任意地方都能访问


3. private 私有的(默认成员权限)

仅限当前类内部访问

字段、方法默认都是 private

出了当前类,完全无法访问


4. protected 受保护的

本类内部 + **子类(继承)**可以访问

同项目其他普通类无法访问


三、访问权限范围排序(从大到小)

public > internal > protected > private


四、修饰符使用位置硬性规则(必考)

1. 类能用的修饰符:只有 public / internal

类不能用 private、protected!!报错

2. 类成员(字段、方法、属性)四种都能用

public / internal / protected / private


五、跨项目访问完整步骤(你代码提问点)

Q:如何跨项目访问别的类?

必须同时满足两个条件:

  1. 目标类必须是 public(关键点!internal 跨项目直接GG)

  2. 当前项目:添加项目引用 + using 引入命名空间

完整操作流程(考试默写版)

  1. 右键当前项目 → 添加 → 引用

  2. 选择需要引用的目标项目 → 确定

  3. 代码头部 using 引入命名空间

  4. 即可使用对方项目 public 的类和成员


六、终极权限对照表(满分背诵)

修饰符 访问范围 适用位置
public 所有项目、所有位置(最高权限) 类、成员
internal 仅限当前项目内部(默认类权限) 类、成员
protected 本类 + 子类 仅成员
private 仅限本类内部(最低权限、成员默认) 仅成员

七、超级易错考点(必考坑点)

  • 类默认是 internal ,所以默认不能跨项目访问

  • 字段/方法默认是 private,外部无法直接访问

  • 跨项目光加引用没用!类必须是 public 才可以访问

  • 类不允许 private / protected 修饰


八、简答题满分标准答案

1. internal 和 public 的区别?

public 是公共访问权限,所有项目均可访问;internal 仅限当前项目内部访问,无法跨项目访问。类默认修饰符为 internal,成员默认修饰符为 private。

2. 为什么引用了项目、加了命名空间还是访问不到类?

因为目标类是 internal 修饰,internal 只允许本项目访问,跨项目即使添加引用也无法访问,需要将类改为 public。

相关推荐
思麟呀1 小时前
C++工业级日志项目(八)最终上层接口
开发语言·c++
魔法阵维护师1 小时前
从零开发游戏需要学习的c#模块,第三十二章(Boss 战系统)
学习·游戏·c#
石山代码1 小时前
如何在 C++ 中实现多态?
开发语言·c++
阿方.9181 小时前
C++ std::function 超全精讲 | 原理语法、适配对象、递归实现、回调场景、面试考点、易错坑点
开发语言·c++·bind·function
weixin_468466851 小时前
Markitdown 文档解析快速入门指南
开发语言·python·自动化·编程
我命由我123451 小时前
SEO 与 GEO 极简理解
java·linux·运维·开发语言·学习·算法·运维开发
Yang96111 小时前
0.5 米超短盲区!鼎讯信通 GO-50PRO 光时域反射仪科普
开发语言·后端·golang
不会C语言的男孩2 小时前
C++ Primer Plus 第12章:类和动态内存分配
开发语言·c++
阿里嘎多学长2 小时前
2026-05-30 GitHub 热点项目精选
开发语言·程序员·github·代码托管