【入門級】-[資料型態]-修飾詞

更新於 發佈於 閱讀時間約 7 分鐘

由於我們在寫程式時,會去宣告一些變數、常數相關識別詞,並且在class(類別)中會寫一些事情或動作讓程式去運行,然而這個概念就是去定義對於我們所寫的內容,「可以在哪些範圍去做存取用途。」,在開始介紹前先介紹一個小小程式結構概念

raw-image



一、存取修飾詞


這個是在同一專案下,對於namespace(命名空間)、class(類別)、field(欄位)、Method(方法)去做範圍存取的定義,修飾詞內容如下圖:

raw-image


對於protected、internal、protected internal部分使用狀況可能會比較難懂,這邊用圖來表示或許會好懂一些。

raw-image
raw-image
raw-image

以上就是存取修飾詞的介紹。

那麼再看一下最上面那個程式結構的例子,大家有注意到嗎!Field(欄位)那邊的宣告,有的沒有加入存取修飾詞,那這樣它存取使用會是在哪兒呢?倘若說有些沒有加入修飾詞的話,在C#中它會有預設修飾詞,如下所示:

在namespace(命名空間) → 預設修飾詞為 public
在Class(類別)      →預設修飾詞為internal
在Field(欄位)宣告     →預設修飾詞為privated


另外還有一個static也是一個修飾詞,有時候會出現

Public static...
Private static...
Static...

這樣的形式,這是用來宣告靜態成員的部分。


二、參數修飾詞

raw-image

很常在撰寫程式時多多少少都會用到傳遞參數的部分,像最上面那個例子

private void talk(ref int dogNum,ref string DogName)
{
...
}

這邊使用的是ref可以將變數名稱的值帶進來,那麼參數out可以把值帶出去,但是要先給予值。


對於傳遞參數部分有三種方法

1. Call By Value(傳值呼叫):

傳遞方會將實際參數複製一份給接收方,複製那份參數就稱為虛擬參數,實際參數和虛擬參數各佔據不同的記憶體位置。Ex:

Private void main()
{
  string DogName = ”吉利”;
  string B = talk(DogName);
  string C = DogName;
}

private void talk(string dogName)
{
  string A = dogName;
  dogName = ”湯姆”;
  return dogName;
}

此時,就可以將GogName的值直接傳進talk方法中,再經過talk方法中的事情後,return回去就又將改變過的值傳回main()裡

A、B、C的結果值分別為:
A:吉利
B:湯姆
C:吉利

說明:
(1) 從main()開始執行,先給予DogName=”吉利”這樣的值後,再執行下一行,什麼樣的值要傳給B呢?

(2) 就跑進talk方法來看,此時會將DogName的值傳進talk方法內。

(3) 那麼我們就看到talk方法,開始執行第一行,A所得到的值就會是「吉利」

(4) 繼續再到下一行,修改dogName的值為「湯姆」後,最後再return回去

(5) 再回到main()中,得知talk(DogName)的結果為「湯姆」,因此B的值就為「湯姆」

(6) 那麼由於此方法是傳值呼叫,因此會佔據不同的記憶體位置,故C的值為「吉利」


2. Call By Reference(參考呼叫):

是傳遞參數記憶體的位置給接收方,由於是同一個記憶體位置,所以變動的會是同一個記憶體位置的值,彼此就會互相影響。Ex:

Private void main()
{
  string DogName = ”吉利”;
  string B = talk(ref DogName);
  string C = DogName;
}

private void talk(ref string dogName)
{
  string A = dogName;
  dogName = ”湯姆”;
  return dogName;
}

此時,就可以將DogName的值直接傳進talk方法中,再經過talk方法中的事情後,return回去就又將改變過的值傳回main()裡。跟上一個差別是它是使用同一個記憶體位置,因此會覆蓋過去。

A、B、C的結果值分別為:
A:吉利
B:湯姆
C:湯姆


3. Output parameter(傳出參數):

實際參數和虛擬參數都是佔用相同記憶體位置,Ex:

Private void main()
{
  string DogName;
  string DogLike;
  string B = talk(out DogName,out DogLike);
  string C = DogName;
  string D = DogLike;
}

private void talk(out string dogName,out string dogLike)
{
  dogName = ”吉利”;
  dogLike = ”骨頭”;
  string msg = dogName + ”愛吃” + dogLike ;
  return msg;
}

此時,在main()中可以不用先設定值,直到進入talk方法中時,再給予值即可,再talk經過一系列過程後,除了可以把參數中的值給帶出去外,還可以把return的值也一併帶出去

B、C、D的結果值分別為:
B:吉利愛吃骨頭
C:吉利
D:骨頭

說明:
(1) 從main()開始執行,先宣告DogName、DogLike,此時可以不用先設定值,接著進入下一行傳什麼值給B呢?

(2) 就進入talk方法來看,這邊有給予dogName、dogLike的值,接著下一行這邊是將字串做串接後再賦予msg值。

(3) 將msg 值return回去

(4) 再看回main()中,此時B接收到的就會是msg的值也就是「吉利愛吃骨頭」,那麼dogName、dogLike的值也會一併傳回去喔!

(5) 接著往下看C、D輸出的值就是C是「吉利」D是「骨頭」

參考內容:

1.C# 存取修飾詞
2.C#初探-類別(Class)、欄位(Filed)、方法(Method)(1)
3.Day24-C#-參數的傳遞方式-Call By Value/Call By Reference/Output parameter
4.C#雜記 — 參數修飾詞 in、out、ref

留言
avatar-img
留言分享你的想法!
avatar-img
橙果杏的沙龍
25會員
43內容數
Hello~ Welcome to my blog~❤ 這邊會分享我在程式這條道路中的學習與成長, 過程中從而了解自己的不足,再學習。 希望透過分享的方式, 也讓正在學習程式的夥伴們一起學習, 我們一起加油吧~ 「彼此都會成為彼此之間的影響力」(´,,•ω•,,)♡ ❣
橙果杏的沙龍的其他內容
2024/07/30
一、什麼是WinSocket? 也就是大家常說的WinSock全名為Windows Sockets API (WSA),它會透過TCP/IP通訊協定來做網路的通訊,會用在Windows操作系統上來開發網路應用的API(應用程式介面)   二、WinSocket用在哪裡?   Socket可以
Thumbnail
2024/07/30
一、什麼是WinSocket? 也就是大家常說的WinSock全名為Windows Sockets API (WSA),它會透過TCP/IP通訊協定來做網路的通訊,會用在Windows操作系統上來開發網路應用的API(應用程式介面)   二、WinSocket用在哪裡?   Socket可以
Thumbnail
2024/06/29
當我們架好站、WebService測試完,接著就是測試區域網路連線啦~
Thumbnail
2024/06/29
當我們架好站、WebService測試完,接著就是測試區域網路連線啦~
Thumbnail
2024/06/20
前面已經安裝好IIS後,並且也新建站台了,那麼接下來這篇就會分享如何使用它
Thumbnail
2024/06/20
前面已經安裝好IIS後,並且也新建站台了,那麼接下來這篇就會分享如何使用它
Thumbnail
看更多
你可能也想看
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
,先來分享一下封裝是怎麼一回事。 一、封裝(Encapsulation) 封裝就是把一些功能的處理程序或是資料包起來,也對於程式碼做權限的設定做一層保護的機制,這是為了防止程式碼被竄改,所以有了封裝可以保障我們資料的隱密性,甚至封裝也是一種將一些處理程序隱藏起來,讓使用者使用時可以更加單純。 1.什
Thumbnail
,先來分享一下封裝是怎麼一回事。 一、封裝(Encapsulation) 封裝就是把一些功能的處理程序或是資料包起來,也對於程式碼做權限的設定做一層保護的機制,這是為了防止程式碼被竄改,所以有了封裝可以保障我們資料的隱密性,甚至封裝也是一種將一些處理程序隱藏起來,讓使用者使用時可以更加單純。 1.什
Thumbnail
一、存取修飾詞public / private / protected / internal 二、參數修飾詞ref / in / out >>>>>由於我們在寫程式時,會去宣告一些變數、常數相關識別詞,並且在class(類別)中會寫一些事情或動作讓程式去運行,然而這個概念就是去定義對於我們所寫的內容
Thumbnail
一、存取修飾詞public / private / protected / internal 二、參數修飾詞ref / in / out >>>>>由於我們在寫程式時,會去宣告一些變數、常數相關識別詞,並且在class(類別)中會寫一些事情或動作讓程式去運行,然而這個概念就是去定義對於我們所寫的內容
Thumbnail
這次分享資料形態中的資料型別部分,在VC#流程架構介紹中有提到它如同中文有不同的詞性,那C#程式中有哪些型別呢?我們就來看一看。 一、常用的資料型別 當然還有自訂義的型別這就要看怎麼定義了,之後看內容狀況再來提,那麼資料型態是為了要做宣告用途,告訴電腦你的資料是屬於什麼類別的,這樣在做後續資料時程式
Thumbnail
這次分享資料形態中的資料型別部分,在VC#流程架構介紹中有提到它如同中文有不同的詞性,那C#程式中有哪些型別呢?我們就來看一看。 一、常用的資料型別 當然還有自訂義的型別這就要看怎麼定義了,之後看內容狀況再來提,那麼資料型態是為了要做宣告用途,告訴電腦你的資料是屬於什麼類別的,這樣在做後續資料時程式
Thumbnail
介紹 在程式中你看到上面有一個中括號[] 就是特性,它自身沒有任何功能。 📷 特性attribute,和注釋有什麼區別 第一個感受 特性:中括號宣告 錯覺:每一個特性都可以帶來對應的功能 實際上添加後,編譯器會在元素內部產生IL,但是我們是沒辦法直接使用的,而且在metadata會有紀錄 📷
Thumbnail
介紹 在程式中你看到上面有一個中括號[] 就是特性,它自身沒有任何功能。 📷 特性attribute,和注釋有什麼區別 第一個感受 特性:中括號宣告 錯覺:每一個特性都可以帶來對應的功能 實際上添加後,編譯器會在元素內部產生IL,但是我們是沒辦法直接使用的,而且在metadata會有紀錄 📷
Thumbnail
這一篇文章將會從Microsoft的.NET Class Library開始介紹,在介紹具狀態和不具狀態,以及物件和new關鍵字。
Thumbnail
這一篇文章將會從Microsoft的.NET Class Library開始介紹,在介紹具狀態和不具狀態,以及物件和new關鍵字。
Thumbnail
本篇文章將會介紹C#的基礎構成和字串的使用,若想要更詳細的教學,可以參考前一篇文章,前往Microsoft官方教學學習。
Thumbnail
本篇文章將會介紹C#的基礎構成和字串的使用,若想要更詳細的教學,可以參考前一篇文章,前往Microsoft官方教學學習。
Thumbnail
這篇文章主要介紹存取子讀(get)和寫(set)的概述,並且簡單介紹基本的使用方法以及其他程式呼叫範例。
Thumbnail
這篇文章主要介紹存取子讀(get)和寫(set)的概述,並且簡單介紹基本的使用方法以及其他程式呼叫範例。
Thumbnail
撰寫程式時,有沒有想過宣告的這些變數是怎麼運作的呢? 本文介紹了Value Type跟Reference Type,以及Variable的基本命名方式。
Thumbnail
撰寫程式時,有沒有想過宣告的這些變數是怎麼運作的呢? 本文介紹了Value Type跟Reference Type,以及Variable的基本命名方式。
Thumbnail
使用者自訂的資料型別
Thumbnail
使用者自訂的資料型別
Thumbnail
使用者自訂的資料型別
Thumbnail
使用者自訂的資料型別
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News