C#基礎一

使用Visual Studio 2022(VS2022)編寫C#控制臺程序

1. 安裝Visual Studio 2022

確保已安裝Visual Studio 2022。如果未安裝,請從Visual Studio官網下載并安裝。
另一篇文章中已經有詳細描述,這里就不在細說了。
VisualStudio2022的使用

2. 創建新的C#控制臺項目

  1. 打開Visual Studio 2022。

  2. 點擊“創建新項目”。

  3. 在“創建新項目”窗口中,選擇“控制臺應用程序”。
    在這里插入圖片描述

  4. 點擊“下一步”。

  5. 輸入項目名稱、位置和解決方案名稱,然后點擊“創建”。

3. 編寫C#控制臺程序

創建項目后,Visual Studio會自動生成一個模板代碼文件(通常是Program.cs),這是一個簡單的“Hello World”程序。你可以編輯這個文件來編寫自己的代碼。

4. 程序說明

假設你要編寫一個簡單的程序,它會讀取用戶輸入的名字并輸出問候語。

using System;namespace HelloWorld
{class Program{static void Main(string[] args){Console.WriteLine("請輸入您的名字:");string name = Console.ReadLine();Console.WriteLine("您好, " + name + "!");}}
}

5. 解決方案資源管理器內各文件的使用方法

解決方案資源管理器是Visual Studio中的一個重要工具窗口,它顯示當前解決方案中的所有項目和文件。以下是常見文件及其用途的詳細說明:

Program.cs
  • 位置:項目根目錄
  • 用途:這是程序的入口點,Main方法是應用程序啟動時首先運行的方法。你可以在這里編寫主要的程序邏輯。
Properties 文件夾
  • 位置:項目根目錄
  • 用途:包含項目的配置文件,例如AssemblyInfo.cs,其中包含程序集的元數據(版本信息、公司信息等)。
References
  • 位置:項目根目錄
  • 用途:顯示項目引用的所有外部程序集(如.NET庫),你可以通過右鍵點擊“References”并選擇“添加引用”來引用其他程序集或庫。
Dependencies
  • 位置:項目根目錄
  • 用途:顯示項目的依賴項,包括NuGet包。你可以通過右鍵點擊“Dependencies”并選擇“管理NuGet包”來添加或刪除NuGet包。
.csproj 文件
  • 位置:項目根目錄
  • 用途:項目文件,包含項目的配置信息,例如目標框架、編譯選項、引用等。你可以右鍵點擊項目并選擇“編輯項目文件”來手動編輯該文件。

6. 編譯與運行

  1. 點擊菜單欄中的“生成”并選擇“生成解決方案”,或者按下快捷鍵Ctrl+Shift+B來編譯項目。
  2. 編譯成功后,點擊菜單欄中的“調試”并選擇“開始調試”,或者按下快捷鍵F5來運行程序。你也可以選擇“開始執行(不調試)”或按下快捷鍵Ctrl+F5來直接運行程序。

Debug和Release

1.Debug模式

定義:

  • Debug模式用于開發和調試階段。這種模式下編譯的程序包含調試信息和未優化的代碼,便于開發人員進行代碼調試和測試。

特點:

  • 調試信息:包含豐富的調試信息,便于在調試器中查看變量、堆棧跟蹤等。
  • 未優化代碼:代碼未經過優化,保留了很多原始信息,方便逐步調試。
  • 更大的二進制文件:生成的可執行文件(如.exe或.dll)會比Release模式下的文件大,因為包含了調試信息。
  • 斷言檢查:在Debug模式下,斷言(Assertions)會被檢查,如果斷言失敗,程序會中斷。

優點:

  • 便于調試:可以使用斷點、觀察變量、逐步執行代碼等調試工具。
  • 快速開發:因為不需要考慮優化,編譯速度相對較快。

缺點:

  • 性能較差:由于沒有進行優化,程序運行速度相對較慢。
  • 文件較大:包含調試信息,文件體積較大。

2.Release模式

定義:

  • Release模式用于發布和部署階段。這種模式下編譯的程序經過優化,以提高運行效率,并且不包含調試信息。

特點:

  • 優化代碼:編譯器會對代碼進行優化,去掉不必要的代碼,重排指令等,以提高運行效率。
  • 無調試信息:不包含調試信息,文件體積較小。
  • 更高的性能:由于經過優化,程序運行速度更快。

優點:

  • 運行效率高:優化后的代碼運行效率更高,適合生產環境使用。
  • 文件體積小:沒有調試信息,生成的可執行文件體積更小。

缺點:

  • 不便于調試:沒有調試信息,無法在調試器中查看變量、堆棧等信息。
  • 編譯時間稍長:優化過程需要更多的時間,相對于Debug模式編譯速度稍慢。

3.Debug和Release區別和聯系

區別:

  • 調試信息:Debug模式包含調試信息,Release模式不包含。
  • 代碼優化:Debug模式未優化代碼,Release模式經過優化。
  • 用途:Debug模式用于開發和調試,Release模式用于發布和部署。
  • 性能:Debug模式性能較差,Release模式性能較好。
  • 文件大小:Debug模式生成的文件較大,Release模式生成的文件較小。

聯系:

  • 都是項目構建的一部分,可以在Visual Studio中通過配置選擇使用哪種模式。
  • 都可以在同一個項目中切換,以適應不同的開發和發布需求。

4.選擇模式的建議

  • 開發階段:使用Debug模式,便于發現和修復代碼中的問題。
  • 發布階段:使用Release模式,確保程序運行的高效性和穩定性。

在Visual Studio中,可以通過工具欄或項目屬性切換這兩種模式。例如,在工具欄的“解決方案配置”下拉菜單中選擇“Debug”或“Release”即可切換模式。項目屬性中的“生成”選項卡也可以進行更細致的配置。

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

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

相關文章

【LeetCode】【209】長度最小的子數組(1488字)

文章目錄 [toc]題目描述樣例輸入輸出與解釋樣例1樣例2樣例3 提示進階Python實現前綴和二分查找滑動窗口 個人主頁:丷從心 系列專欄:LeetCode 刷題指南:LeetCode刷題指南 題目描述 給定一個含有n個正整數的數組和一個正整數target找出該數組…

Effective C++(2)

文章目錄 2. 構造、析構、賦值運算條款05:了解C默默編寫并調用哪些函數條款06:若不想使用編譯器自動生成的函數,就該明確拒絕條款07:為多態基類聲明virtual析構函數條款08:別讓異常逃離析構函數條款09:絕不…

微信小程序報錯:notifyBLECharacteristicValueChange:fail:nodescriptor的解決辦法

文章目錄 一、發現問題二、分析問題二、解決問題 一、發現問題 微信小程序報錯:notifyBLECharacteristicValueChange:fail:nodescriptor 二、分析問題 這個提示有點問題,應該是該Characteristic的Descriptor有問題,而不能說nodescriptor。 …

web前端之解決img元素組件自有高度的問題

MENU 前言解決辦法vertical-align 前言 在HTML和CSS中,img元素默認是行內元素(inline element),類似于文本。由于文本有基線(baseline),所以即使是空白的img元素也會占據一定的高度,以便使基線對齊。 解決辦法 要解決這個問題&…

axios如何傳遞數組作為參數,后端又如何接收呢????

前端的參數是一個數組。 前端編寫: 后端接收:

Iterater迭代器和增強for循環

1、Collection接口遍歷元素—Iterator迭代器 看一下下面這張圖片:可以看出Collection接口有一個父接口Iterable,Iterable接口有一個iterator()方法,iterator()方法的類型是Iterator迭代器,實際上當我們使用方法時,返回…

Go語言的pprof工具是如何使用的?

文章目錄 Go語言的pprof工具詳解pprof的使用runtime/pprofnet/http/pprof 快速開始獲取采樣數據通過pprof工具進行性能分析總結 Go語言的pprof工具詳解 Go語言作為一個高性能、高并發的編程語言,對性能優化有著極高的要求。在Go語言的標準庫中,pprof是一…

linux 安全 iptables防火墻 (一)

Linux包過濾防火墻概述 Linux 系統的防火墻 :IP信息包過濾系統,它實際上由兩個組件netfilter 和 iptables組成。 主要工作在網絡層,針對IP數據包。體現在對包內的IP地址、端口、協議等信息的處理上。 兩大組件 netfilter內核組件 iptables應…

blender安裝cats-blender-plugin-0-19-0插件,導入pmx三維模型

UE5系列文章目錄 文章目錄 UE5系列文章目錄前言一、Blender安裝二、cats-blender-plugin-0-19-0插件下載三、下載bmp文件四、在blender2.93中安裝cats-blender-plugin-0-19-0插件 前言 blender本身不支持pmx三維模型,需要用到cats-blender-plugin-0-19-0插件。 一…

構建全面的無障礙學習環境:科技之光,照亮學習之旅

在信息與科技日益發展的當下,為所有人群提供一個包容和平等的學習環境顯得尤為重要,特別是對于盲人朋友而言,無障礙學習環境的構建成為了一項亟待關注與深化的課題。一款名為“蝙蝠避障”的輔助軟件,以其創新的設計理念與實用功能…

Offline RL : Context-Former: Stitching via Latent Conditioned Sequence Modeling

paper 基于HIM的離線RL算法,解決基于序列模型的離線強化學習算法缺乏對序列拼接能力。 Intro 文章提出了ContextFormer,旨在解決決策變換器(Decision Transformer, DT)在軌跡拼接(stitching)能力上的不足…

新定義單片機的說明

新定義的官網是https://www.rdsmcu.com/shop/#/,主要經營的是1T系列的51單片機,之前從他們官網上申請了評估板,自己頁玩了一段時間,不過玩的不多,特開此專欄記錄學習過程,并幫助剛入門的道友快速上手。 我申請的是評估…

DQL(數據查詢)

目錄 1. DQL概念 2. DQL - 編寫順序 3. 基礎查詢 3.1 查詢多個字段 3.2 字段設置別名 3.3 去除重復記錄 3.4 案例 4. 條件查詢 4.1 語法 4.2 條件 4.3 案例: 5. 聚合函數 5.1 常見的聚合函數: 5.2 語法 5.3 案例: 6. 分組查…

VScode SSH連接遠程服務器報錯

一、報錯 通過VScode SSH插件遠程連接服務器,輸入密碼后沒有連接成功,一直跳出輸入密碼界面,在輸出界面里,一直是Waiting for server log或者是顯示Cannot not find minimist 二、處理 🐱: 這個時候應該…

力扣每日一題 5/25

題目: 給你一個下標從 0 開始、長度為 n 的整數數組 nums ,以及整數 indexDifference 和整數 valueDifference 。 你的任務是從范圍 [0, n - 1] 內找出 2 個滿足下述所有條件的下標 i 和 j : abs(i - j) > indexDifference 且abs(nums…

CTF網絡安全大賽web題目:字符?正則?

題目來源于&#xff1a;bugku 題目難度&#xff1a;難 題目描  述: 字符&#xff1f;正則&#xff1f; 題目htmnl源代碼&#xff1a; <code><span style"color: #000000"> <span style"color: #0000BB"><?php <br />highl…

C-數據結構-鏈式存儲棧(二次封裝)

/* 二次封裝 借用已經實現雙向鏈表結構來實現 棧 出棧入棧操作類似于 從頭節點開始的插入和刪除 */ llist.h #ifndef LLIST_H__ #define LLSIT_H__ #define LLIST_FORWARD 1 #definr LLIST_BACKWARD 2 typedef void llist_op(const void *);//回調函數 typedef int llist_cmp…

分組排序取最大sql理解

分組排序取最大sql理解 --用戶過濾&#xff08;只能看到當前用戶對應部門用戶權限表中的部門&#xff09; select h.pk_tbdept from jygyl_bmyhqxb h left join jygyl_bmyhqxb_b b on h.pk_bmyhqx b.pk_bmyhqx where isnull(h.dr,0) 0 and isnull(b.dr,0) 0 and b.pk…

類圖的六大關系

類圖中的六大關系包括&#xff1a;繼承關系、實現關系、關聯關系、聚合關系、組合關系和依賴關系。 1. 繼承關系 繼承是一種類與類之間的關系&#xff0c;表示一種泛化和特化的關系。子類繼承父類的特性和行為。 class Animal {void eat() {System.out.println("This an…

TensorFlow.js

什么是 TensorFlow.js&#xff1f; TensorFlow.js 是一個基于 JavaScript 的機器學習庫&#xff0c;它是 Google 開發的 TensorFlow 的 JavaScript 版本。它使得開發者能夠在瀏覽器中直接運行機器學習模型&#xff0c;而不需要依賴于后端服務器或云服務。TensorFlow.js 的主要…