4、C#基礎 - C# 的 常見概念簡述

来源:http://www.cnblogs.com/mrbug/archive/2017/12/11/8025449.html
-Advertisement-
Play Games

在上篇文章中,你跟著我寫了一個HelloWorld,本篇中,我們來談談一些C#程式中的小概念 1、C# 程式結構 一個 C# 程式主要包括以下部分: 命名空間聲明(Namespace declaration) 一個類(class) Class 方法 Class 屬性 一個 Main(主)方法 語句( ...


在上篇文章中,你跟著我寫了一個HelloWorld,本篇中,我們來談談一些C#程式中的小概念

1、C# 程式結構

一個 C# 程式主要包括以下部分:

  • 命名空間聲明(Namespace declaration)
  • 一個類(class)
  • Class 方法
  • Class 屬性
  • 一個 Main(主)方法
  • 語句(Statements)& 表達式(Expressions)
  • 註釋

我們把上一篇的代碼添出來

 1 using System;
 2 
 3 namespace HelloWorld
 4 {
 5     class Program
 6     {
 7         static void Main(string[] args)
 8         {
 9             Console.Write("HelloWorld");
10             Console.Read();
11         }
12     }
13 }

 

程式的第1行 using System; - using 關鍵字用於在程式中包含 System 命名空間。 一個程式一般有多個 using 語句

下一行namespace HelloWorld - namespace關鍵字用於申明命名空間,一個命名空間里有多個類。本代碼中,表示一個為HelloWorld的命名空間

下一行class Program - class關鍵字用於申明一個類,類 Program 包含了程式使用的數據和方法聲明。類一般包含多個方法。方法定義了類的行為。在這裡,Program 類只有一個 Main 方法。

下一行定義了 Main 方法,是所有 C# 程式的 入口點。Main 方法說明當執行時 類將做什麼動作。

註釋是用於解釋代碼。編譯器會忽略註釋的條目。在 C# 程式中,多行註釋以 /* 開始,並以字元 */ 終止,如下所示:

/* 這是C#中
的多行註釋的
演示 */

 單行註釋是用 '//' 符號表示。例如:

//這是C#中的單行註釋的演示 

 
2、標識符

標識符是用來識別類、變數、函數或任何其它用戶定義的項目。在 C# 中,類的命名必須遵循如下基本規則:

  • 標識符必須以字母、下劃線或 @ 開頭,後面可以跟一系列的字母、數字( 0 - 9 )、下劃線( _ )、@。
  • 標識符中的第一個字元不能是數字。
  • 標識符必須不包含任何嵌入的空格或符號,比如 ? - +! # % ^ & * ( ) [ ] { } . ; : " ' / \。
  • 標識符不能是 C# 關鍵字。除非它們有一個 @ 首碼。 例如,@if 是有效的標識符,但 if 不是,因為 if 是關鍵字。
  • 標識符必須區分大小寫。大寫字母和小寫字母被認為是不同的字母。
  • 不能與C#的類庫名稱相同。

3、C# 關鍵字

關鍵字是 C# 編譯器預定義的保留字。這些關鍵字不能用作標識符,但是,如果您想使用這些關鍵字作為標識符,可以在關鍵字前面加上 @ 字元作為首碼。
在 C# 中,有些標識符在代碼的上下文中有特殊的意義,如 get 和 set,這些被稱為上下文關鍵字(contextual keywords)。
下表列出了 C# 中的保留關鍵字(Reserved Keywords)和上下文關鍵字(Contextual Keywords):

保留關鍵字

 

上下文關鍵字

詳見:https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/

 


4、C# 數據類型

在 C# 中,變數分為以下幾種類型:

  • 值類型(Value types)
  • 引用類型(Reference types)
  • 指針類型(Pointer types)

詳見:https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/types 
後面我們也會有單獨的章節去講,這裡你不必太糾結,心裡有這些概念就行了。

 

5、C# 變數

 一個變數只不過是一個供程式操作的存儲區的名字。在 C# 中,每個變數都有一個特定的類型,類型決定了變數的記憶體大小和佈局。範圍內的值可以存儲在記憶體中,可以對變數進行一系列操作。

 C# 中變數定義的語法:

<data_type> <variable_list>;

 

在這裡,data_type 必須是一個有效的 C# 數據類型,可以是 char、int、float、double 或其他用戶自定義的數據類型。variable_list 可以由一個或多個用逗號分隔的標識符名稱組成。

定義變數示例:

int i,j;
char c;
string mrbug;

 

變數通過在等號後跟一個常量表達式進行初始化(又叫賦值)。初始化的一般形式為:

<data_type> <variable_name> = value;

 

一些示例:

int i = 0 , j = 100; //初始化 i 和 j

string myname = "mrbug" ; //初始化myname

 

定義變數時就為這個變數賦一個初始值,是一個良好的編碼習慣

 

6、C# 常量

顧名思意常量是固定值,程式執行期間不會改變。常量可以是任何基本數據類型,比如整數常量、浮點常量、字元常量或者字元串常量,還有枚舉常量。
常量可以被當作常規的變數,只是它們的值在定義後不能被修改。在C#中,常量以下麵的形式定義:

const <data_type> <constant_name> = value;

 

定義常量示例:

const double pi = 3.1415926; // 常量聲明

 

詳見:https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/classes-and-structs/constants

 

7、C# 中的 Lvalues 和 Rvalues

C# 中的兩種表達式:

  • lvalue:lvalue 表達式可以出現在賦值語句的左邊或右邊。
  • rvalue:rvalue 表達式可以出現在賦值語句的右邊,不能出現在賦值語句的左邊。

左值(lvalue)是指在單個表達式的外部保留的對象。 可以將左值視為具有名稱的對象。 所有變數(包括不能更改的 (const) 變數)都是左值。 左值是一個不在使用它的表達式的外部保留的臨時值。

數值是 rvalue 的,因此不能被賦值,不能出現在賦值語句的左邊。下麵是一個有效的語句:

int x = 3 + 4;  

 

在此示例中,x 是左值,因為它在定義它的表達式的外部保留。 表達式 3 + 4 是為一個右值,因為其計算結果為不在定義它的表達式的外部保留的臨時值。 

 

8、C# 命名空間(Namespace)

命名空間的設計目的是提供一種讓一組名稱與其他名稱分隔開的方式。在一個命名空間中聲明的類的名稱與另一個命名空間中聲明的相同的類的名稱不衝突。

命名空間的定義是以關鍵字 namespace 開始,後跟命名空間的名稱,如下所示:

namespace namespace_name
{
   // 代碼聲明
}

 

using 關鍵字表明程式使用的是給定命名空間中的名稱。例如,我們在程式中使用 System 命名空間,其中定義了類 Console。我們可以只寫:

Console.WriteLine ("Hello world");

 

我們可以寫完全限定名稱,如下:

System.Console.WriteLine("Hello world");

 

在C#中,命名空間可以被嵌套,即您可以在一個命名空間內定義另一個命名空間,如下所示:

namespace namespace_name1 
{
   // 代碼聲明
   namespace namespace_name2 
   {
     // 代碼聲明
int age = 18 ;
} }

 

在C#中,你可以使用點(.)運算符訪問嵌套的命名空間的成員,例如上例中你可以這樣使用:

namespace_name1.namespace_name2.age = 30 ;

 

詳見:https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/namespace


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 作為 Java 書呆子,比起實用技能,我們會對介紹 Java 和 JVM 的概念細節更感興趣。因此我想推薦 Lukas Eder 在 jooq.org 發表的原創作品給大家。 你是從很早開始就一直使用 Java 嗎?那你還記得它的過去嗎?那時,Java 還叫 Oak,OO 還是一個熱門話題,C++ ...
  • - 服務端軟體 - socket服務端 - 本地文件操作 - 解析指令【SQL語句】 - 客戶端軟體(各種各樣) - socket客戶端 - 發送指令 - 解析指令【SQL語句】 上述提到MySQL等軟體可以接受命令,並做出相應的操作,由於命令中可以包含刪除文件、獲取文件內容等眾多操作,對於編寫的命 ...
  • 相信每個小伙伴在使用laravel的時候都會記錄日誌、查看日誌。那麼問題來了,比如我在對接zabbix介面的時候,使用 Log::info() 會讓日誌全部記錄在 storage/logs/laravel.log 文件里,查找起來比較麻煩。那麼我可不可以單獨記錄在一個日誌文件里呢? laravel文 ...
  •   hashCode和equals方法是Object類的相關方法,而所有的類都是直接或間接的繼承於Object類而存在的,為此,所有的類中都存在著hashCode和equals。通過翻看Object類的相關源碼,發現其hashCode的實現方式如下:   從中 ...
  • 本篇是為項目實戰做準備,學習Linux是必備的,不然都不好意思叫全棧對吧?下麵是一位資深大神寫的文章,夠詳細,我也不用浪費時間再寫了 原文鏈接:Ubuntu學習——第一篇 內容: 一、 Ubuntu簡介 Ubuntu(烏班圖)是一個基於Debian的以桌面應用為主的Linux操作系統,據說其名稱來自 ...
  • OpenXml讀取word內容註意事項 1、使用OpenXml讀取word內容,word尾碼必須是".docx";如果word尾碼是".doc"需要轉成".docx"後,才可以讀取; 2、需要引入相關dll;"WindowsBase.dll"、“DocumentFormat.OpenXml.dll” ...
  • 一、分頁存儲過程 使用存儲過程編寫一個分頁查詢 set nocount off --關閉SqlServer消息 --set nocount on --開啟SqlServer消息 gocreate proc usp_getMyStudentsDataByPage --輸入參數@pagesize int ...
  • 有時候在窗體中執行不斷的GDI+操作的時候會出現閃速的狀況,除了修改窗體的參數,更應該解決刷新本身的問題,雙緩衝可能就是這樣來的。 方法1: 用GDI繪製在點陣圖上,然後再重新生成點陣圖 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...