Visual Stiudio使用技巧

技巧1 自動生成帶參構造函數

當我們在編寫代碼時會經常遇到初始化一個的類,需要通過構造函數進行對象初始化。那么這個時候我們可能會需要逐個去手動寫,這樣的工作即重復又無趣。如果是在項目非常緊急的情況下還有大量的字段需要與入參一一對應起來簡直太要命了。大致情況如下:

public class Configinfo : Entity{public Configinfo() { }public Configinfo(int appType, string appName, string appSecretKey, string clientVersion, string updateUrl, string updateLogUrl, string installPath, string mainUpdateUrl, string mainAppName){AppType = appType;AppName = appName ?? throw new ArgumentNullException(nameof(appName));AppSecretKey = appSecretKey ?? throw new ArgumentNullException(nameof(appSecretKey));ClientVersion = clientVersion ?? throw new ArgumentNullException(nameof(clientVersion));UpdateUrl = updateUrl ?? throw new ArgumentNullException(nameof(updateUrl));UpdateLogUrl = updateLogUrl ?? throw new ArgumentNullException(nameof(updateLogUrl));InstallPath = installPath ?? throw new ArgumentNullException(nameof(installPath));MainUpdateUrl = mainUpdateUrl ?? throw new ArgumentNullException(nameof(mainUpdateUrl));MainAppName = mainAppName ?? throw new ArgumentNullException(nameof(mainAppName));}/// <summary>/// 1:ClientApp 2:UpdateApp/// </summary>public int AppType { get; set; }/// <summary>/// Need to start the name of the app./// </summary>public string AppName { get; set; }/// <summary>/// application key/// </summary>public string AppSecretKey { get; set; }/// <summary>/// Client current version./// </summary>public string ClientVersion { get; set; }/// <summary>/// Update check api address./// </summary>public string UpdateUrl { get; set; }/// <summary>/// Update log web address./// </summary>public string UpdateLogUrl { get; set; }/// <summary>/// installation path (for update file logic)./// </summary>public string InstallPath { get; set; }/// <summary>/// Update check api address./// </summary>public string MainUpdateUrl { get; set; }public string MainAppName { get; set; }}

看起來是不是非常頭疼,那么如何解決這個問題呢?可以通過VisualStudio幫助開發者進行這重復的工作。

  • 空白處點擊一下,會出現一個小工具圖標

2fb0779f1f0671225de98a3dfb12d3f0.png

  • 點擊小工具,選擇生成構造函數。

227d2ec5f1db94ea33ac3814639b9bcb.png

  • 選擇需要作為構造函數的參數

98a2c975b11d97d83ec74074d8818be3.png

  • 生成代碼如下

public Configinfo(int appType, string appName, string appSecretKey, string clientVersion, string updateUrl, string updateLogUrl, string installPath, string mainUpdateUrl, string mainAppName){AppType = appType;AppName = appName ?? throw new ArgumentNullException(nameof(appName));AppSecretKey = appSecretKey ?? throw new ArgumentNullException(nameof(appSecretKey));ClientVersion = clientVersion ?? throw new ArgumentNullException(nameof(clientVersion));UpdateUrl = updateUrl ?? throw new ArgumentNullException(nameof(updateUrl));UpdateLogUrl = updateLogUrl ?? throw new ArgumentNullException(nameof(updateLogUrl));InstallPath = installPath ?? throw new ArgumentNullException(nameof(installPath));MainUpdateUrl = mainUpdateUrl ?? throw new ArgumentNullException(nameof(mainUpdateUrl));MainAppName = mainAppName ?? throw new ArgumentNullException(nameof(mainAppName));}

技巧2 Debug調試根據堆棧進行查找到代碼調用

在調式中我們通常都是按F10或者F11進行調試,如果代碼數量較少那么調試起來是非常簡單的。如果代碼多或者代碼中方法內部不會集中很多其他的方法,這時候我們往往會忘記上一步是由哪個地方跳轉過來的從而導致我們暈頭轉向,這個時候我們就需要利用VisualStudio中的堆棧信息進行輔助幫助我們思路清晰的查看代碼的調用鏈路。

示例代碼如下:

internal class Class1{public void Test() {var local = PublicMethod(new Juster(18));Console.WriteLine(local);}public static double PublicMethod(Juster juster) {double result = GetScale(in juster);return result + result;}private static double GetScale(in Juster input) => input.Age * input.Age;}

調用代碼:

static void Main(string[] args){Class1 class1 = new Class1();class1.Test();Console.WriteLine();}

這個時候假設我們需要調試class1中的三個方法,打上三個斷點。

d08f47043bcedba34fe5c8bcee261a8a.png

這個時候我們運行到最后一個方法時,假設代碼內容非常復雜這個時候我們已經暈了。這時候就需要打開“堆棧調用”的窗口,查看具體的調試信息。

8ae4396b0f647c5219764034cfa32bc8.png

然后根據堆棧信息逐步往后看。我們從下往上逐步雙擊堆棧信息,VisualStudio會自動幫助我們把關注點跳轉到對應的代碼行數也就是“發生地”。

6a28cc0142ada65e3d8141a6c7b22999.png

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

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

相關文章

js將時間戳格式化為HH:ii:ss的格式

將時間戳格式化為 HH:ii:ss的格式 <html> <head> </head> <body><span id"time"></span><script>var timestamp Date.parse(new Date())/1000;var time_old Date.parse(new Date())/1000;timeAdd()/*** purpose : …

Struts 整合 SpringMVC

Struts 整合 SpringMVC 過程&#xff1a;這篇文章是我在整合過程中所做的記錄和筆記 web.xml &#xff1a;篩選器機制過濾 原機制是攔截了所有 url &#xff0c;即 <url-pattern>/*</url-pattern>新機制為了將 structs2 的 url 與 SpringMVC 的 url 區分開來&#…

Vue保持用戶登錄及權限控制

vue-router-power-demo 核心內容有兩點&#xff1a; 一是保持用戶登錄狀態&#xff0c;二是根據登錄用戶的角色動態掛在路由 使用vuex保持用戶登錄 點擊登錄按鈕&#xff0c;使用vuex的actions分發登錄操作&#xff0c;發送用戶名和密碼到后臺獲取登錄token&#xff0c; 并存…

java B2B2C Springcloud多租戶電子商城系統-Spring Cloud Sleuth

在微服務框架中&#xff0c;一個由客戶端發起的請求在后端系統中會經過多個不同的的服務節點調用來協同產生最后的請求結果&#xff0c;每一個前段請求都會形成一條復雜的分布式服務調用鏈路&#xff0c;鏈路中的任何一環出現高延時或錯誤都會引起整個請求最后的失敗。 愿意了解…

C#性能測試BenchmarkDotnet

1.簡介在我們開發高性能代碼時&#xff0c;需要各種針對性能優化進行編碼。那么如何才能知道我們所加的代碼是否有性能方面的正向優化呢&#xff1f;有了BenchmarkDotNet&#xff0c;做性能對比測試就非常容易了&#xff0c;只需要把你的測試方法加上特性[Benchmark], 想做不同…

Requests獲取連接的IP地址

在接口自動化的時候&#xff0c;需要獲取到連接的本地IP地址&#xff0c;方法如下 1 import requests 2 3 rsp requests.get("http://www.baidu.com", streamTrue) 4 print rsp.raw._connection.sock.getpeername()[0] 5 print rsp.raw._connection.sock.getsockna…

阿里云APP(V4.3) SSH遠程登錄功能設置操作指南

阿里云APP V4.3 發布了&#xff0c;這次的升級&#xff0c;不僅在iOS和android平臺上支持SSH遠程登錄ECS功能&#xff0c;也支持密鑰登錄哦~~~ SSH遠程登錄&#xff0c;這是一個連阿里巴巴自己的技術人員都開心不已的功能&#xff01; 各位攻城獅們&#xff0c;從更新到V4.3的那…

JS專題之節流函數

本文共 2000 字&#xff0c;讀完只需 8 分鐘上一篇文章講了去抖函數&#xff0c;然后這一篇講同樣為了優化性能&#xff0c;降低事件處理頻率的節流函數。 一、什么是節流&#xff1f; 節流函數&#xff08;throttle&#xff09;就是讓事件處理函數&#xff08;handler&#xf…

vue 2.6 插槽v-slot用法記錄

v-slot用法簡記用法示例匿名插槽與具名插槽插槽作用域組件使用插槽動態命名總結用法示例 vue2.6統一了插槽的語法v-slot 匿名插槽與具名插槽 在其他組件中使用child組件 <child><template v-slot:slotName>hello world</template> </child>child組…

Latex排版全解(轉)

Latex排版全解 http://blog.csdn.net/langb2014/article/details/51354238轉載于:https://www.cnblogs.com/yifdu25/p/8338399.html

git-ftp Can't access remote 'ft://...', exiting...問題記錄

環境 服務器&#xff1a;西部數碼虛擬主機 本地系統&#xff1a;windows 10 (LTSC 2019) 軟件&#xff1a; Git Bash&#xff0c;gti-ftp (版本1.6.0) 問題 在使用git ftp init初始化上傳代碼的時候會出現 $ git ftp init fatal: Cant access remote ftp://dmkt:***dmkt.goto…

【Flutter教程】從零構建電商應用(一)

在這個系列中&#xff0c;我們將學習如何使用google的移動開發框架flutter創建一個電商應用。本文是flutter框架系列教程的第一部分&#xff0c;將學習如何安裝Flutter開發環境并創建第一個Flutter應用&#xff0c;并學習Flutter應用開發中的核心概念&#xff0c;例如widget、狀…

為OWA自定義快捷鍵

這篇短文分享一下如何為自己常用的網頁添加自定義功能&#xff0c;例如添加快捷鍵。我這里用一個常用的網站作為范例。它是Outlook Web Access (OWA), 它的地址一般如下。我在寫郵件時希望能用一些快捷鍵來提高工作效率&#xff0c;但系統默認自帶的快捷鍵特別少&#xff0c;而…

數據結構 快速排序

快速排序是對冒泡排序的一種改進&#xff0c;是所有內部排序算法中平均性能最優的排序算法。其基本思想是基于分治法的&#xff1a;在待排序數組L[1...n]中任取一個元素pivot作為基準&#xff0c;從數組的兩端開始掃描。設兩個指示標志&#xff08;low指向起始位置&#xff0c;…

Finally語句塊的運行

一、finally語句塊是否一定運行&#xff1f; Java中異常捕獲機制try...catch...finally塊中的finally語句是不是一定會被運行&#xff1f;非常多人都說不是。當然他們的回答是正確的&#xff0c;經過試驗。至少下面有兩種情況下finally語句是不會被運行的&#xff1a; &#xf…

vue-cli 3.0 跨域請求代理

官方文檔中指明&#xff0c;跨域請求可以通過配置vue.config.js中的devServer.proxy選項來進行配置。 這個選項配置的本質實際上就是http-proxy-middleware中間件的用法&#xff0c;和Webpack-dev-server的proxy一樣。 vue-cli 3.0中介紹了兩種常見的用法&#xff1a; modul…

小米人員架構調整:組建中國區,王川任總裁

12月13日上午&#xff0c;小米內部發布人員調整公開信&#xff0c;信中傳達了兩個重要內容&#xff1a;將銷售與服務部改組為中國區&#xff0c;任命集團高級副總裁王川兼任中國區總裁。 在今年9月份&#xff0c;也就是小米上市前夕&#xff0c;雷軍在一封內部信中宣布對公司組…

在 .NET 7上使用 WASM 和 WASI

WebAssembly&#xff08;WASM&#xff09;和WebAssembly System Interface&#xff08;WASI&#xff09;為開發人員開辟了新的世界。.NET 開發人員在 Blazor WebAssembly 發布時熟悉了 WASM。Blazor WebAssembly 在瀏覽器中基于 WebAssembly 的 .NET 運行時上運行客戶端。WASI通…

Java基礎 五 方法

方法 1.1 方法概述 在我們的日常生活中&#xff0c;方法可以理解為要做某件事情&#xff0c;而采取的解決辦法。 如&#xff1a;小明同學在路邊準備坐車來學校學習。這就面臨著一件事情&#xff08;坐車到學校這件事情&#xff09;需要解決&#xff0c;解決辦法呢&#xf…

django rest framework 過濾 lim分頁

一.過濾 1.首先引用diango 自帶的過濾配置 2.導入模塊 from django_filters.rest_framework import DjangoFilterBackend from django_filters import rest_framework as filters 3.一種簡單的過濾: class BookView(ModelViewSet):queryset Book.objects.all()serializer_clas…