一、变量的声明与赋值
变量可以存储特定类型的数据,且可以随时调用和改变存储值。
变量由类型,名称和值构成
1.变量的声明
变量在使用之前必须先声明,需要指定变量的类型和名称。
C#中可以同时声明多个变量,不同变量名之间由逗号隔开,以分号结束。
int num;
string str1,str2,str3;
上面的代码声明了一个整形变量和3个字符串变量。声明变量的同时也可以初始化变量,即对变量进行赋值:
int a = 1;
string c = "Hello"
声明变量时,变量的命名也有一定规范:
1.变量只能由数字、字母和下划线组成。
2.变量名的第一个符号只能是字母和下划线,不能是数字。
3.不能使用关键字作为变量名。
4.一旦在一个语句块中定义了一个变量名,那么在变量的作用域内都不能再定义相同名称的变量。
2.变量的作用域
变量的作用域指程序代码能够访问该变量的区域,在该区域之外访问变量,则编译时会出现错误。根据变量的作用范围,可将变量分为成员变量的和局部变量
1.成员变量
成员变量是属于类或结构体的变量。成员变量用于存储对象的状态或数据,并在类的实例化过程中分配内存。它们定义了类的特征或属性。
成员变量又可分为两种,即实例变量和静态变量:
实例变量: 属于类的实例,每个对象都有自己的一组实例变量。这些变量在类的实例创建时被分配内存。
静态变量: 属于类而不是类的实例。所有该类的实例共享相同的静态变量。静态变量在程序启动时分配内存,直到程序结束时才释放。
实例变量的作用域为整个类。在成员变量类型前加上static关键字,就成为了静态变量,其作用域可以跨类,在其他类内可以通过“类名.静态变量”的方式使用。
2.局部变量
在类的方法体中定义的变量,即在方法内部代码中声明的变量。局部变量只在当前定义的方法内有效。当方法被调用时,C#编译器为方法中的局部变量分配内存空间;调用结束后,会释放空间并销毁局部变量。
需要注意的是,局部变量在声明时必须初始化,即给定一个初始值。
public class Example
{
// 成员变量
private int instanceVar = 10;
public void ExampleMethod()
{
// 局部变量
int localVar1 = 5;
string localVar2 = "Hello";
// 在这里可以使用 localVar1 和 localVar2,但不能在类的其他地方使用它们
// 使用局部变量和成员变量
int sum = localVar1 + instanceVar;
}
}
3.数据类型
1.值类型
值类型直接包含其数据的实际值,而不是引用指向对象的地址。值类型在栈上分配内存,并且它们的变量直接包含数据的实际值。以下是值类型的一些主要特点:
-
栈上分配内存: 值类型的实例通常在调用栈上分配内存空间。这使得值类型的创建和销毁速度较快,因为它们的生命周期通常与包含它们的代码块的执行时间相匹配。
-
直接包含数据: 值类型的变量直接包含实际数据的值,而不是引用指向数据的内存地址。这使得值类型的复制是对实际数据的复制,而不是引用的复制。
-
默认初始化: 值类型的变量在声明时会被默认初始化为其零值。例如,
int类型的变量默认初始化为0,bool类型的变量默认初始化为false。
1.整数类型
sbyte: 有符号8位整数。 范围:-128 ~ 127。
byte: 无符号8位整数。 范围:0 ~ 255。
short: 有符号16位整数。范围:-32,768 ~ 32,767。
ushort: 无符号16位整数。范围:0 ~ 65,535。
int: 有符号32位整数。范围:-2,147,483,648 ~ 2,147,483,647。
uint: 无符号32位整数。范围:0 ~ 4,294,967,295。
long: 有符号64位整数。范围:-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807。
ulong: 无符号64位整数。范围:0 ~ 18,446,744,073,709,551,615。
在选则数据类型时,要注意数值的大小,防止运算溢出:
static void Main(string[] args)
{
byte a = 256;
int b = 256;
Console.WriteLine("a = {0}",a);
Console.WriteLine("b = {0}",b);
}
编译后会出现错误:
![]()
这是因为byte类型的变量范围为0~255,256超出了此范围,所以会报错。
2.浮点类型
浮点类型主要存储有小数的数值,包含float和double两种类型。
float: 32位单精度浮点数。
范围:约 ±1.5 x 10^-45 到 ±3.4 x 10^38。
float myFloat = 3.14f;
注意:需要在数字后面加上 'f' 表示为 float 类型
double: 64位双精度浮点数。
范围:约 ±5.0 x 10^-324 到 ±1.7 x 10^308。
double myDouble = 3.14;
3.布尔类型
布尔类型有true和false两个值,不能与其他类型数据相互转换。
2.引用类型
在C#中,引用类型是一种数据类型,它不直接包含实际的数据,而是存储一个指向对象在堆内存中的地址的引用。这意味着引用类型的变量存储的是对象的引用,而不是对象本身的实际数据。
以下是代码示例:
using System;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public Person(string name, int age)
{
Name = name;
Age = age;
}
public void DisplayInformation()
{
Console.WriteLine($"Name: {Name}, Age: {Age}");
}
}
class Program
{
static void Main()
{
// 创建引用类型的实例
Person person1 = new Person("John Doe", 25);
// 调用引用类型的方法
person1.DisplayInformation();
// 修改引用类型的属性
person1.Age = 26;
// 创建另一个引用类型的实例
Person person2 = new Person("Jane Doe", 30);
// 调用另一个引用类型的方法
person2.DisplayInformation();
// 注意:person1 和 person2 是引用类型的变量,它们存储的是对象在堆内存中的地址
}
}
相比于值类型,引用类型有一些关键的区别:
引用类型存储在堆内存中,其本身存储的是对象在堆内存中的地址,并通过引用传递。传递的是对象在堆内存中的地址。而值类型存储在栈内存中,直接包含其数据的实际值,通过值传递。传递的是实际数据的副本。
引用类型默认初始化为 null,表示不引用任何对象。值类型默认初始化为相应类型的零值。
3.枚举类型
枚举类型通常用来声明一组具有相同性质的常量。
定义枚举类型时,如果不对其进行赋值,默认第一个枚举值为0,后面每个值依次递增1.
C#中使用enum关键字声明枚举类型:
enum 枚举名
{
list1=value1,
list2=value2,
...
listN=valueN,
}
以下是枚举类型的实际应用:
public enum DayOfWeek
{
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
}
class Program
{
static void Main()
{
// 使用枚举类型变量
DayOfWeek today = DayOfWeek.Wednesday;
Console.WriteLine($"Today is: {today}");
// 判断今天是否是周末
if (today == DayOfWeek.Saturday || today == DayOfWeek.Sunday)
{
Console.WriteLine("It's the weekend!");
}
else
{
Console.WriteLine("It's a weekday.");
}
}
}
输出结果为:
Today is: Wednesday
It's a weekday.
4.类型转换
1.隐式转换
隐式转换不需要声明,比如将int类型转换为long类型:
int a = 100;
long b = a;
2.显式转换
显式转换也称为强制转换,需要在代码中明确声明要转换的类型。如在将高精度变量转换成低精度变量时,就需要使用显式转换。
实际上,强制转换可以将任何数值类型转换为其他类型。
示例代码如下:
class Program
{
static void Main()
{
int intValue = 42;
// 显式将整数转换为双精度浮点数
double doubleValue = (double)intValue;
Console.WriteLine($"Original Integer Value: {intValue}");
Console.WriteLine($"Converted Double Value: {doubleValue}");
}
}
5.常量
常量就是固定不变的量。C#中使用关键字const定义常量。创建常量时必须设置初始值。以下是定义一个整型常量的示例:
const int = 5
如果修改常量的值,程序就会报错。
2024年3月6日
本文详细介绍了C#中的变量声明与赋值、数据类型(值类型、引用类型、枚举和常量)、作用域(成员变量和局部变量)、以及类型转换的基本概念,帮助初学者理解C#的基础语法和内存管理。
变量与常量&spm=1001.2101.3001.5002&articleId=136493342&d=1&t=3&u=437eb78519234432abb7b8816078b1a8)
148

被折叠的 条评论
为什么被折叠?



