C# 方法中的this引數
先看下面的程式碼:
public static class StringExtension { public static void Foo(this string s) { Console.WriteLine("Foo invoked for {0}", s); } }
為什麼這裡會有一個this關鍵字,做什麼用?其實這就是擴充套件方法!這個擴充套件方法在靜態類中宣告,定義一個靜態方法,其中第一個引數定義可它的擴充套件型別。Foo()方法擴充套件了String類,因為它的第一個引數定義了String型別,為了區分擴充套件方法和一般的靜態方法,擴充套件方法還需要給第一個引數使用this關鍵字。
現在就可以使用帶string型別的Foo方法了:
string s="Hello";
s.Foo();
結果在控制檯上顯示Foo invoked for Hello ,因為Hello是傳送給Foo方法的字串。
歸納:擴充套件方法可以寫入最初沒有提供該方法的類中。還可以把方法新增到實現某個介面的任何類中,這樣多個類可以使用相同的實現程式碼。
相關推薦
C# 方法中的this引數
先看下面的程式碼: public static class StringExtension { public static void Foo(this string s) { Console.WriteLine("Foo invoked
C#方法中的3個高階引數out和ref以及params
out 引數,在方法中使用out引數時,在方法裡面需要給其賦值,然後在返回出方法 ref 引數,引數在傳入方法之前,需要對該引數賦初值,ref引數可以理解為將一個值傳遞變為了引用傳遞 params 引數:如果方法有多個引數,那麼params這個關鍵字修飾的引數陣列需要在方法的最後一個引數
c/c++ main方法中的引數
int main(int argc, const char * argv[],char *envp[]) argc 是 argument count的縮寫,表示傳入main函式的引數個數; argv 是 argument vector的縮寫,表示傳入main函式的引
C#方法中參數ref和out的解析
執行方法 類型 容易 com line 錯誤 pan 系統 pro 一、C#方法中參數類型 有4種參數類型,有時候很難記住它們的不同特征,下圖對它們做一個總結,使之更容易比較和對照。 二、C#方法中的參數 1、值參數 使用值參數,通過復制實參的值到形參的方式把數
spring mvc中的控制器方法中的引數從哪裡傳進來?
編寫控制器方法的時候很奇怪,spring是怎麼知道你控制器方法的引數型別,並且注入正確的物件呢? 比如下面這樣 @RequestMapping(value="/register", method=GET) public String showRegistrationForm(Model mode
C語言中函式引數傳遞的兩種方式
問題及程式碼: /* *完成日期:2018.10.2 * *問題描述:c語言函式引數傳遞的兩種方式 * */ #include <stdio.h> void swap1(int x, int y); //對交換函式myswap1的提前宣告 (傳值
c++中this指標的理解(轉載:苦澀的茶 ——產品開發 C++類中this指標的理解)
先要理解class的意思。class應該理解為一種型別,象int,char一樣,是使用者自定義的型別。用這個型別可以來宣告一個變數,比如int x, myclass my等等。這樣就像變數x具有int型別一樣,變數my具有myclass型別。理解了這個,就好解釋this了,m
c# 方法的可變引數 params
今天筆者看了網上的很多關於基礎的可變引數的用法,說實話,以我的感覺很多人都沒有把這個問題說清楚。有一些所謂大神更是將陣列作為實參傳遞給一個可變引數作為可變引數的使用案例來講。雖然這也是可以的,但是遇到像我這樣的新手不禁會問:“如果只是將陣列傳遞給一個可變引數陣列,那麼完全不必用params關鍵字修飾
servlet中的方法和init方法中的引數
destroy:在servlet銷燬(伺服器關閉)時呼叫。 init:在servlet建立時呼叫,預設第一次訪問的時候被呼叫,但也可以通過配置可以實現伺服器啟動時呼叫,建立的物件會被快取起來。 init方法中的引數: public void init(ServletCo
c語言中可變引數的實現
(一) 寫一個簡單的可變引數的C函式 下面我們來探討,如何寫一個簡單的可變引數的C函式。寫可變引數的C函式要在程式中用到以下這些巨集: void va_start( va_list arg_ptr, prev_param ); type va_arg( va_list
C++類中this指標的含義
有下面的一個簡單的類:class CNullPointCall{public: staticvoid Test1(); void Test2(); void Test3(int iTest); void Test4();private: stat
golang struct結構體方法中的引數需要定義為指標型別
前幾日寫一個網頁的簡單計數器問題時發現,計數器居然永遠為0,計數器不計數,見鬼了。。。 程式碼如下: type Counter struct { n int } func (ctr Counter) ServeHTTP(c http.ResponseWriter, r
解析c語言中可變引數列表
c語言中的可變引數列是一個比較有意思的實現,通過將函式實現為可變引數的形式,可以使得函式可以接受1個以上的任意多個引數(不固定)。#include <stdio.h> #include <stdarg.h> int average(int n,.
c語言中可變引數中_INTSIZEOF(n)巨集的解釋
_INTSIZEOF(n) 定義: #define _INTSIZEOF(n) ((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) ) 1 我們知道對於IX86,sizeof(int)一定是4的整數倍,所以~(siz
第二週專案1-C/C++語言中函式引數傳遞的三種方式
問題及程式碼: /* * Copyright (c) 2016,煙臺大學計算機與控制工程學院 * All rights reserved. * 檔名稱:Cpp1.cpp * 作者:張相如 * 完成日期:2016年9月5日 * 版本號:v1.0 * * 問題
內部類訪問外部類方法中的引數-使用final
publicsynchronized<T extendsMetricsSource> T register(finalString name,finalString desc,final T source){if(this.monitoring){ reg
32.C#--方法中使用out參數做登錄判斷
判斷 一個 {0} else if name min () 結果 sta static void Main(string[] args){//分別提示用戶輸入用戶名和密碼//寫一個方法來判斷用戶輸入的是否正確//返回給用戶一個登陸結果,並且還要單獨的返回給用戶一個登陸信息/
33.C#--方法中ref參數的使用
rgs double main static void += con [] 使用 static void Main(string[] args){//方法中ref參數的使用,不考慮實用性,只講ref使用方法//用ref實現獎金+500double salary = 5000
34.C#--方法中params可變參數的使用
stat 個數 main [] static console line oid 一個數 static void Main(string[] args){ //用params參數求張三語數英成績總和int[] s = { 88, 90, 93 }; //定義一個數組存放
在自定義控制元件的過程中犯下的錯,在呼叫有三個引數的構造方法時this(context,null,0);第二個引數為空,在Activity中 findViewById找到對應的控制元件時
在自定義控制元件的過程中犯下的錯,在呼叫有三個引數的構造方法時this(context,null,0);第二個引數為空,在Activity中 findViewById找到對應的控制元件,在給控制元件設