【C# Programming】C#第一課(自己學習的筆記)

目錄

一、C# 介紹

1.1 托管代碼(Manage Code ) :

1.2 基礎類型庫 (Base Class Library):

1.3?程序集(Assembly):

1.4 .NET 框架:

1.5?公共中間語言(Common Intermediate Language),簡稱 IL。

1.6?C#編譯器將源代碼編譯成CIL,從而生成程序集。

1.7 公共語言運行時 (Common Language Runtime ),簡稱 CLR。

1.8?所有依賴.NET框架的應用程序都需要CLR,CLR 實現如下功能:

1.9?.NET框架:

1.10 .NET FRAMEWORK 4.8: ?

二、Hello World

三、基本類型

3.1 整數類型

3.1.1?整數數據

3.1.2?在指定數據類型時使用C#關鍵字而不是BCL名稱。?

3.2 浮點類型

3.2.1?浮點類型?

3.2.2?與浮點數不同,decimal類型保證范圍內的所有十進制數都是精確的。例如,0.1M 就是精確值,而不是一個近似值。

3.3 字面量

3.3.1?字面量(Literal value) :源代碼中的常量值

?3.3.2?默認情況下,輸入帶小數點的字面量,編譯器會自動把它解釋為double 類型,整數值通常默認為int,如果值太大,編譯器將把它解釋為long,例如:

3.3.3 整數字面量解析

3.4?布爾及字符類型

3.4.1?布爾類型

3.4.2 字符類型

3.4.3?字符類型的字面兩是用單引號括起來的,如:’A’

3.4.4?可以使用4位十六進制的Unicode值 、帶有強制類型轉換的整數值、或十六進制表示他們

3.4.5 字符類型:轉義字符

?3.4.6?字符串類型

3.5 字符串字面量

3.5.1?字符串字面量必須放在雙引號(“)中, 可以包含Unicode 和轉義字符。

3.5.2?在C#中,可以在字符串前使用@符號,指明轉義序列不被處理,結果是一個逐字字符串字面量,它不僅能將反斜杠當作普通字符處理, 也能逐字解釋所有空白字符。 例如:

3.6?字符串插值

3.6.1 字符串插值使得字符串可以支持嵌入表達式。字符串插值語法在一個字符串字面量前面加上一個$符號前綴,然后將表達式嵌入大括號中, 例如:

3.6.2 字符串字面量也可以在”@”符號前面加上”$”符號的字符串插值而成,例如:

3.6.3?string 類常用靜態方法

3.6.4?字符串的不可變性

四、其它介紹

4.1?using 和 using static 指令

4.1.1 using 指令有以下種用途

4.1.2 using static 指令訪問類型的靜態成員以及嵌套類型而不需要指定類型名。

4.2?隱式類型的局部變量

4.3?值類型和引用類型

4.3.1 C# 中數據類型分為兩類?

4.3.2?值類型

4.3.3 引用類型

4.4?null

4.5?顯式數據類型轉換

4.6?不使用轉型操作符的轉換


一、C# 介紹

1.1 托管代碼(Manage Code ) :

????????依賴于.NET 框架,在CLR(Common Language Runtime ) 管理下運行的代碼

1.2 基礎類型庫 (Base Class Library):

????????BCL 是公共語言基礎標準庫Common Language Infrastructure (CLI)之一,它提供了內建的數據類型表示、基本文件訪問,自定義屬性,格式化、安全屬性、 I/O 流、字符串操縱等功能, 例如:System.Int32 , System.String

1.3?程序集(Assembly):

????????NET庫和可執行文件稱為程序集,程序集是編譯好的,面向.NETFRAME的代碼的邏輯單元。

????????程序集中包含的元數據描述了對應代碼中定義的類型和方法。程序集也包含描述自身的程序集元數據,這種元數據包含在一個稱為“清單”(manifest) 的區域中。

1.4 .NET 框架:

????????.NET 所有程序集的集合。

1.5?公共中間語言(Common Intermediate Language),簡稱 IL。

1.6?C#編譯器將源代碼編譯成CIL,從而生成程序集。

1.7 公共語言運行時 (Common Language Runtime ),簡稱 CLR。

1.8?所有依賴.NET框架的應用程序都需要CLR,CLR 實現如下功能:

  • CLR 在程序運行時將IL 編譯成本地代碼。 這個過程稱為即時編譯( JIT)
  • 帶有類型加載器的類型系統,類型加載器負責從程序集中加載類型,類型系統負責驗證是否允許使用某些類型
  • 垃圾回收器
  • 線程處理

1.9?.NET框架:

1.10 .NET FRAMEWORK 4.8: ?

  • 在目錄 %windows%\Microsoft.NET\Framework\v4.0.30319下可以找到框架的庫及CLR。
  • 可用于.NET Framework的類組織在System名字空間中。?

二、Hello World

using System;
class Program
{static void Main(){Console.WriteLine("Hello World!");}
}

ILDASM

????????對程序集執行反匯編,顯示C# 編譯器生成的CIL代碼。

三、基本類型

3.1 整數類型

3.1.1?整數數據

3.1.2?在指定數據類型時使用C#關鍵字而不是BCL名稱。?

3.2 浮點類型

3.2.1?浮點類型?

3.2.2?與浮點數不同,decimal類型保證范圍內的所有十進制數都是精確的。例如,0.1M 就是精確值,而不是一個近似值。

3.3 字面量

3.3.1?字面量(Literal value) :源代碼中的常量值
?3.3.2?默認情況下,輸入帶小數點的字面量,編譯器會自動把它解釋為double 類型,整數值通常默認為int,如果值太大,編譯器將把它解釋為long,例如:
  • Console.WriteLine(1.618033988749895); ? ? // 1.61803398874989
  • Console.WriteLine(1.618033988749895M);? ?// 1.618033988749895M
3.3.3 整數字面量解析
  • 沒有后綴的字面量按照 int, uint, long, ulong 的順序,解析成能夠存儲該值的類型
  • 具有后綴U的數值按照 uint, ulong 的順序,解析成能夠存儲該值的類型
  • 具有后綴L的數值按照 ?long, ulong 的順序,解析成能夠存儲該值的類型
  • 如果字面量的后綴是UL 或者LU,則解析成ulong 類型

3.4?布爾及字符類型

3.4.1?布爾類型

3.4.2 字符類型

3.4.3?字符類型的字面兩是用單引號括起來的,如:’A’
3.4.4?可以使用4位十六進制的Unicode值 、帶有強制類型轉換的整數值、或十六進制表示他們

如: ‘\u0041’ ? ? (char)65 ? ? ? ?‘\x0041’?

3.4.5 字符類型:轉義字符

????????轉義字符也能表示一個字符類型的字面量

?3.4.6?字符串類型

using System;
Class Program
{static void Main(){string s1 = "A string";Console.WriteLine("s1 is" + s1); }
}

3.5 字符串字面量

3.5.1?字符串字面量必須放在雙引號(“)中, 可以包含Unicode 和轉義字符。

????????例如:string filename = “C:\\Prosharp\\Helloworld.cs”;

3.5.2?在C#中,可以在字符串前使用@符號,指明轉義序列不被處理,結果是一個逐字字符串字面量,它不僅能將反斜杠當作普通字符處理, 也能逐字解釋所有空白字符。 例如:

3.6?字符串插值

3.6.1 字符串插值使得字符串可以支持嵌入表達式。字符串插值語法在一個字符串字面量前面加上一個$符號前綴,然后將表達式嵌入大括號中, 例如:

????????Console.WriteLine($"Your ?full name is {firstName} {lastName}");

3.6.2 字符串字面量也可以在”@”符號前面加上”$”符號的字符串插值而成,例如:
using  System;
Class Program
{static void Main(){string  s1 = "Hello World!";Console.WriteLine($@"The string is: {s1}"); }
}
3.6.3?string 類常用靜態方法

3.6.4?字符串的不可變性

????????string 類型的關鍵特性在于它的不可變性(immutable).可以為string 變量賦一個全新的值,但出于性能考慮,沒有提供修改字符串內容的機制,例如:?

四、其它介紹

4.1?using 和 using static 指令

4.1.1 using 指令有以下種用途
  • 允許使用命名空間的類型而不需要指定命名空間的名字,例如:using System.text; ?
  • 允許創建一個類型或命名空間的別名,例如:using Project = PC.MyCompany.Project;
4.1.2 using static 指令訪問類型的靜態成員以及嵌套類型而不需要指定類型名。

????????例如:using static System.Math;

4.2?隱式類型的局部變量

????????var 用來聲明隱式類型的局部變量。編譯器根據聲明時初始化語句推斷數據類型

4.3?值類型和引用類型

4.3.1 C# 中數據類型分為兩類?
  • 值類型
  • 引用類型
4.3.2?值類型
  • 值類型存儲在棧(即堆棧stack)中
  • 除string 外,基本數據類型都是值類型
4.3.3 引用類型
  • 引用類型存儲在托管堆中
  • 引用只復制對數據的引用,所以兩個不同變量可引用相同的結構,
    • 例如string s1= “hello world”; ? ? ? ?
    • string s2 = s1; ?
  • 大多數復雜的c#類,包括用戶自定義類型,都是引用類型
  • 如果希望用戶自定義類型為值類型,需要聲明成結構
  • 一般引用類型需要使用new 操作符從堆上分配對象

4.4?null

  • null值由關鍵字null標識,表明變量不引用任何有效對象,null值只能賦給引用類型,指針類型,可空值類型。 例如:string faxNumber = null; ?
  • 一般不能把 null賦給 值類型,因為值類型不能包含引用。但是從C# 2.0開始,允許使用可空修飾符?聲明可存儲null 的變量, 例如:
    • int ?count = null; ? ? ? ?
    • ?// …………. ? ? ? ?
    • if (count == null) ? ? ? ? ?
    • // …………….

4.5?顯式數據類型轉換

  • C# 中,可以使用轉型操作符執行轉型,通過在圓括號中指定希望變量轉換成的類型。轉換可能丟失精度和數據,例如:
    • long longNumber = 50918309109;?
    • int ? intNumber = (int)longNumber;
  • C# 提供了特殊關鍵字checked/unchecked 標識代碼塊, 如果代碼塊中發生數據溢出,checked 將使得程序拋出異常,如:

  • 不存在從數值類型到bool的有效轉換

4.6?不使用轉型操作符的轉換

????????每個數據類型都包含一個Parse() 方法,它允許將字符串轉換成對應的數值類型,例如:

 string text = "9.11E-31";float kgElectronmass = float.Parse(text); 

????????System.Convert 也能將一種類型轉換為另一種類型,但是它只支持小的數據類型,而且是不可擴展的。它允許從 char, sbyte, short, int, long, ushort, uint, ulong, float, double, decimal, DateTime 和string 類型中的一種轉換到另一種類型

string middleText = "261.626";
double middle = System.Convert.ToDouble(middleText);
bool isMiddle = System.Convert.ToBoolean(middle); 

????????所有類型都支持ToString 方法 輸出一個類型的字符串表示,例如:

bool isMiddle = true;
string text = isMiddle.ToString(); // text = True;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/37780.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/37780.shtml
英文地址,請注明出處:http://en.pswp.cn/news/37780.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

實戰:工作中對并發問題的處理 | 京東物流技術團隊

1. 問題背景 問題發生在快遞分揀的流程中,我盡可能將業務背景簡化,讓大家只關注并發問題本身。 分揀業務針對每個快遞包裹都會生成一個任務,我們稱它為 task。task 中有兩個字段需要關注,一個是分揀中發生的異常(exp…

DIP: Spectral Bias of DIP 頻譜偏置解釋DIP

On Measuring and Controlling the Spectral Bias of the Deep Image Prior 文章目錄 On Measuring and Controlling the Spectral Bias of the Deep Image Prior1. 方法原理1.1 動機1.2 相關概念1.3 方法原理頻帶一致度量與網絡退化譜偏移和網絡結構的關系Lipschitz-controlle…

Linux常規操作命令

日升時奮斗,日落時自省 目錄 1、vim 1.1、工作模式 1.2、末行模式操作相關命令 1.2.1、保存退出操作 1.2.2、查找替換 1.3、輸入模式操作相關命令 1.3.1、移動相關命令 1.3.2、刪除和剪切命令 1.3.3、復制操作 1.3.4、撤銷 2、head 3、tail 4、ps 5、…

數據結構算法--2 冒泡排序,選擇排序,插入排序

基礎排序算法 冒泡排序 思想就是將相鄰元素兩兩比較,當一個元素大于右側相鄰元素時,交換他們的位置,小于右側元素時,位置不變,最終序列中的最大元素,像氣泡一樣,到了最右側。 這時冒泡排序第一…

linux Socket簡單編程實例

服務端 網絡編程中服務端接受連接的套接字創建過程如下: 1.調用socket函數創建套接字 2.調用bind函數分配IP地址和端口號 3.調用listen函數轉為可接收請求狀態 4.調用accept函數受理連接請求 #include <stdio.h> #include <stdlib.h> #include <sys/types.h>…

Java實現根據姓名生成頭像(釘釘樣式)

頭像生成器代碼如下&#xff1a; package com.hua.util;import org.apache.commons.lang3.StringUtils;import javax.imageio.ImageIO; import java.awt.*; import java.awt.geom.RoundRectangle2D; import java.awt.image.BufferedImage; import java.io.File; import java.i…

配置listener tcps加密 enable SSL encryption for Oracle SQL*Net

一 配置客戶端和服務端的wallet 2端配置方法一致&#xff0c;相互添加證書 orapki wallet create -wallet “/u01/oracle/wallet” -pwd Wdkf984jkkgekj434FKFD -auto_login_local orapki wallet add -wallet “/u01/oracle/wallet” -pwd Wdkf984jkkgekj434FKFD -dn “CNho…

Zabbix監控MySQL數據庫實戰

zabbix監控mysql的方式 只是安裝agent 啟用模板監控 啟用自定義腳本的模板監控 使用zabbix模版及結合shell腳本監控mysql 創建mysql的zabbix授權用戶 mysql> grant all PRIVILEGES on *.* to zabbixlocalhost identified by zabbix; ###創建一個有權限的訪問用戶lqb密碼設…

es1.7.2 按照_type先聚合,再按照時間二次聚合

// 設置查詢條件if (this.query ! null) {this.searchbuilder.setQuery(this.query);}TermsBuilder typeAggregation AggregationBuilders.terms("agg_type").field("_type");DateHistogramBuilder dateTermsBuilder AggregationBuilders.dateHistogram(…

[Android] 通過JNI 讓 JAVA 調用 android native 接口

前言&#xff1a; JNI (java native interface) 是一個庫&#xff0c;可以讓 java 代碼和其他語言互動&#xff0c;比如 java 通過 JNI 調用融合了 jni庫的 c/c 代碼&#xff0c;注意&#xff0c;這里要求 c/c代碼中必須通過鏈接 jni 庫并按照 JNI 規范定義一套可供 JAVA 調用…

STM32自帶的DSP庫的濾波初體驗(一)

最近在弄STM32自帶的DSP庫里的濾波&#xff0c;記錄一下&#xff1a; arm_fir_instance_q15 instance_q15_S; #define NUM_TAPS 16 //濾波系數的個數 #define BLOCK_SIZE 32 q15_t firStateF32[BLOCK_SIZE NUM_TAPS]; q15_t Fir_Coeff[NUM_TAPS] {-79, -136, 312, 6…

【02】基礎知識:typescript數據類型

1、布爾類型 boolean let flag: boolean false2、數字類型 number let num: number 6 //十進制 let num2: number 0xf00d //十六進制 let num3: number 0b1010 //二進制 let num4: number 0o744 //八進制3、字符串類型 string 用雙引號&#xff08;“&#xff09;或單引…

MongoDB 簡介

什么是MongoDB ? MongoDB 是由C語言編寫的&#xff0c;是一個基于分布式文件存儲的開源數據庫系統。 在高負載的情況下&#xff0c;添加更多的節點&#xff0c;可以保證服務器性能。 MongoDB 旨在為WEB應用提供可擴展的高性能數據存儲解決方案。 MongoDB 將數據存儲為一個…

mqttfx連上OneNET生成token時的一大坑,報用戶名或密碼錯誤

整個流程如下連接&#xff1a; MQTT.fx和MQTTX 鏈接ONENET物聯網開發平臺避坑細節干貨。 其中在生成token時&#xff0c;搞了半天在連接后都會報用戶名密碼錯誤 最后發現是格式問題&#xff0c;輸入所有字符后一定要雙擊看是否可以全選中&#xff0c;可以全選中說明字符的格式…

java spring cloud 企業工程管理系統源碼+二次開發+定制化服務 em

Java版工程項目管理系統 Spring CloudSpring BootMybatisVueElementUI前后端分離 功能清單如下&#xff1a; 首頁 工作臺&#xff1a;待辦工作、消息通知、預警信息&#xff0c;點擊可進入相應的列表 項目進度圖表&#xff1a;選擇&#xff08;總體或單個&#xff09;項目顯…

springBoot中service層查詢使用多線程CompletableFuture(有返回值)

重點&#xff1a; 1. 創建線程池 Executor executor Executors.newCachedThreadPool();//保存線程List<CompletableFuture<Void>> futures new ArrayList<>();2.使用 //這里可以是多個看下面代碼是在for中使用的 CompletableFuture<Void> future …

深入解析路由與網絡:網絡的脈絡

目錄 路由 廣域網 公網 外網 局域網 內網 以太網 Wi-Fi CDN IPv4和IPv6 IP地址分類 無類別域間路由&#xff08;CIDR&#xff09; 路由 路由是指在計算機網絡中&#xff0c;將數據包從源地址傳遞到目標地址的過程。在一個復雜的網絡中&#xff0c;數據包需要經過多…

冶金作業VR虛擬仿真廠家

對于高風險行業來說&#xff0c;開展安全教育培訓是企業的重點工作&#xff0c;傳統培訓逐漸跟不上時代變化和工人需求&#xff0c;冶金安全VR模擬仿真培訓系統作為一種新型的教育和培訓工具&#xff0c;借助VR虛擬現實技術為冶金行業的工人提供一個安全、高效的培訓環境。 冶金…

Angular中的管道Pipes

Angular中的管道&#xff08;Pipes&#xff09;是一種強大的工具&#xff0c;它可以處理和轉換數據&#xff0c;然后將其呈現在視圖中。它們可以被用于排序、格式化和過濾數據等任務。在本文中&#xff0c;我們將介紹Angular中的管道以及如何使用它們來簡化開發過程。 管道的基…

Ansible Service模塊,使用 Ansible Service模塊進行服務管理

Ansible 是一種自動化工具&#xff0c;它可以簡化配置管理、應用程序部署和任務自動化等操作。Ansible 的 Service 模塊是其中一個重要的模塊&#xff0c;它提供了管理服務的功能&#xff0c;使得在遠程主機上啟動、停止、重啟和重新加載服務變得簡單和可靠。本文將介紹 Ansibl…