📜  C#变量和(原始)数据类型

📅  最后修改于: 2020-10-06 09:40:27             🧑  作者: Mango

在本教程中,我们将学习变量,如何在C#中创建变量以及C#编程语言支持的不同数据类型。

变量是赋予存储位置的符号名称。变量用于将数据存储在计算机程序中。


如何在C#中声明变量?

这是在C#中声明变量的示例。

int age;

在此示例中,声明了一个类型为int (integer)的变量age ,并且它只能存储整数值。

我们可以稍后在程序中为变量分配一个值,如下所示:

int age;
... ... ...
age = 24;

但是,变量也可以在声明期间初始化为某个值。例如,

int age = 24;

在这里,声明了一个int类型的变量年龄 ,并同时将其初始化为24

由于它是一个变量,因此我们也可以更改变量的值。例如,

int age = 24;
age = 35;

在这里, 年龄值从24更改为35。


必须先声明C#中的变量,然后才能使用它们。这意味着,必须先知道变量的名称和类型,然后才能为其分配值。这就是为什么C#被称为静态类型的语言的原因。

声明后,变量的数据类型不能在范围内更改。范围可以看作是代码块,其中变量可见或可以使用。如果您不理解前面的说明,请不要担心,我们将在后面的章节中学习作用域。

现在请记住,我们无法在C#中执行以下操作:

int age;
age = 24;
... ... ...
float age;

隐式类型变量

另外,在C#中,我们可以使用var关键字声明变量而无需知道其类型。这种变量称为隐式类型的局部变量

使用var关键字声明的变量必须在声明时进行初始化。

var value = 5;

编译器根据分配给变量的值来确定变量的类型。在上面的示例中, valueint类型。这等效于:

int value;
value = 5;

您可以了解有关隐式类型局部变量的更多信息。


C#中的变量命名规则

命名变量时,我们需要遵循某些规则。在C#中命名变量的规则是:

  1. 变量名称只能包含字母(大写和小写),下划线(_)和数字。
  2. 变量名称必须以字母,下划线或@符号开头。例如,
    Rules for naming variables in C#
    Variable Names Remarks
    name Valid
    subject101 Valid
    _age Valid (Best practice for naming private member variables)
    @break Valid (Used if name is a reserved keyword)
    101subject Invalid (Starts with digit)
    your_name Valid
    your name Invalid (Contains whitespace)
  3. C#区分大小写。这意味着年龄年龄指的是两个不同的变量。
  4. 变量名称不能是C#关键字。例如, ifforusing不能是变量名。在下一个教程中,我们将讨论有关C#关键字的更多信息。

命名变量的最佳做法
  1. 选择一个有意义的变量名。例如, 名称年龄主题nas更有意义。
  2. 使用camelCase表示法(以小写字母开头)来命名局部变量。例如, numberOfStudentsage等。
  3. 使用PascalCaseCamelCase (以大写字母开头)来命名公共成员变量。例如, FirstNamePrice等。
  4. 使用前导下划线(_)后跟camelCase表示法来命名私有成员变量。例如_bankBalance_emailAddress等。

您可以在此处了解有关C#中的命名约定的更多信息。

不用担心公共和私有成员变量。我们将在后面的章节中了解它们。


C#基本数据类型

C#中的变量大致分为两种类型: 值类型引用类型 。在本教程中,我们将讨论原始(简单)数据类型,它是Value类型的子类。

参考类型将在以后的教程中介绍。但是,如果您想了解有关变量类型的更多信息,请访问C#类型和变量(官方C#文档)。

布尔值(布尔)

  • 布尔数据类型具有两个可能的值: truefalse
  • 默认值false
  • 布尔变量通常用于检查条件,例如if语句循环等。

例如:

using System;
namespace DataType
{
    class BooleanExample
    {
        public static void Main(string[] args)
        {
            bool isValid = true;
            Console.WriteLine(isValid);
        }
    }
}

当我们运行程序时,输出将是:

True

签名积分

这些数据类型保存整数值(正数和负数)。在所有可用位中,一位用于符号。

1.字节

  • 大小 :8位
  • 范围 -128至127。
  • 默认值 :0

例如:

using System;
namespace DataType
{
    class SByteExample
    {
        public static void Main(string[] args)
        {
            sbyte level = 23;
            Console.WriteLine(level);
        }
    }
}

当我们运行程序时,输出将是:

23

尝试分配超出范围的值,即小于-128或大于127,然后看看会发生什么。


2.简短

  • 大小 :16位
  • 范围 :-32,768至32,767
  • 默认值 :0

例如:

using System;
namespace DataType
{
    class ShortExample
    {
        public static void Main(string[] args)
        {
            short value = -1109;
            Console.WriteLine(value);
        }
    }
}

当我们运行程序时,输出将是:

-1109

3. int

  • 大小 :32位
  • 范围 :-231至231-1
  • 默认值 :0

例如:

using System;
namespace DataType
{
    class IntExample
    {
        public static void Main(string[] args)
        {
            int score = 51092;
            Console.WriteLine(score);
        }
    }
}

当我们运行程序时,输出将是:

51092

4.长

  • 大小 :64位
  • 范围 :-263至263-1
  • 默认值0L [L表示值是长型]

例如:

using System;
namespace DataType
{
    class LongExample
    {
        public static void Main(string[] args)
        {
            long range = -7091821871L;
            Console.WriteLine(range);
        }
    }
}

当我们运行程序时,输出将是:

-7091821871

无符号积分

这些数据类型仅保留等于或大于0的值。当我们确定不会有负值时,通常使用这些数据类型来存储值。

1.字节

  • 大小 :8位
  • 范围 :0至255。
  • 默认值 :0

例如:

using System;
namespace DataType
{
    class ByteExample
    {
        public static void Main(string[] args)
        {
            byte age = 62;
            Console.WriteLine(level);
        }
    }
}

当我们运行程序时,输出将是:

62

2. ushort

  • 大小 :16位
  • 范围 :0至65,535
  • 默认值 :0

例如:

using System;
namespace DataType
{
    class UShortExample
    {
        public static void Main(string[] args)
        {
            ushort value = 42019;
            Console.WriteLine(value);
        }
    }
}

当我们运行程序时,输出将是:

42019

3. uint

  • 大小 :32位
  • 范围 :0至232-1
  • 默认值 :0

例如:

using System;
namespace DataType
{
    class UIntExample
    {
        public static void Main(string[] args)
        {
            uint totalScore = 1151092;
            Console.WriteLine(totalScore);
        }
    }
}

当我们运行程序时,输出将是:

1151092

4.乌龙

  • 大小 :64位
  • 范围 :0至264-1
  • 默认值 :0

例如:

using System;
namespace DataType
{
    class ULongExample
    {
        public static void Main(string[] args)
        {
            ulong range = 17091821871L;
            Console.WriteLine(range);
        }
    }
}

当我们运行程序时,输出将是:

17091821871

浮点

这些数据类型保存浮点值,即包含十进制值的数字。例如12.36,-92.17等。

1.浮动

  • 单精度浮点型
  • 大小 :32位
  • 范围 :1.5×10−45至3.4×1038
  • 默认值 :0.0F [F表示值是浮点型]

例如:

using System;
namespace DataType
{
    class FloatExample
    {
        public static void Main(string[] args)
        {
            float number = 43.27F;
            Console.WriteLine(number);
        }
    }
}

当我们运行程序时,输出将是:

43.27

2.双

  • 双精度浮点类型。单精度和双精度浮点有什么区别?
  • 大小 :64位
  • 范围 :5.0×10−324至1.7×10308
  • 默认值 :0.0D [D表示值是双精度型]

例如:

using System;
namespace DataType
{
    class DoubleExample
    {
        public static void Main(string[] args)
        {
            double value = -11092.53D;
            Console.WriteLine(value);
        }
    }
}

当我们运行程序时,输出将是:

-11092.53

字符 (字符)

  • 它代表一个16位unicode 字符。
  • 大小 :16位
  • 默认值 :’\ 0′
  • 范围 :U + 0000(‘\ u0000’)至U + FFFF(‘\ uffff’)

例如:

using System;
namespace DataType
{
    class CharExample
    {
        public static void Main(string[] args)
        {
            char ch1 ='\u0042';
            char ch2 = 'x';
            Console.WriteLine(ch1);
            Console.WriteLine(ch2);
        }
    }
}

当我们运行程序时,输出将是:

B
x

unicode的值'B''\u0042' ,因此打印ch1将打印'B'


小数

  • 与浮点类型(双精度和浮点型)相比,十进制类型具有更高的精度和更小的范围。因此,它适合进行货币计算。
  • 大小 :128位
  • 默认值 :0.0M [M表示十进制类型的值]
  • 范围 :(-7.9 x 1028至7.9 x 1028)/(100至28)

例如:

using System;
namespace DataType
{
    class DecimalExample
    {
        public static void Main(string[] args)
        {
         decimal bankBalance = 53005.25M;
            Console.WriteLine(bankBalance);
        }
    }
}

当我们运行程序时,输出将是:

53005.25

必须在末尾添加后缀Mm ,否则该值将被视为双精度值,并会产生错误。


C# 字面量

让我们看下面的语句:

int number = 41;

这里,

  • int是一种数据类型
  • 数字是一个变量,
  • 41是字面量

字面量是程序中显示的固定值。他们不需要任何计算。例如, 5false'w'是直接在程序中显示的字面量 ,无需进行任何计算。


布尔字面量

  • true和false是可用的布尔字面量。
  • 它们用于初始化布尔变量。

例如:

bool isValid = true;
bool isPresent = false;

整数字面量

  • 整数字面量用于初始化整数数据类型的变量,即sbyteshortintlongbyteushortuintulong
  • 如果整数字面量以Ll结尾,则其类型为long。为了获得最佳实践,请使用L (不是l )。
    long value1 = 4200910L;
    long value2 = -10928190L;
  • 如果整数字面量以0x ,则表示十六进制值。没有前缀的数字将被视为十进制值。在C#中不允许使用八进制和二进制表示形式。
    int decimalValue = 25;
    int hexValue = 0x11c;// decimal value 284

浮点字面量

  • 浮点字面量用于初始化float和double数据类型的变量。
  • 如果浮点字面量的后缀为fF ,则其类型为float。同样,如果它以dD结尾,则其类型为double。如果两个后缀都不存在,则默认情况下其类型为double。
  • 这些字面量以科学计数法表示时包含e或E。
    double number = 24.67;// double by default
    float value = -12.29F;
    double scientificNotation = 6.21e2;// equivalent to 6.21 x 102 i.e. 621

字符和字符串字面量

  • 字符 字面量用于初始化char数据类型的变量。
  • 字符 字面量用单引号引起来。例如, 'x''p'等。
  • 它们可以表示为字符,十六进制转义序列,unicode表示或强制转换为char的整数值。
    char ch1 = 'R';// character
    char ch2 = '\x0072';// hexadecimal
    char ch3 = '\u0059';// unicode
    char ch4 = (char)107;// casted from integer
  • 字符串字面量是字符 字面量的集合。
  • 它们用双引号引起来。例如, “ Hello”“ Easy Programming”等。
    string firstName = "Richard";
    string lastName = " Feynman";
  • C#还支持转义序列字符,例如:
    Character Meaning
    \' Single quote
    \" Double quote
    \\ Backslash
    \n Newline
    \r Carriage return
    \t Horizontal Tab
    \a Alert
    \b Backspace