c#方法

来源:https://www.cnblogs.com/ouyangkai/archive/2020/04/23/12759501.html
-Advertisement-
Play Games

c 方法 一個方法是把一些相關的語句組織在一起,用來執行一個任務的語句塊。 方法簽名 通過指定在 或 中聲明方法: 可選的訪問級別,如 或 。 預設值為 。 可選的修飾符,如 或 。 返回值,或 (如果該方法不具有)。 方法名。 任何方法參數。 方法參數在括弧內,並且用逗號分隔。 空括弧指示方法不需 ...


c#方法

一個方法是把一些相關的語句組織在一起,用來執行一個任務的語句塊。

方法簽名

通過指定在 classstruct 中聲明方法:

  • 可選的訪問級別,如 publicprivate。 預設值為 private
  • 可選的修飾符,如 abstractsealed
  • 返回值,或 void(如果該方法不具有)。
  • 方法名。
  • 任何方法參數。 方法參數在括弧內,並且用逗號分隔。 空括弧指示方法不需要任何參數。

C# 中定義方法

當定義一個方法時,從根本上說是在聲明它的結構的元素。在 C# 中,定義方法的語法如下:

<Access Specifier> <Return Type> <Method Name>(Parameter List)
{
   Method Body
}

方法的各個元素:

  • Access Specifier:訪問修飾符,這個決定了變數或方法對於另一個類的可見性。
  • Return type:返回類型,一個方法可以返回一個值。返回類型是方法返回的值的數據類型。如果方法不返回任何值,則返回類型為 void
  • Method name:方法名稱,是一個唯一的標識符,且是大小寫敏感的。它不能與類中聲明的其他標識符相同。
  • Parameter list:參數列表,使用圓括弧括起來,該參數是用來傳遞和接收方法的數據。參數列表是指方法的參數類型、順序和數量。參數是可選的,也就是說,一個方法可能不包含參數。
  • Method body:方法主體,包含了完成任務所需的指令集。

下麵的類包含三個方法:

abstract class Motorcycle
{
    public void StartEngine() { }
    protected void AddGas(int gallons) {  }
    public virtual int Drive(int miles, int speed) {  return 1; }
    public abstract double GetTopSpeed(); 
}

方法訪問(調用)

在對象上調用方法類似於訪問欄位。 在對象名稱之後,依次添加句點、方法名稱和括弧。 參數在括弧內列出,並用逗號隔開。 因此,可以按以下示例中的方式調用 Motorcycle 類的方法:

class TestMotorcycle : Motorcycle
{
    public override double GetTopSpeed()
    {
        return 108.4;
    }
    static void Main()
    {
        TestMotorcycle moto = new TestMotorcycle();
        moto.StartEngine();
        moto.AddGas(15);
        moto.Drive(5, 20);
        double speed = moto.GetTopSpeed();
        Console.WriteLine("My top speed is {0}", speed);            
    }
}

參數傳遞

當調用帶有參數的方法時,您需要向方法傳遞參數。在 C# 中,有三種向方法傳遞參數的方式:

方式 描述
值參數 這種方式複製參數的實際值給函數的形式參數,實參和形參使用的是兩個不同記憶體中的值。在這種情況下,當形參的值發生改變時,不會影響實參的值,從而保證了實參數據的安全。
引用參數 這種方式複製參數的記憶體位置的引用給形式參數。這意味著,當形參的值發生改變時,同時也改變實參的值。
輸出參數 這種方式可以返回多個值。

返回值

方法可以向調用方返回值。 如果返回類型(方法名稱前列出的類型)不是 void,則方法可以使用 return 關鍵字來返回值。 如果語句中 return 關鍵字的後面是與返回類型匹配的值,則該語句將該值返回給方法調用方。 return 關鍵字還會停止方法的執行。 如果返回類型為 void,則可使用沒有值的 return 語句來停止方法的執行。 如果沒有 return 關鍵字,方法執行到代碼塊末尾時即會停止。 具有非 void 返回類型的方法才能使用 return 關鍵字返回值。

非同步方法

通過使用非同步功能,你可以調用非同步方法而無需使用顯式回調,也不需要跨多個方法或 lambda 表達式來手動拆分代碼。

非同步方法可以具有 TaskTask、 或 void 返回類型。 void 返回類型主要用於定義需要 void 返回類型的事件處理程式。 無法等待返回 void 的非同步方法,並且返回 void 方法的調用方無法捕獲該方法引發的異常。 從 C# 7.0 開始,非同步方法可以有任何類似任務的返回類型

在下麵的示例中,DelayAsync 是一個非同步方法,包含返回整數的 return 語句。 由於它是非同步方法,其方法聲明必須具有返回類型 Task。 因為返回類型是 TaskawaitDoSomethingAsync 表達式的計算將如以下 int result = await delayTask 語句所示得出整數。

using System;
using System.Diagnostics;
using System.Threading.Tasks;

public class Example
{
    // This Click event is marked with the async modifier.
    public static void Main()
    {
       DoSomethingAsync().Wait();
    }
    private static async Task DoSomethingAsync()
    {
        int result = await DelayAsync();
        Console.WriteLine("Result: " + result);
    }
    private static async Task<int> DelayAsync()
    {
        await Task.Delay(100);
        return 5;
    }
    // Output:
    //  Result: 5
}
// The example displays the following output:
//        Result: 5

非同步方法不能聲明任何 inrefout 參數,但是可以調用具有這類參數的方法。


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

-Advertisement-
Play Games
更多相關文章
  • Spark SQL原理解析前言: "Spark SQL源碼剖析(一)SQL解析框架Catalyst流程概述" 這一次要開始真正介紹Spark解析SQL的流程,首先是從Sql Parse階段開始,簡單點說,這個階段就是使用Antlr4,將一條Sql語句解析成語法樹。 可能有童鞋沒接觸過antlr4這個 ...
  • 最美人間四月天,春光不負趕路人。在充滿無限希望的明媚春天裡,一路風雨兼程的.NET團隊正奮力實現新的突破。 根據計劃,新一代基於WebAssembly 技術研發的前端SPA框架Blazor 將於5月19日在微軟Build大會升空。 目前,Blazor 的測試工作和火箭發射前各項準備工作在github ...
  • 現代程式員寫代碼沒有人敢說自己沒用過泛型,這個泛型模板T可以被任何你想要的類型替代,確實很魔法很神奇,很多人也習以為常了,但就是這麼有趣的泛型T底層到底是怎麼幫你實現的,不知道有多少人清楚底層玩法,這篇我就試著來分享一下,不一定全對哈。。。 一:沒有泛型前 現在的netcore 3.1和最新的.ne ...
  • 解決方式: 1.檢查iis托管模塊中是否有Session 2.在web.Config中的加上 <pages enableSessionState="true" /> ...
  • 1、創建Api項目 我用的是VS2019 Core3.1 。打開Vs2019 創建Asp.Net Core Web應用程式命名CoreWebApi 創建選擇API 在Controller文件夾下麵添加一個Api控制器 FileUp,修改Api的路由 [Route("api/[controller]/ ...
  • 普通調用方法 調用方法如下 須通過'DBTool.BeginTransaction()'開啟事務調用'tran.Complete()'提交事務,不調用'tran.Complete()'當using結束會自動回滾 註意'DBTool.BeginTransaction()'必須使用using 事務嵌套調 ...
  • c 類 當你定義一個類時,你定義了一個數據類型的藍圖。這實際上並沒有定義任何的數據,但它定義了類的名稱意味著什麼,也就是說,類的對象由什麼組成及在這個對象上可執行什麼操作。對象是類的實例。構成類的方法和變數成為類的成員。 聲明類 創建對象 通過使用 new 關鍵字(後跟對象將基於的類的名稱)可以創建 ...
  • 這是要爬的地址 https://www.iqiyi.com/manhua/detail_18yzlq8jc5.html,F12 查看網路發現他是通過 https://www.iqiyi.com/manhua/catalog/18yzlq8jc5/ 這個介面獲取目錄信息的。 這是第一話的地址 http ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...