前言
一、对象
1、由类建模而成,是消息、数据和行为的组合
2、可以接收和发送消息,并利用消息进行彼此的交互。消息要包含传送给对象接收的信息
3、类的实例化:把类转换为对象的过程叫类的实例化。
4、对象的特性
(1) 对象有状态:对象的状态由对象的各种属性和相应值构成
(2) 对象可以显示行为(即方法),对象的行为使对象可以完成相应世界级
(3) 对象一个唯一的身份
5、类与对象的关系
(1) 类:将对象进行逻辑上的分类后,描述它们具有的共同特征。相当于一个模型
(2) 对象:由模型产生的,具有它所属的类所具有的一切特征
6、小白理解
(1) 某农场游戏中储存在仓库中的物体有若干种,每种物体都有它自己的属性。
(2) 根据仓库中物体的属性,将它们分为三大类:农具类、收获物类、奖励类
(3) 农具类脚本:描述所有农具共有的属性(也可以再细分更小的类)
(4) 由农具类创建出来的某个具体的农具(如锄头)就是对象,它具有工具类描述的所有属性
(5) 创建出锄头之后,你还可以给锄头赋予其他的属性
二、类
1、类由成员变量和成员方法组成。
(1) 成员变量可以用来存储对象的属性值,而成员方法用于定义对象的行为和操作。
(2) 成员变量也可以称为类的属性,而成员方法可以称为类的方法。
(3) 通过类中的成员变量和成员方法,可以描述出对象的特征和功能。
(4) 在C#中,成员变量和成员方法需要在类中进行定义,并且可以通过对象访问和使用。
1、字段
(1) 属性在类的声明中用变量表示,这样的变量称为字段(类中用于描述对象属性的变量)
(2) 在类内部声明,但在方法声明体之外
2、常见的访问权限
(1) private :只允许在类的内部使用
(2) public :类的外部也可以使用
(3) protected :在派生类中使用
3、方法(Method):C#中,所有的变量和方法都存在于类中
4、类的简单实例
(1) 实例和解析
(2) 使用 Hello 类创建一个对象
5、使用类中的方法:
(1) 使用类中的方法之前需要创建一个由这个类产生的对象,再由这个对象使用这个类
(2) 例如:使用 Hello 类中的displayMessage方法
Hello myHello = new Hello();
myHello.displayMessage();
6、通过类名 + . 直接使用的方法
(1) 该方法前有一个关键字static
(2) 只有静态的方法可以直接通过类名调用
(3) 例如Hello类中的 displayMessage 方法所调用的Console类,就是一个静态类
(4) Console类是系统自带的一个静态方法
重点
调用某一个类的方法有两种
① 创建对象后才能调用
Hello myHello = new Hello();
myHello.displayMessage();
② 直接调用(限静态方法)
Console.WriteLine("Hello");//调用Console类中的WriteLine方法
三、命名空间(namespace)
1、标识作用。组织和重用代码的编译单元,避免命名的重复等
2、简单理解:在类名前再加一个名字,以与其他类相区别
3、规定了标识符的可见范围
4、实例:Mis.Hello 类中的 Hello 类只在Mis这个命名空间中可见,
若在另一个命名空间看到Hello类,则看到的这个Hello类与Mis中的Hello类不是同一种
5、小白理解:
(1) 现有A、B、C、D 四个命名空间,每个命名空间中都有一个名字为 example 的类
现有赵钱孙李四个家庭,每个家庭都有一个叫小花的女儿
(2) 为区分分别位于四个命名空间中的这四个类,给example添加"A."......这样的前缀
为区分这四个小花,你依次称她们为:赵小花、钱小花......
(3) 这四个小花不是同一个人,她们有自己的特征
6、引用命名空间
(1) 未引用时:System.Console.WriteLine("Hello");
(2) 使用 Using.System,在后续使用 Console类时,直接写为:Console.WriteLine("Hello");
7、了解
(1) 在每一个新建的C#工程中,系统都会自动把工程中的文件放进一个新的命名空间中
(2) 这个命名空间的名字一般默认为项目的名称
C#程序设计课程中第一个示例
一、实例1
1、启动Visual Studio,新建项目
2、 编辑
3、执行不调试。可以输出"HelloWorld"
4、打开解决方案资源管理器
5、可执行文件地址:\vs\Example01\bin\Debug
二、实例2
1、两个常见的静态类
(1) Console类:控制台类
(2) Convert类:转换类
2、Write和WriteLine的区别:WriteLine可以换行而Write不可以
3、实例:在控制台分两行输入两个整数数字,在第三行显示它们的和
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Example01
{
internal class Program
{
static void Main(string[] args)
{
//从控制台读取一行输入,并将其赋值给字符串变量s
string s = Console.ReadLine();
//字符串s转换为一个32位(四个字节)的整数
int x = Convert.ToInt32(s);
s = Console.ReadLine();
int y = Convert.ToInt32(s);
int z = x + y;
Console.WriteLine(z);
}
}
}
4、输入的每行中含有多个数据(用空格分割)
(1) double 和float
双精度浮点数(double)是一种数据类型,用于表示带有小数点的数值,并且具有更高的精度和范围。它可以存储更大范围的数值和更多的小数位数。在C#中,双精度浮点数的关键字是 double
。
单精度浮点数(float)也可以用来表示带有小数的数值,但它的精度和范围相对较低。单精度浮点数的关键字是 float
。
在字符串转换为数字时分别使用 Convert.ToDouble()
和 Convert.ToSingle()
(2) 实例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Example01
{
internal class Program
{
static void Main(string[] args)
{
//在一行中输入多个数据
string s2 = Console.ReadLine();
string[] ss2 = s2.Split( ' ' );
double[] a = new double[ss2.Length];
double sum = 0;
for ( int i = 0; i < ss2.Length; i++)
{
a[i] = Convert.ToDouble(ss2[i]);
sum = sum+ a[i];
}
Console.WriteLine(sum);
}
}
}
(3) 解析
string[] ss2 = s2.Split( ' ' );
将字符串 s2 以空格字符(' ')为分隔符拆分成一个字符串数组
并将其存储在字符串数组 ss2 中。每个子字符串都将作为数组的一个元素
double[] a = new double[ss2.Length];
创建一个与 ss2 数组长度相同的新的双精度浮点数数组 a,用于稍后存储转换后的双精度浮点数值
数组中的每个元素都代表来自 ss2 数组的一个转换后的双精度浮点数值。
(5)
(1)
(2)
(3)
(4)
(5)
(1)
(2)
(3)
(4)
(5)