C#入门04-变量,变量转换,常量

本文详细介绍了C#中的数据类型,包括值类型(如bool、byte、char、decimal、double等)和预定义引用类型(如Object、Dynamic、String及Array)。同时,文章阐述了数据类型转换的四种方法:隐式转换、显式转换、使用Convert类以及As运算符。此外,还提到了常量的定义和使用。
摘要由CSDN通过智能技术生成

目录

一、数据类型

​编辑

(一)值类型(基本数据类型)

(二)预定义引用类型

1.对象(Object)类型:

2.动态(Dynamic)类型

 3.字符串(String)类型

4.数组(Array)类型

二、常用数据类型转换4个方法

 (一)隐式转换

(二)显式转换

(三)使用Convert类进行类型转换

 1.ToBoolean:将指定的值转换为布尔类型

2.ToByte:将指定的值转换为字节类型

3.ToInt16、ToInt32、ToInt64:将指定的值转换为短整型、整型或长整型

4.ToSingle、ToDouble、ToDecimal:将指定的值转换为单精度浮点型、双精度浮点型或十进制类型

5.ToString:将指定的值转换为字符串类型

 (四) As运算符

三、常量


一、数据类型

每个编程语言都有基本的数据类型,例如 C、C++、Java、Python、PHP、JavaScript、以及各种数据库等,而 C# 也不例外。下面是我用xmind画的思维导图(快速记忆)

 

 

(一)值类型(基本数据类型)

值类型变量可以直接分配给一个值。它们是从类 System.ValueType 中派生的。值类型隐式继承于 System.ValueType,而 System.ValueType 隐式继承于 System.Object。在程序运行时,值类型的数据存储在内存栈中。

类型值描述范围默认值用法概述
bool布尔值True 或 FalseFalse它用于声明变量来存储布尔值 true 和 false。
byte8 位无符号整数0 到 2550可显示转换为 int、long、double、float、decimal 类型
char16 位 Unicode 字符U +0000 到 U +ffff'\0'用于声明 .NET framework 使用Unicode字符表示 System.Char 结构的实例;可显示转换为 short、int、long、float、double、decimal 类型。转为 string 类型,需使用 ToString() 方法。
decimal128 位精确的十进制值,28-29 有效位数(-7.9 x 1028 到 7.9 x 1028) / 100 到 280.0Mdecimal 类型具有更高的精度和更小的范围,这使它适合于财务和货币计算,声明 decimal 类型变量使用后缀 m或M,转为 int、long、double、float 类型,需隐式转换。
double64 位双精度浮点型(+/-)5.0 x 10-324 到 (+/-)1.7 x 103080.0D声明 double 类型变量使用后缀 d或D;换为 int、long、float、decimal 类型,需隐式转换。
float32 位单精度浮点型-3.4 x 1038 到 + 3.4 x 10380.0F声明 float 类型变量使用后缀 f或F,可显示转换为 double 类型,转为 int、long、decimal 类型,需隐式转换。
int32 位有符号整数类型-2,147,483,648 到 2,147,483,6470可显示转换为 long、double、decimal、float 类型
long64 位有符号整数类型-9,223,372,036,854,775,808 到 9,223,372,036,854,775,8070L声明 long 类型变量使用后缀 l或L,可显示转换为 double、decimal、float 类型。
sbyte8 位有符号整数类型-128 到 1270可显示转换为 int、long、double、float、decimal 类型
short16 位有符号整数类型-32,768 到 32,7670可显示转换为 int、long、double、float、decimal 类型
uint32 位无符号整数类型0 到 4,294,967,2950声明 uint 类型变量使用后缀 u或U,可显示转换为 long、double、decimal、float 类型。
ulong64 位无符号整数类型0 到 18,446,744,073,709,551,6150声明 long 类型变量使用后缀 l或L,可显示转换为 double、decimal、float 类型。
ushort16 位无符号整数类型0 到 65,5350可显示转换为 int、long、double、decimal、float 类型

(二)预定义引用类型

 引用类型的变量存储对实际数据的引用。

申明引用类型关键字:class、interface、delegate。

 内置引用类型:dynamyic、object、string。

1.对象(Object)类型:

在 C# 的统一类型系统中,所有类型(预定义类型、用户定义类型、引用类型和值类型)都是直接或间接从 Object 继承的。 可以将任何类型的值赋给 object 类型的变量。将值类型的变量转换为对象的过程称为“装箱”。 将对象类型的变量转换为值类型的过程称为“取消装箱”。


using System;
 
namespace lian__xi
{
    class Program
    {
        static void Main(string[] args)
        {
            int i = 123;                        //声明一个 int 类型的变量 i ,并初始化为 112;
            object obj = i;                     //执行装箱操作;
            Console.WriteLine("这是装箱操作:值为{0},装箱对象为{1}", i, obj);
            int j = (int)obj;                   //执行拆箱操作;
            Console.WriteLine("这是拆箱操作:装箱对象为{0},值为{1}", obj, j);
            Console.ReadLine();
        }

运行结果:

有趣的练习:

namespace lian__xi
{
    class Program
    {
        static void Main(string[] args)
        {
            int i = 2023;           //声明一个int类型变量i,并初始化为2023;
            object object = i;         //声明一个object类型的object,装箱;
            Console.WriteLine("1、i的值为{0},装箱之后的对象为{1}", i, object);
            i = 2022;                //重新将i赋值为2022;
            Console.WriteLine("2、i的值为{0},装箱之后的对象为{1}", i, object);
            Console.ReadLine();
        }
    }
}

 运行结果:从程序运行结果可以看出,值类型变量的值复制到装箱得到的对象中,装箱后改变值类型变量的值,不会影响装箱对象的值。可以理解为:值类型叫红红的小苹果,值就是某个苹果,箱子是篮子。因此,已经放进篮子里的苹果是不会变的,还没放进去的苹果是可以随意更换的。

2.动态(Dynamic)类型

您可以存储任何类型的值在动态数据类型变量中。这些变量的类型检查是在运行时发生的。

声明动态类型的语法:

dynamic d = 20;
 3.字符串(String)类型

字符串(String)类型 允许您给变量分配任何字符串值。字符串(String)类型是 System.String 类的别名。它是从对象(Object)类型派生的。字符串(String)类型的值可以通过两种形式进行分配:引号和 @引号。

例如:

string str1= "HI";
string str2 = @"I am zhc";
4.数组(Array)类型

数组是一个存储相同类型元素的固定大小的顺序集合。数组是用来存储数据的集合,通常认为数组是一个同一类型变量的集合。

double[] arr1 = new double[10];
arr1[0] = 1230.0;
int [] arr2 = new int[5]  { 0,  1, 2, 3, 4};

二、常用数据类型转换4个方法

 (一)隐式转换

隐式转换遵循以下规则:

在C#中,隐式转换的规则如下:

  1. 从低精度类型到高精度类型的隐式转换是允许的。例如,从byte到int,从int到long,从float到double等。

  2. 从派生类型到基类类型的隐式转换是允许的。例如,从子类到父类。

  3. 枚举类型和整数类型之间存在隐式转换。例如,从int到enum类型。

  4. 字符类型(char)可以隐式转换为整数类型(如int)。

  5. 对象类型可以隐式转换为任何接口类型,只要该对象实现了该接口。

  6. 在数字类型之间的隐式转换是根据它们的大小顺序进行的。例如,从byte到short,从short到int,从int到long,从float到double等。

  7. C#中的隐式转换不支持异构类型之间的转换,例如,在不同的数字类型之间进行隐式转换是不允许的,如int到float。

// 从低精度类型到高精度类型的隐式转换
byte b = 10;
int i = b; // byte到int的隐式转换

// 从派生类型到基类类型的隐式转换
class MyBaseClass { }
class MyDerivedClass : MyBaseClass { }
MyDerivedClass derivedObj = new MyDerivedClass();
MyBaseClass baseObj = derivedObj; // 子类到父类的隐式转换

// 枚举类型和整数类型之间的隐式转换
enum Color { Red, Green, Blue }
int colorValue = Color.Green; // 枚举到int的隐式转换

// 字符类型到整数类型的隐式转换
char c = 'A';
int asciiValue = c; // char到int的隐式转换

// 对象类型到接口类型的隐式转换
interface MyInterface { }
class MyClass : MyInterface { }
MyClass myObj = new MyClass();
MyInterface myInterface = myObj; // 对象到接口的隐式转换

// 数字类型之间的隐式转换
int intValue = 10;
long longValue = intValue; // int到long的隐式转换

// 隐式转换不支持异构类型之间的转换,下面代码不支持运行,错误示范:
int intVal = 10;
float floatVal = intVal; // 编译错误:无法进行int到float的隐式转换

(二)显式转换

使用强制转换运算符(例如:(type)value)将一个数据类型转换为另一个数据类型。如果转换是不安全的,即可能导致数据丢失或溢出,那么在进行强制转换之前需要进行类型检查。

int a = 10;
double b = (double)a; // 显式转换,将整数类型转换为浮点类型

float c = 5.5f;
int d = (int)c; // 显式转换,将浮点类型转换为整数类型,小数部分会被截断

(三)使用Convert类进行类型转换

以下是Convert类常用的一些方法:

 1.ToBoolean:将指定的值转换为布尔类型
string value = "True";
bool result = Convert.ToBoolean(value);
2.ToByte:将指定的值转换为字节类型
string value = "10";
byte result = Convert.ToByte(value);
3.ToInt16、ToInt32、ToInt64:将指定的值转换为短整型、整型或长整型
string value = "100";
int result1 = Convert.ToInt16(value);
int result2 = Convert.ToInt32(value);
int result3 = Convert.ToInt64(value);
4.ToSingle、ToDouble、ToDecimal:将指定的值转换为单精度浮点型、双精度浮点型或十进制类型
string value = "3.14";
float result = Convert.ToSingle(value);
5.ToString:将指定的值转换为字符串类型
int value = 100;
string result = Convert.ToString(value);

 (四) As运算符

as运算符只能用于引用类型之间的转换,不能用于值类型之间的转换。如果尝试将一个值类型转换为另一个不兼容的值类型,会得到编译错误。下面是一个使用as运算符进行安全类型转换的示例:

object obj = "Hello World";
string str = obj as string;
if (str != null)
{
    Console.WriteLine(str);
}
else
{
    Console.WriteLine("转换失败");
}

三、常量

在C#中,常量是指在程序中定义的一个不可更改的值。常量一旦被赋值后,就不能再被修改。常量可以用来存储一些固定的数值、字符串或其他常量表达式,并且在程序运行过程中保持不变。常量的值必须在编译时确定,不能在运行时改变。

using System;

class Program
{
    // 定义常量
    const int MaxValue = 100;
    const string WelcomeMessage = "I am come from Wyu University!";

    static void Main()
    {
        Console.WriteLine(MaxValue);
        Console.WriteLine(WelcomeMessage);

        // 尝试修改常量的值,会导致编译错误
        // MaxValue = 200;
        // WelcomeMessage = "Hello";

        Console.ReadLine();
    }
}

感谢观看,创作不易,请各位路过点个赞鼓励作者吧! 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值