書《Learning hard C#學習筆記》 第3章 C#語言基礎

關於書籍《Learning hard C#學習筆記》,結合着菜鳥教程中的C#教程看,效果顯著!

菜鳥教程是一個學習網站,鏈接:https://www.runoob.com/csharp/csharp-struct.html

3 C#言基

3.1 標識和關

3.1.1 標識

3.1.2

C#共102個關鍵字,如表3-1所示。

表3-1 C#的102個關鍵字

abstract

as

base

bool

break

byte

case

catch

char

checked

class

const

continue

decimal

default

delegate

do

double

else

enum

event

explict

extern

false

finally

fixed

float

for

foreach

goto

if

implicit

in

int

interface

internal

is

lock

long

namespace

new

null

object

operator

out

override

params

private

protected

public

readonly

ref

return

sbyte

sealed

short

sizeof

stackalloc

static

string

struct

switch

this

throw

true

try

typeof

uint

ulong

unchecked

unsafe

ushort

using

virtual

void

volatile

while

add

alias

ascending

async

await

descending

dynamic

from

get

global

group

into

join

let

orderby

partial

remove

select

set

value

var

where

yield

 

 

 

 

 

 

3.2 數據類型

公共語言運行時(CLR)包括通用類型系統(CTS)和公共語言規範(CLS)兩部分。

通用類型系統又把類型分爲兩大類:值類型和引用類型。

C# 是基於 .NET 框架的語言,它定義了自己的數據類型,包括:數值類型、布爾類型、字符串類型、枚舉類型、結構體類型和數組類型。

 

3.2.1 類型

分爲 整型、浮點型和十進制型 3種。

 

 

3.2.2 布爾類型

存儲布爾值true和false。

 

3.2.3 字符串類型

string(字符串)類型是System.String的別名,表示由零個或多個Unicode字符組成的不可變序列。可使用 “ []” 運算符訪問string中的每個字符。

 

string類型爲引用類型,string變量本身存儲在棧裏,而變量所指向存儲託管堆裏。

 

 

3.2.4 枚舉類型

屬於值類型,用於聲明一組命名了的常數。

    enum Gender

    {

         female ,

         male,

         num

    }

3.2.5 結構體類型

是一種值類型,通常適用於表示諸如Point、Rectangle和Color等的輕量級對象。

C#結構體的特點,參考: https://www.runoob.com/csharp/csharp-struct.html

 

3.2.6 數組類型

是一種引用類型,它代表了相同元素的集合。

聲明和初始化,語法:type[] array = new type[arrayCount];

 

3.3 變量和常量

3.3.1 變量的使用

數據類型 變量名

 

3.3.2 變量的作用域

變量的作用域指變量的使用範圍,超出作用域後不能再對變量進行讀取和賦值等操作

string[] array = new string[6] { "Hi", ",", " we", " are", " friends", " !" };

//str的作用域

foreach (string str in array)//臨時變str foreach()體內可可寫,在循體外不可被使用

{

      Console.Write(str);

}

Console.WriteLine();

Console.ReadKey();

 

3.3.3 常量

常量一旦被初始化就不能再次改變,C#中使用 const關鍵字進行定義,

語法:const 數據類型 常量名 = 與數據類型相對應的值;

注意點:

(1)因後續無法修改,所以必須在聲明時就初始化;

(2)常量無法接受變量的賦值,即使變量是readonly(只讀)也不可以;

(3)常量默認是靜態的,不允許顯式使用static關鍵字聲明;

 

3.4 運算符和表達式

3.4.1 運算符

在C#中,運算符是用於操作一個或多個操作數的程序元素。接受一個操作數的運算符稱爲一元運算符,如 ++ --;二元運算符,如 + - * /;C#中唯一的三元運算符,? :  。

 

3.4.2 運算符優先級

只有三個優先級是從右至左結合的,一元、條件、賦值運算符。

 

3.4.3 運算符重載

運算符重載只能用於結構或類中,用關鍵字 operator 對運算符進行聲明。

對於一元運算符,其重載方法需要帶一個類或結構類型的變量作參數;而二元運算符重載則需要兩個。

語法: public static 自定義結構體或類 operator 重載的運算符(類型1,類型2);

注意: 所有運算符重載的方法都是static的、public的; 並不是所有運算符都可以重載

例子:

(1)VS2015 新建一個class,名叫 Complex.cs,寫如下代碼:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace LanguageFoundation

{

    //複數

    class Complex

    {

        private int _real;//複數的數部分

        private int _imag;//複數的虛數部分

 

        public int real //字段

        {

            get { return _real; }

            set { _real = value; }  

        }

 

        public int imag

        {

            get { return _imag; }

            set { _imag = value; }

        }

        public Complex()//空構造函數

        { }

 

        public Complex(int tmp1, int tmp2)//自定構造函數

        {

            this.real = tmp1;

            this.imag = tmp2;

        }

 

        public static Complex operator +(Complex num1, Complex num2)// + 號的重

        {

            Complex re = new Complex();

 

            re.real = num1.real + num2.real;

            re.imag = num1.imag + num2.imag;

 

            return re;

        }

 

        public override string ToString()//ToString()函數的重寫 影響範圍僅在本例中 不會影響正常的 ToString()發揮作用

        {

            return string.Format("{0},{1}i", real, imag);

        }

    }

}

 

(2) 在默認的Program.cs中寫如下代碼:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace LanguageFoundation

{

    class Program

    {

        static void Main(string[] args)

{

            //4 運算符重

            Complex num1 = new Complex(1, 2);

            Complex num2 = new Complex(3, 4);

            Complex re = num1 + num2;

            Console.WriteLine("Complex num1 = " + num1.ToString());

            Console.WriteLine("Complex num2 = " + num2.ToString());

            Console.WriteLine("overloading +  :  num1 + num2 = " + re.ToString());

 

            Console.ReadKey();

        }

    }

}

 

 

                                                                                                                                                                                              

如何理解:static可修飾類、字段、屬性、方法

參考鏈接:https://blog.csdn.net/nineleafclover/article/details/77964611

static在使用的時候分三種方法。

1.修飾類的時候:

    將修飾爲靜態的,意味着這個類不能實例化對象,在調用類裏面的任何內容的時候直接用類名加點的形式調用其中的方法或者字段(類名.方法/類名.字段)

2.修飾方法或者屬性的時候:

    將方法修飾爲靜態方法,表示此方法爲所在的類所有,而不是這個類實例化的對象所擁有,這個方法在調用的時候需要類名加點(類名.方法)來調用。

3.修飾變量:

    表示在每次調用該變量的方法或者類的時候,變量的值最後一次賦值時的,而不是再次初始化它的值。

                                                                                                                                                                                              

 

 

3.4.4 表達式

 

3.5 C#中的語句

C#語句包含:聲明語句、條件語句循環語句、跳轉語句 和 異常語句等;

 

3.5.1 條件語句

if 、 switch

 

3.5.2 循環語句

while、do…while

for、foreach

foreach語句用於遍歷數組或對象集合中的元素。但是並非所有的數組或對象集合都能使用foreach語句進行遍歷,只有那些實現了System.Collections.IEnumerable和System.Collections.Generic.Ienumerable<T>接口的數組或對象集合纔可以使用foreach語句。

 

3.5.3 跳轉語句

break:直接退出整個循環

continue:立即終止本次循環,繼續進行循環體中的下一次循環

goto:跳出循環到已標記好的位置(不推薦使用)

return:退出循環和循環所在的函數

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章