C#学习之数据类型-(一:简介)

  •   c#是强类型语言,对变量的类型要求很严格,如果是整数,就用int表示,如果是字符串就用string表示等等;因此每个变量和对象都必须具有声明的类型。它要求所有的变量都必须先定义后使用,相对而言JavaScript语言属于弱类型语言,它在声明变量时,不管什么类型,统一用var关键字。在此不做介绍。

  

  •  c#语言的数据类型有两种:值类型和引用类型。值类型放在内存栈中,而引用类型放在内存队中;在内存中存放的内容也是不一样的,值类型存放的是变量本身,而引用类型存放的是变量的引用。

    打个比方:值类型相当于现金,拿出来就可以花,引用类型相当于银行卡,必须拿着银行卡去取出钱,然后花,所以值类型比引用类型执行的更快一点。

言归正传:

C#值类型

c#值类型有以下三种

  1. 简单类型(Simple types)
  2. 结构类型(struct types)
  3. 枚举类型(Enumeration types)

1.简单类型

  整型,布尔型,字符型,浮点型,小数型

  1. 整型:      c#中有9个整型:sbyte,byte,short,ushort,int,uintlong,ulong,char;

    int popstar = 8;
  2. 布尔型: 布尔类型有两个值:true和false,

    bool popstar = true;          //定义一个布尔类型的变量并赋值为true
      bool popstar1 = (1 < 2);     //定义一个布尔类型的变量并为之赋值,它的值是表达式(1<2)的结果
  3. 字符型:字符型为一个单Unicode字符,一个Unicode字符16位长。

    char popstar=‘p‘;     //给一个字符变量赋值
  4. 浮点型:有两种类型:float和double;它们的差别在于取值范围和精度,当一个表达式中有一个值是浮点型时,所有其他的类型都要转换为浮点才可以计算。
  5. 小数型:当定义一个变量并赋值时,使用m后缀来表明她是一个小数型。

    decimal popstar = 1.2m;

2.结构类型

  一个结构类型可以声明构造函数,常数,字段等。尽管列出来的功能像一个类一样,但结构是值类型,类是引用类型。使用结构的主要思想是创建小型的对象,我的        理解便是:其实结构和类的作用是一样的,只不过如果内容(字段,方法)太多的时候,我们使用类,因为类是引用类型,我们可以将这个类放在别处,用的时候        拿进来,很方便;相反,如果内容(字段,方法)较少的时候便可以使用结构体,因为我们不需要引用了,直接和主体函数放在一块就ok。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication3
{
    struct popstar
    {
        public string firstname;               //姓字段
        public string secondname;              //名字段
        public popstar(string m, string n)     //构造函数
        {
            firstname = m;
            secondname = n;
        }
    }
    class Program
    {

        static void Main(string[] args)
        {
            popstar p = new popstar("张", "三");
            Console.WriteLine(p.firstname+p.secondname);
            Console.ReadKey();

        }
    }
}输出结果:张三

3.枚举类型

  是一个由指定常量集合组成的独特类型;

    (1)默认情况下,枚举元素是int型,且第一个元素为0,每一个连续的元素按1递增。

enum MonthNames { January,February,March,April};   //定义一个枚举,包含1-4月

    (2)如果想给第一个元素赋值,可以按如下方式设置为1:

enum MonthNames { January=1,February,March,April};   //定义一个枚举,包含1-4月

    (3)如果想给每一个赋值也可以-可以使相同的值,但元素名不可以相同

enum MonthNames { January=23,February=2,March=33,April=2};   //定义一个枚举,包含1-4月
class Program
    {
        static void Main(string[] args)
        {

            Console.WriteLine((int)MonthNames.January);
            Console.ReadKey();
        }
    }

    (4)也可以使用不同于int的数据类型

enum MonthNames:byte { January=2,February=33,March=23,April=33};   //定义一个枚举,包含1-4月

    不过枚举使用的类型仅仅限于long 、int、short、byte.

C#引用类型

在C#中引用类型包括:

    1. 对象类型;
    2. 类类型;
    3. 接口;
    4. 字符串类型;
    5. 数组;

1.对象类型

    对象类型是所有类型之母,她是其他类型最根本的基类,所以可以把任何类型的值付给它。

        object popstarInt = 123;                    //将整型赋给object变量
        object popstarChar = ‘p‘;                   //将字符型赋给object变量
        object popstarString = "popstar";           //将字符串赋给object变量
        object popstarBool = true;                  //将bool值赋给object变量

2.类类型

    类(class)类型是一个很神奇的类型,主要有属性和方法两个元素。属性就是这个类包含的一些数据类型的变量,方法是这个类包含的动作。

    类还有构造函数和析构函数,构造函数是用来开辟一块内存来存放类的实例,析构函数是用来把这块内存销毁。下面是一个简单的用户类:

public class User
    {
        string username;                     //用户名
        int age;                             //姓名
        bool sex;                            //性别
        public string Getusername()
        {
            return username;
        }
    }

  在此只简单地介绍类类型,面向对象后面还要详细学习。

3.接口

    接口:就是仅仅声明了但没有去实现,相当于一片文章的大纲,但没有具体内容。每个人都可以用这个大纲写进自己的内容。接口就是为了规范化,将大纲统一起来。

        对于程序猿呢,就可以使用接口中统一的方法名,去实现各自不同功能的方法。

        一个接口可以派生多个类,一个类也可以继承于多个接口,但一个类只可以有一个基类。接口简单使用如下:

 1 interface Iface
 2     {
 3         string GetMyName();
 4     }
 5     class popstar :Iface
 6     {
 7         string popstarName = "popstar";
 8         public string GetMyName()
 9         {
10             return popstarName;
11         }
12     }
13     class Program
14     {
15
16         static void Main(string[] args)
17         {
18             popstar people = new popstar();
19             Console.WriteLine(people.GetMyName());
20
21             Console.ReadKey();
22         }

4.字符串类型

  字符串数据类型当然是用来保存字符串的。它继承自object,而且是被密封的。

            string myName = "popstar";                   //声明一个字符串类型的变量并为其赋值
            string add = "I" + "love" + "you";           //将三个字符串合并为一个字符串赋给add
            char p = add[0];                             //取出add字符串中的第一个字符赋给p字符变量
            Console.WriteLine(p);

5.数组类型

  数组是可以容纳多个元素的类型,但是容纳的元素必须是同一种类型,如定义了一个int[]的数组,则数组里面只能存放int型的元素。

  数组一个比较重要的概念就是“维数”,定义数组的方法有以下几种:

            int[] intArr = {1,12,2};
            int[] intArr1 = new int[] { 1,1,1,11,2,2};       //不定长
            int[] intArr2 = new int[3] { 1,2,3};             //定长
            int[,] intArr3 = new int[,] { {1,1,3},{2,2,3}};  //不定长
            int[,] intArr4=new int[2,2]{{1,1},{2,2}};        //定长
时间: 2024-08-02 00:11:50

C#学习之数据类型-(一:简介)的相关文章

java开始学习,数据类型和堆栈

一篇简单的文章作为自己转型的开始,以后由嵌入式开发转向安卓app开发 javaee企业版 javase 标准板,做桌面应用程序 javame小型版,针对小产品,比如手机(这个已经不用了,现在用的是安卓) java输出 System.out.print(a); print只是输出'字符'和"字符串"和 变量 print('a'+1) 变为输出 98 'a'的ASCII为97.print('你'+1):因为汉字也是存放表中 java不同数据类型运算注意事项 java数据类型分为byte 1

MySQL学习笔记-数据类型与操作数据表

MySQL学习笔记-数据类型与操作数据表 数据类型:  1.字符型  2.整型  3.浮点型  4.日期时间型 数据表操作:  1.插入记录  2.查找记录 记录操作:  1.创建数据表  2.约束的使用 1.数据类型 [1]整型: 数据类型 存储范围 字节 TINYINT 有符号型:-128~127(-2^7~2^7 -1),无符号型0~255(0~2^8 -1) 1 SMALLINT 有符号型:-2^15~2^15 -1,无符号型0~2^16 -1 2 MEDIUMINT 有符号型:-2^2

NFC学习笔记二——Libnfc简介与安装

一直想把自己对过的英文文章做一下翻译记录下来,趁着学习NFC,现将libnfc首页的对libnfc介绍和在不同操作系统上对libnfc安装的文章做一下翻译,一方面提高一下自己的英语,另一方面学习一下libnfc. 原文地址:http://nfc-tools.org/index.php?title=Libnfc 公共平台独立的近场通讯(NFC)库 libnfc是GNU公共许可正下发布的第一个免费的底层的NFC开发包和编程API.它对任何人事完全免费和公开的.这个列表显示了libnfc支持的功能.l

mssql sqlserver 数据类型sql_variant简介说明

转自: http://www.maomao365.com/?p=9712  摘要: 下文讲述sqlserver中sql_variant数据类型定义.赋值.应用的相关说明,如下所示: 实验环境:sql server 2008 R2  数据类型sql_variant简介sql_variant是自sqlserver 2005开始的一种数据类型,此数据类型可以存储除 text ntext image timestamp外的所有数据类型值sql_variant 最大长度为8016字节,最大存储值为8000

爬虫学习 10.scrapy框架简介和基础应用

爬虫学习 10.scrapy框架简介和基础应用 今日概要 scrapy框架介绍 环境安装 基础使用 今日详情 一.什么是Scrapy? Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名,非常强悍.所谓的框架就是一个已经被集成了各种功能(高性能异步下载,队列,分布式,解析,持久化等)的具有很强通用性的项目模板.对于框架的学习,重点是要学习其框架的特性.各个功能的用法即可. 二.安装 Linux: ``pip3 install scrapy Windows: ``a. p

Elasticsearch学习2--Elasticsearch数据类型简介

1.Elasticsearch 是 面向文档型数据库,这意味着它存储的是整个对象或者 文档,它不但会存储它们,还会为他们建立索引,这样你就可以搜索他们了.你可以在 Elasticsearch 中索引.搜索.排序和过滤这些文档.不需要成行成列的数据.这将会是完全不同的一种面对数据的思考方式,这也是为什么 Elasticsearch 可以执行复杂的全文搜索的原因. 2.Elasticsearch使用 JSON (或称作JavaScript Object Notation ) 作为文档序列化的格式.J

python学习第1天——简介及入门

前言 为何使用Python Python 是一种效率极高的语言.与其他众多的语言相比,实现相同功能,使用Python编写的程序包含的代码更少.Python的语法简单,易上手,使用Python编写的代码更容易阅读.调试和扩展. Python使用领域也比较多.Python应用领域有:云计算.人工智能.大数据.金融.web开发.网络编程.科学运算.GUI图形开发.自动化运维.游戏开发.解决商业问题以及供各类有趣的公司开发内部公司等. 1. Python 简介 Python的创始人是Guido van

redis学习-sds数据类型

今天开始了redis的学习,本来想直接从源码看起的,不过看到有篇对redis介绍的基础教程 <Redis 设计与实现(第一版)> 于是决定从这个开始入门. 1.数据类型定义 typedef char *sds; struct sdshdr { // buf 已占用长度 int len; // buf 剩余可用长度 int free; // 实际保存字符串数据的地方 char buf[]; }; 2.重新计算新的长度 newlen = sdshdr.len + required_len if n

Redis学习之数据类型List详解

本文和大家分享的主要是redis数据类型中的list相关内容,一起来看看吧,希望对大家学习redis有所帮助. list即链表,它是一个能维持数据先后顺序的列表,便于在表的两端追加和删除数据,中间位置的存取具有O(N)的时间复杂度,是一个双向链表. 一.内部原理 redis内部实现代码在quicklist.c(注释:A doubly linked list of ziplists)中,它确实是一个双向链表,并且是一个ziplist双向列表. ziplist是什么? 一个经过特殊编码的的双向链表,