0
点赞
收藏
分享

微信扫一扫

C#基础_变量定义,字符运算

木樨点点 2022-02-28 阅读 75

说明:

1.C#是大小写敏感的。所有的语句表达式必须以分号(​;)​结尾。程序的执行以Main方法开始。

2.​在任何 C# 程序中的第一条语句都是:using  System;

3.​在 C# 程序中,​多行注释以 /* 开始,并以字符 */ 终止​,如下所示:

/* This program demonstrates
The basic syntax of C# programming
Language */
单行注释是用 '//' 符号表示。​例如:}//end class Rectangle

4.在 C# 中,类的命名必须遵循如下基本规则:

  • 标识符必须以字母、下划线或 @ 开头,后面可以跟一系列的字母、数字( 0 - 9 )、下划线( _ )、@。
  • 标识符中的第一个字符不能是数字。
  • 标识符必须不包含任何嵌入的空格或符号,比如 ? - +! # % ^ & * ( ) [ ] { } . ; : " ' / \。
  • 标识符不能是 C# 关键字。除非它们有一个 @ 前缀。 例如,@if 是有效的标识符,但 if 不是,因为 if 是关键字。
  • 标识符必须区分大小写。大写字母和小写字母被认为是不同的字母。
  • 不能与C#的类库名称相同。

5.​在C#中,变量分为以下几种类型:

  • 值类型(Value types)
  • 引用类型(Reference types):内置的 引用类型有:objectdynamic 和 string
  • 指针类型(Pointer types)

​6.当一个值类型转换为对象类型时,则被称为 装箱;另一方面,当一个对象类型转换为值类型时,则被称为 拆箱

object obj;
obj = 100; // 这是装箱

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

声明动态类型的语法:

dynamic <variable_name> = value;

例如:

dynamic d = 20;

动态类型与对象类型相似,但是对象类型变量的类型检查是在编译时发生的,而动态类型变量的类型检查是在运行时发生的。

8.​指针类型(Pointer types)

指针类型变量存储另一种类型的内存地址。C# 中的指针与 C 或 C++ 中的指针有相同的功能。
声明指针类型的语法:​type* identifier;

例如:
char* cptr;

int* iptr;

9.​C#类型转换方法:

​C# 提供了下列内置的类型转换方法:

序号

方法 & 描述

1

ToBoolean

如果可能的话,把类型转换为布尔型。

2

ToByte

把类型转换为字节类型。

3

ToChar

如果可能的话,把类型转换为单个 Unicode 字符类型。

4

ToDateTime

把类型(整数或字符串类型)转换为 日期-时间 结构。

5

ToDecimal

把浮点型或整数类型转换为十进制类型。

6

ToDouble

把类型转换为双精度浮点型。

7

ToInt16

把类型转换为 16 位整数类型。

8

ToInt32

把类型转换为 32 位整数类型。

9

ToInt64

把类型转换为 64 位整数类型。

10

ToSbyte

把类型转换为有符号字节类型。

11

ToSingle

把类型转换为小浮点数类型。

12

ToString

把类型转换为字符串类型。

13

ToType

把类型转换为指定类型。

14

ToUInt16

把类型转换为 16 位无符号整数类型。

15

ToUInt32

把类型转换为 32 位无符号整数类型。

16

ToUInt64

把类型转换为 64 位无符号整数类型。

下面的实例把不同值的类型转换为字符串类型:

namespace TypeConversionApplication

{

    class StringConversion

    {

        static void Main(string[] args)

        {

            int i = 75;

            float f = 53.005f;

            double d = 2345.7652;

            bool b = true;


            Console.WriteLine(i.ToString());

            Console.WriteLine(f.ToString());

            Console.WriteLine(d.ToString());

            Console.WriteLine(b.ToString());

            Console.ReadKey();


        }

    }

}

10.C# 中提供的基本的值类型大致可以分为以下几类:

类型

举例

整数类型

sbyte、byte、short、ushort、int、uint、long、ulong 和 char

浮点型

float 和 double

十进制类型

decimal

布尔类型

true 或 false 值,指定的值

空类型

可为空值的数据类型

11.​System命名空间中的 Console 类提供了一个函数 ReadLine(),用于接收来自用户的输入,并把它存储到一个变量中。

例如:

int num;
num = Convert.ToInt32(Console.ReadLine());

函数 Convert.ToInt32() 把用户输入的数据转换为 int 数据类型,因为 Console.ReadLine() 只接受字符串格式的数据。

 12.整数常量:

整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,没有前缀则表示十进制。

整数常量也可以有后缀,可以是 U 和 L 的组合,其中,U 和 L 分别表示 unsigned 和 long。后缀可以是大写或者小写,多个后缀以任意顺序进行组合。

这里有一些整数常量的实例:

212         /* 合法 */215u        /* 合法 */0xFeeL      /* 合法 */078        
/* 非法:8 不是一个八进制数字 */032UU /* 非法:不能重复后缀 */

以下是各种类型的整数常量的实例:

85         /* 十进制 */0213       /* 八进制 */0x4b       /* 十六进制 */30     
/* int */30u /* 无符号 int */30l /* long */30ul /* 无符号 long */

13.字符常量

字符常量是括在单引号里,例如,'x',且可存储在一个简单的字符类型变量中。一个字符常量可以是一个普通字符(例如 'x')、一个转义序列(例如 '\t')或者一个通用字符(例如 '\u02C0')。

在 C# 中有一些特定的字符,当它们的前面带有反斜杠时有特殊的意义,可用于表示换行符(\n)或制表符 tab(\t)。在这里,列出一些转义序列码:

转义序列

含义

\\

\ 字符

\'

' 字符

\"

" 字符

\?

? 字符

\a

Alert 或 bell

\b

退格键(Backspace)

\f

换页符(Form feed)

\n

换行符(Newline)

\r

回车

\t

水平制表符 tab

\v

垂直制表符 tab

\ooo

一到三位的八进制数

\xhh . . .

一个或多个数字的十六进制数

以下是一些转义序列字符的实例:

namespace EscapeChar{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello\tWorld\n\n");
Console.ReadLine();
}
}}

当上面的代码被编译和执行时,它会产生下列结果:

Hello   World

14.字符串常量:

​字符串常量是括在双引号 "" 里,或者是括在 @"" 里。字符串常量包含的字符与字符常量相似,可以是:普通字符、转义序列和通用字符

使用字符串常量时,可以把一个很长的行拆成多个行,可以使用空格分隔各个部分。

这里是一些字符串常量的实例。下面所列的各种形式表示相同的字符串。

string a = "hello, world";                  // hello, world
string b = @"hello, world"; // hello, world
string c = "hello \t world"; // hello world
string d = @"hello \t world"; // hello \t world
string e = "Joe said \"Hello\" to me"; // Joe said "Hello" to me
string f = @"Joe said ""Hello"" to me"; // Joe said "Hello" to me
string g = "\\\\server\\share\\file.txt"; // \\server\share\file.txt
string h = @"\\server\share\file.txt"; // \\server\share\file.txt
string i = "one\r\ntwo\r\nthree";string j = @"one
two
three";

15.定义常量:

常量是使用 const 关键字来定义的 。定义一个常量的语法如下:

const <data_type> <constant_name> = value;
下面的代码演示了如何在程序中定义和使用常量:
实例
using System;
public class​ ConstTest{
class SampleClass
{
public int x;
public int y;
public​ const​ int c1 = 5;
public ​const​ int c2 = c1 + 5;
public ​SampleClass(int p1, int p2) {
x = p1;
y = p2;
}
}
static void Main()
{
SampleClass mC = new SampleClass(11, 22);
Console.WriteLine("x = {0}, y = {1}", mC.x, mC.y);
Console.WriteLine("c1 = {0}, c2 = {1}",
SampleClass.c1, SampleClass.c2);
}
}
当上面的代码被编译和执行时,它会产生下列结果:
x = 11, y = 22
c1 = 5, c2 = 10

16.C#自加自减运算说明:

  • c = a++: 先将 a 赋值给 c,再对 a 进行自增运算。
  • c = ++a: 先将 a 进行自增运算,再将 a 赋值给 c 。
  • c = a--: 先将 a 赋值给 c,再对 a 进行自减运算。
  • c = --a: 先将 a 进行自减运算,再将 a 赋值给 c 

17.关系运算符:

​下表显示了 C# 支持的所有关系运算符。假设变量 A 的值为 10,变量 B 的值为 20,则:

运算符

描述

实例

==

检查两个操作数的值是否相等,如果相等则条件为真。

(A == B) 不为真。

!=

检查两个操作数的值是否相等,如果不相等则条件为真。

(A != B) 为真。

>

检查左操作数的值是否大于右操作数的值,如果是则条件为真。

(A > B) 不为真。

<

检查左操作数的值是否小于右操作数的值,如果是则条件为真。

(A < B) 为真。

>=

检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。

(A >= B) 不为真。

<=

检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。

(A <= B) 为真。

18.逻辑运算符:

​下表显示了 C# 支持的所有逻辑运算符。假设变量 A 为布尔值 true,变量 B 为布尔值 false,则:

运算符

描述

实例

&&

称为逻辑与运算符。如果两个操作数都非零,则条件为真。

(A && B) 为假。

||

称为逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。

(A || B) 为真。

!

称为逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。

!(A && B) 为真。

19.位运算符:

​位运算符作用于位,并逐位执行操作。&、 | 和 ^ 的真值表如下所示:

p

q

p & q

p | q

p ^ q

0

0

0

0

0

0

1

0

1

1

1

1

1

1

0

1

0

0

1

1

假设如果 A = 60,且 B = 13,现在以二进制格式表示,它们如下所示:

A = 0011 1100

B = 0000 1101

-----------------

A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

~A  = 1100 0011

下表列出了 C# 支持的位运算符。假设变量 A 的值为 60,变量 B 的值为 13,则:

运算符

描述

实例

&

如果同时存在于两个操作数中,二进制 AND 运算符复制一位到结果中。

(A & B) 将得到 12,即为 0000 1100

|

如果存在于任一操作数中,二进制 OR 运算符复制一位到结果中。

(A | B) 将得到 61,即为 0011 1101

^

如果存在于其中一个操作数中但不同时存在于两个操作数中,二进制异或运算符复制一位到结果中。

(A ^ B) 将得到 49,即为 0011 0001

~

按位取反运算符是一元运算符,具有"翻转"位效果,即0变成1,1变成0,包括符号位。

(~A ) 将得到 -61,即为 1100 0011,一个有符号二进制数的补码形式。

<<

二进制左移运算符。左操作数的值向左移动右操作数指定的位数。

A << 2 将得到 240,即为 1111 0000

>>

二进制右移运算符。左操作数的值向右移动右操作数指定的位数。

A >> 2 将得到 15,即为 0000 1111

实例

请看下面的实例,了解 C# 中所有可用的位运算符:

​实例​

using System;

namespace OperatorsAppl

{

    class Program

    {

        static void Main(string[] args)

        {

            int a = 60;            /* 60 = 0011 1100 */  

            int b = 13;            /* 13 = 0000 1101 */

            int c = 0;          


             c = a & b;           /* 12 = 0000 1100 */

             Console.WriteLine("Line 1 - c 的值是 {0}", c );


             c = a | b;           /* 61 = 0011 1101 */

             Console.WriteLine("Line 2 - c 的值是 {0}", c);


             c = a ^ b;           /* 49 = 0011 0001 */

             Console.WriteLine("Line 3 - c 的值是 {0}", c);


             c = ~a;               /*-61 = 1100 0011 */

             Console.WriteLine("Line 4 - c 的值是 {0}", c);


             c = a << 2;     /* 240 = 1111 0000 */

             Console.WriteLine("Line 5 - c 的值是 {0}", c);


             c = a >> 2;     /* 15 = 0000 1111 */

             Console.WriteLine("Line 6 - c 的值是 {0}", c);

            Console.ReadLine();

        }

    }

}

当上面的代码被编译和执行时,它会产生下列结果:

Line 1 - c 的值是 12
Line 2 - c 的值是 6
1Line 3 - c 的值是 49
Line 4 - c 的值是 -61
Line 5 - c 的值是 240
Line 6 - c 的值是 15

20.赋值运算符:

​下表列出了 C# 支持的赋值运算符:

运算符

描述

实例

=

简单的赋值运算符,把右边操作数的值赋给左边操作数

C = A + B 将把 A + B 的值赋给 C

+=

加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数

C += A 相当于 C = C + A

-=

减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数

C -= A 相当于 C = C - A

*=

乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数

C *= A 相当于 C = C * A

/=

除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数

C /= A 相当于 C = C / A

%=

求模且赋值运算符,求两个操作数的模赋值给左边操作数

C %= A 相当于 C = C % A

<<=

左移且赋值运算符

C <<= 2 等同于 C = C << 2

>>=

右移且赋值运算符

C >>= 2 等同于 C = C >> 2

&=

按位与且赋值运算符

C &= 2 等同于 C = C & 2

^=

按位异或且赋值运算符

C ^= 2 等同于 C = C ^ 2

|=

按位或且赋值运算符

C |= 2 等同于 C = C | 2

实例

请看下面的实例,了解 C# 中所有可用的赋值运算符:

using System;

namespace OperatorsAppl

{

    class Program

    {

        static void Main(string[] args)

        {

            int a = 21;

            int c​;

            ​ c = a;

            Console.WriteLine("Line 1 - =  c 的值 = {0}", c);


            c += a;

            Console.WriteLine("Line 2 - += c 的值 = {0}", c);


            c -= a;

            Console.WriteLine("Line 3 - -=  c 的值 = {0}", c);


            c *= a;

            Console.WriteLine("Line 4 - *=  c 的值 = {0}", c);


            c /= a;

            Console.WriteLine("Line 5 - /=  c 的值 = {0}", c);


            c = 200;

            c %= a;

            Console.WriteLine("Line 6 - %=  c 的值 = {0}", c);


            c <<= 2;

            Console.WriteLine("Line 7 - <<=  c 的值 = {0}", c);


            c >>= 2;

            Console.WriteLine("Line 8 - >>=  c 的值 = {0}", c);


            c &= 2;

            Console.WriteLine("Line 9 - &=  c 的值 = {0}", c);


            c ^= 2;

            Console.WriteLine("Line 10 - ^=  c 的值 = {0}", c);


            c |= 2;

            Console.WriteLine("Line 11 - |=  c 的值 = {0}", c);

            Console.ReadLine();

        }

    }

}

当上面的代码被编译和执行时,它会产生下列结果:

Line 1 - =     c 的值 = 21
Line 2 - += c 的值 = 42
Line 3 - -= c 的值 = 21Line 4 - *= c 的值 = 441
Line 5 - /= c 的值 = 21Line 6 - %= c 的值 = 11
Line 7 - <<= c 的值 = 44Line 8 - >>= c 的值 = 11
Line 9 - &= c 的值 = 2Line 10 - ^= c 的值 = 0
Line 11 - |= c 的值 = 2

21.C#其它运算符:

​下表列出了 C# 支持的其他一些重要的运算符,包括 sizeof、typeof 和 ? :。

运算符

描述

实例

sizeof()

返回数据类型的大小。

sizeof(int),将返回 4.

typeof()

返回 class 的类型。

typeof(StreamReader);

&

返回变量的地址。

&a; 将得到变量的实际地址。

*

变量的指针。

*a; 将指向一个变量。

? :

条件表达式

如果条件为真 ? 则为 X : 否则为 Y

is

判断对象是否为某一类型。

If( Ford is Car) // 检查 Ford 是否是 Car 类的一个对象。

as

强制转换,即使转换失败也不会抛出异常。

Object obj = new StringReader("Hello");

StringReader r = obj as StringReader;

22.C#中的运算符优先级:

下表将按运算符优先级从高到低列出各个运算符,具有较高优先级的运算符出现在表格的上面,具有较低优先级的运算符出现在表格的下面。在表达式中,较高优先级的运算符会优先被计算。

类别 

运算符 

结合性 

后缀 

() [] -> . ++ - -  

从左到右 

一元 

+ - ! ~ ++ - - (type)* & sizeof 

从右到左 

乘除 

* / % 

从左到右 

加减 

+ - 

从左到右 

移位 

<< >> 

从左到右 

关系 

< <= > >= 

从左到右 

相等 

== != 

从左到右 

位与 AND 

从左到右 

位异或 XOR 

从左到右 

位或 OR 

从左到右 

逻辑与 AND 

&& 

从左到右 

逻辑或 OR 

|| 

从左到右 

条件 

?: 

从右到左 

赋值 

= += -= *= /= %=>>= <<= &= ^= |= 

从右到左 

逗号 

从左到右 





























































举报

相关推荐

0 条评论