C#的编程基础(数据类型)

一、数据类型

1.基本类型

1.1 值类型

常用的值类型有分别是整形(比如int)、浮点类型(比如float、double) 、布尔类型(bool)、字符类型(char,char类型的字变量是用单引号括起来的。如‘A‘,如果把字符把在"A"(双引号)内,编译器会把它看作是字符串,从而产生错误)。

1.2 枚举类

枚举类的关键字是“enum”,除了chart之外的所有整数类型都可以作为枚举类型的基本类型。

1.3 结构类

结构类是使用struct关键字声明的类型

2.引用类型

引用类型包括类(class)、接口(interface)、数组、委托(delegate)、object和string。其中object和string是两个比较特殊的类型。object是C#中所有类型(包括所有的值类型和引用类型)根类。string类型是一个从object类直接继承的密封类型(不能再被继承),其实例表示Unicode字符串。

3.基本类型和引用类型的关系

以把值类型与引用类型的值赋给object类型变量,C#用“装箱”和“拆箱”来实现值类型与引用类型之间的转换。
装箱就是将值类型包装成引用类型的处理过程。当一个值类型被要求转换成一个object对象时,装箱操作自动进行,它首先创建一个对象实例,然后把值类型的值复制到这个对象实例,最后由object对象引用这个对象实例。
例如:
using System;
class Demo
{  
 public static void Main ( )
    {

int x = 123;
       object obj1=x;        // 装箱操作
        x = x+100;           // 改变x的值,obj1的值并不会随之改变
       Console.WriteLine (" x= {0}" , x );       // x=223
       Console.WriteLine (" obj1= {0}" , obj1 );     // obj1=123
    }
}

二、类型的相互转换

1.自动类型转换

//基本数据类型之间的自动类型转换

int i = 10;

double d = i; //发生自动转换

//引用数据类型之间的自动类型转换

class Person { }

class Student : Person { }

Student stu = new Student();

Person person = stu;//发生自动转换

2.强制类型转换

double d = 10;

int i = (int)d;//发生强制转换,此处会丢失数据精度

//引用数据类型之间的自动类型转换

class Person { }

class Student : Person { }  //Student 继承了Person类

Person person = new Student(); //父类引用指向子类对象

Student stu = (Student)person;//发生强制转换

//对于引用类型的强制转换还可以是

as关键字来实现,如:

Student stu = person as Student;//发生强制转换

3. 不同类型与string之间的相互转换
1.字符串转换成基本数据类型
int i = int.Parse("10");
double d = double.Parse("10.5");
bool b = bool.Parse("true");

//注:很多初学者一直认为基本数据类型就像和Java一样,

//其实C#的所有基本数据类型都是结构(struct)类型,在

//C#中结构是允许有方法的,所有基本数据类型都有Parse方法

//xx.Parse()只是这种类型转换的一种方式,

//Convert类提供了很多更丰富的类型转换的方法,如:

int i = Convert.ToInt32("10");

bool b = Convert.ToBoolean("true");

DateTime time = Convert.ToDateTime("2000-2-2");

2.将原始值转换成string

//统一用ToString()方法即可

int i = 10;

double d = 10.5;

bool b = false;

string si = i.ToString();

string sd = d.ToString();

string sb = b.ToString();

4. as 类型转换与(xx)类型转换的区别

Student stu = (Student)person;

Student stu = person as Student;

以上两种方式都可实现类型的强制转换,但两者还是有很大的区别,主要有两点:

1. as 只能用在引用数据类型的转换,而(xx)可用在引用类型和值类型

2. as 在类型转换时如果转换不了将返回null值,而(xx)转换不了将直接报出异常(Exception)

时间: 2024-07-30 13:51:54

C#的编程基础(数据类型)的相关文章

Python编程基础

Python编程基础 数据类型 None 值 整型 浮点型 布尔类型True,False 字符串 元组 tuple(),有序,不可变例:t = (1,)t = (1,'Hello',1.0,True) 列表 list[],有序,可变 例:l = [1,'Hello',1.0,True] 字典 dict{},键-值对,无序例:d = {65:'A',48:0,'a':97,'Hello':'World'} 操作符 数学操作符 + - * / 除 // 整除 % 取模 ** 指数 比较操作符 ==

[.net 面向对象编程基础] (3) 基础中的基础——数据类型

[.net 面向对象编程基础] (3) 基础中的基础——数据类型 关于数据类型,这是基础中的基础. 基础..基础..基础.基本功必须要扎实. 首先,从使用电脑开始,再到编程,电脑要存储数据,就要按类型存储,就跟我们买来衣服一样,裤子,上衣,冬天的,夏天的,总要分个类再放进衣柜中一样.越是高级的编程语言,数据类型分的越详细. 问题来了,这么多数据类型,我们是不是要一一记住,这真不是个省心的事情,不用怕,不用怕,不用怕,重要的事情说三遍. 重点:C#就15种数据类型. 准确来说,是15种预定义类型,

Matlab编程基础

平台:Win7 64 bit,Matlab R2014a(8.3) "Matlab"是"Matrix Laboratory" 的缩写,中文"矩阵实验室",是强大的数学工具.本文侧重于Matlab的编程语言侧面,讲述Matlab的基本语法,以及用Matlab语言进行程序设计.值得一提的是,Matlab从R2014a版本开始支持中文语言了! 1.基本概念 Matlab默认启动后界面: Matlab有关的文件后缀: File Extension Des

【PL/SQL编程基础】

[PL/SQL编程基础]语法: declare 声明部分,例如定义变量.常量.游标 begin 程序编写,SQL语句 exception 处理异常 end: / 正斜杠表示执行程序快范例 -- Created on 2016/8/22 by VITAS declare 定义变量 v_num number; v_eno number; v_ename varchar2(10); begin v_num:=234; v_eno:=&empno; 接收输入变量 select ename into v_

C#——编程基础知识

编程基础知识适用于所有高级编程语言.学了C#的第一小节,又对这些基础知识梳理了一遍.感觉比学习VB的时候的理解好了很多.下面看图: 基础知识:数据类型,表达式,流程控制语句.一切皆在图中. 一直在做编织知识网的工作.自己真的是不撞南墙不回头啊.米老师早就说过:要记笔记,要少记笔记,多了没用,又不会回头看.可是自己看的时候完全相反了.依旧几乎全部是截图,总结的时候特别费劲儿.得浏览所有截图,然后在几乎与视频等量的信息里再找主题,找中心.可是苦不堪言啊.现在终于下定决心,不再截图了.虽然总是有那股冲

Python中的基础数据类型

Python中基础数据类型 1.数字 整型a=12或者a=int(2),本质上各种数据类型都可看成是类,声明一个变量时候则是在实例化一个类. 整型具备的功能: class int(object): """ int(x=0) -> int or long int(x, base=10) -> int or long Convert a number or string to an integer, or return 0 if no arguments are gi

[.net 面向对象编程基础] (18) 泛型

[.net 面向对象编程基础] (18) 泛型 上一节我们说到了两种数据类型数组和集合,数组是指包含同一类型的多个元素,集合是指.net中提供数据存储和检索的专用类. 数组使用前需要先指定大小,并且检索不方便.集合检索和声明方便,但是存在类型安全问题,本来使一个类型安全的C#变得不安全了. 集合为了解决数组预设大小的问题,采取了一种自动扩容的办法,这样当大小不够时,他就创建一个新的存储区域,把原有集合的元素复制过来.如此又对性能上也是有很大的影响. 上节我们说到解决这些缺陷的方法,那就是.NET

java 编程基础

临近毕业,准备复习一些java的基础,顺便整理一下知识 编程基础 1.Java的特性和优势:简单.面向对象可移植( write once ,run anywhere ).高性能 ,分布式.动态性多线程安全健壮. 2.Java的运行机制, 计算高级编程语言类型有:编译型.解释型. Java语言是这两种类型的结合,利用编辑器写 Java源程序 -- 源文件名 :主类名.java,利用编译器(javac )将源程序编译 成字节码 -- 字节码文件名 :源文件名.class,再利用虚拟机 (解释器,即

MFC——10.网络编程基础

Lesson10:网络编程基础 网络编程是计算机编程的一个重要分支,是网络通信的基础,网络编程主要用到了Windows系统系统提供的socket.网络通信又分为基于TCP和基于UDP两种.本文主要讲解基于TCP和UDP的网络编程基础知识. 1.      基于TCP的socket编程 1.1  TCP服务器 #include <winsock2.h> #include <stdio.h> //#include <iostream> #pragma comment(lib

编程基础知识分享——编程开始之前

对我来说,编程这件事与其说是工作,不如说是兴趣.尽管和自己理想中的编程比,自己的所谓编程只不过是小打小闹,但是现在又有多少所谓的IT从业者是做真正的编程?产业化的今天,其实真的没有必要区分所谓的程序员和码农,每个人的路线和生活都不相同,也不可能相同,有人学编程只是为了一份工作,有人纯粹为了爱好.我的理解,无论出发点如何,只要尊重自己的选择,能够有所收获就够了. 这系列文章,是自己当初学习编程的一些方法和经验,整理了一下,可以分成几块记录.对于专业的程序员,我的经验并不适合,一些计算机专业出身的朋