C#語法文字字面量

大學霸發表於2017-10-10

C#語法文字字面量

在日常生活中,文字用來表示除了數字以外的內容。例如有一個叫“比爾”的人,他的職位為“科長”。那麼,“比爾”和“科長”都可以稱為文字。在計算機裡,現實世界中的文字通常被稱為字元和字串。例如,“比爾”中的每個漢字都是一個字元。而整體構成一個字串。“科長”也是如此。

字元和字串的寫作規範

上面,我們看到的是常見的文字字面量。但是,很多時候數字內容表達的並不一定是數值。例如,比爾的電話號碼是13466668888。對於“13466668888”來說,我們不會理解為一百三十四億六千六百六十六萬八千八百八十八,而是當成一個電話號來理解。由於計算機能力有限,為了避免這類資訊對計算機造成困擾,程式對字元和字串的表示有以下規定:


  • 字元是由單引號(')括起來的單個的字母、數字、字或者符號。
  • 字串可以表示一個字元序列。
  • 字串使用一對雙引號(")與多個字元組合。
  • 字串的雙引號中可以有任意多個字元。


根據這個規範,如果要在程式中表示字母a,需要寫為'a'。字元中只能包含一個字元,因此字元'a'長度為1。如果要在程式中表示比爾的電話號碼,必須寫為"13466668888"。該字串的長度為11,因為包含的字元個數為11,而雙引號是字串格式符號,不能算作字串長度數。

特殊的字元和字串——跳脫字元

有時候,需要在字串中使用特殊字元,例如字串abc"s。在程式碼中字串"abc"s"會產生錯誤,編譯器無法辨認字串的具體內容。為了解決這個問題,需要使用跳脫字元。跳脫字元透過反斜槓“\”與普通字元的組合,來表示一些特殊的字元。跳脫字元中至少包含兩個字元,第一個字元是轉義符號“\”,第二個字元是需要表示的字元。常用的跳脫字元有兩種:表示格式的跳脫字元和表示控制程式碼的跳脫字元。

1.表示格式

為了構成字元和字串,使用了雙引號(")和單引號(')。而為了構成跳脫字元,又使用了反斜槓(\)。如果字串中需要包含這三個字元,需要使用跳脫字元如表1.1所示。

1.1  表示格式的跳脫字元列表

轉義序列

產生的字元

\'

單引號

\"

雙引號

\\

反斜槓

【示例1-4】有下列文字內容,需要在程式中使用字串表示。

I love C#.

I’m studying C#.

在這個文字內容中,第一行內容表達為字串為"I love C#.",該字串長度為10(空格與.都算作一個字元)。而第二行內容中有一個單引號,所以需要使用跳脫字元表達為"I\'m studying C#.",該字串長度為16

2.表示控制程式碼

在文字資料中,會出現一些特殊的符號,如換行符、退格等。這些符號無法看到,但是用來控制文字的格式。這類字元由於無法書寫,所以必須使用跳脫字元表示如表1.2所示。

1.2  表示控制程式碼的跳脫字元序列

轉義序列

產生的字元

\a

警報

\b

退格

\f

換頁符

\n

換行符

\r

回車

\t

水平製表符

\v

垂直製表符

示例1-4中由於兩個文字內容不在同一行,所以之間必須有“\n”來表示換行。因此,這兩個文字的正確表示形式為"I love C#.\n I\'m studying C#."。這個字串的長度為27

更全面的表達方式——ASCII

跳脫字元可以解決大部分的字元表達。但是還是有很多字元無法直接書寫,也沒有對應的跳脫字元。這個時候,只能使用ASCII進行表達。ASCII是基於拉丁字母(26個英語字母)的一套電腦編碼系統,是現在最通用的單位元組編碼系統。使用ASCII表示字元的格式如表1.3所示。

1.3  使用ASCII表示的字元

轉義序列

產生的字元

\0

空字元

\ddd

1~3位八進位制數所代表的任意字元

\xhh

1~2位十六進位制數所代表的任意字元

在表1.3中,使用八進位制表示字元時可以表示1~3位八進位制數代表的任意字元,即該類跳脫字元總長度為2~4。使用十六進位制表示字元時可以表示1~2位十六進位制數代表的任意字元,即該類跳脫字元總長度為3~4,因為表示十六進位制數時“\x”以開頭。

【示例1-5】以下程式碼中使用了跳脫字元:

'\x2f'

'\013'

其中,\x表示後面的字元是十六進位制數,\0表示後面的字元是八進位制數。

為了更加全面地表示,這裡給出了ASCII表的字元的0~127。具體如表1.4所示。

1.4  ASCII

十進位制

十六進位制

字元

十進位制

十六進位制

字元

十進位制

十六進位制

字元

十進位制

十六進位制

字元

0

00

 

32

20

[空格]

64

40

@

96

60

`

1

01

 

33

21

!

65

41

A

97

61

a

2

02

 

34

22

"

66

42

B

98

62

b

3

03

 

35

23

#

67

43

C

99

63

c

4

04

 

36

24

$

68

44

D

100

64

d

5

05

 

37

25

%

69

45

E

101

65

e

6

06

 

38

26

&

70

46

F

102

66

f

7

07

 

39

27

'

71

47

G

103

67

g

8

08

\b

40

28

(

72

48

H

104

68

h

9

09

\t

41

29

)

73

49

I

105

69

i

10

0A

\r

42

2A

*

74

4A

J

106

6A

j

11

0B

 

43

2B

+

75

4B

K

107

6B

k

12

0C

 

44

2C

,

76

4C

L

108

6C

l

13

0D

\n

45

2D

-

77

4D

M

109

6D

m

14

0E

 

46

2E

.

78

4E

N

110

6E

n

15

0F

?

47

2F

/

79

4F

O

111

6F

o

16

10

?

48

30

0

80

50

P

112

70

p

17

11

?

49

31

1

81

51

Q

113

71

q

18

12

?

50

32

2

82

52

R

114

72

r

19

13

51

33

3

83

53

S

115

73

s

20

14

52

34

4

84

54

T

116

74

t

21

15

53

35

5

85

55

U

117

75

u

22

16

?

54

36

6

86

56

V

118

76

v

23

17

?

55

37

7

87

57

W

119

77

w

24

18

?

56

38

8

88

58

X

120

78

x

25

19

?

57

39

9

89

59

Y

121

79

y

26

1A

?

58

3A

:

90

5A

Z

122

7A

z

27

1B

59

3B

;

91

5B

[

123

7B

{

28

1C

?

60

3C

< 

92

5C

\

124

7C

|

29

1D

?

61

3D

=

93

5D

]

125

7D

}

30

1E

-

62

3E

> 

94

5E

^

126

7E

~

31

1F

 

63

3F

?

95

5F

_

127

7F

?

1.4中很多字元都是無法顯示的,所以以空白顯示。在編碼中,可以透過反斜槓“\”與ASCII字元的十六進位制數結合的方式使用字元。例如,“\n”與“\0D”起到的作用是一致的。但是大多數字符可以直接輸出,不需要使用此種方式。

避免跳脫字元——@

在程式設計中,有時候字元的組合恰巧與跳脫字元相同,此時就需要使該組合中的跳脫字元失效。C#中有一個特殊的字元 @”,該字元的作用是宣告原義字串,忽略跳脫字元的作用。

【示例1-6】假如想要表示一個地址“c:\temp”。當我們在程式碼中輸出“c:\temp”時,顯示結果如下:

c:        emp

為什麼會顯示這樣的一個結果呢?因為在“c:\temp”中,字串中的“\t”被計算機識別成了跳脫字元,因此起的作用是水平製表符。在這種情況下,可以使用跳脫字元“\\”將反斜槓輸出,讓該字串表示一個地址,表示方式為:

"c:\\temp"

這樣的表示方式可以暫時解決眼前的簡單的地址。但是,如果想要表示的地址很長很複雜,裡面包含多個反斜槓時,這種書寫方式就會非常繁瑣。例如,需要表示的地址為“c:\temp\1\t\3\a\5”時,使用這種方式表示出來為:

"c:\\temp\\1\\t\\3\\a\\5"

上述這種表示方式非常繁瑣,容易書寫錯誤。因此,可以使用特殊符號@來遮蔽跳脫字元的作用。當我們想表示地址“c:\temp\1\t\3\a\5”時,只需要在地址前面加上特殊字元@即可,表示方式如下:

@"c:\temp\1\t\3\a\5"

字串長度

上面我們學習了字元、字串、跳脫字元等,接著我們來了解它們各自的字元長度。各種字元和字串的型別、示例、長度及輸出結果具體如表1.5所示:

1.5  字串長度

型別

字元/字串示例

長度

實際含義

普通字元

'a'

1

a

普通字串

"abc"

3

abc

帶單引號的字串

"ab\'c"

4

ab'c

帶控制程式碼的字串

"ab\nc"

4

ab

c

ASCII表示的字串

"ab\x22"

3

ab"

使用@的字串

@"ab\x22"

6

ab\x22

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29597077/viewspace-2145799/,如需轉載,請註明出處,否則將追究法律責任。

相關文章