C#關鍵字的使用

params object[]?用于函數多參數的定義
public static void Write(string format, params object[] arg);
explicit?關鍵字用于聲明必須使用強制轉換來調用的用戶定義的類型轉換運算符。?例如,在下面的示例中,此運算符將名為 Fahrenheit 的類轉換為名為 Celsius 的類:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace EventDemo
{class Celsius{private float degrees;public Celsius(float temp){degrees = temp;}public static explicit operator Fahrenheit(Celsius c){return new Fahrenheit((9.0f / 5.0f) * c.degrees + 32);}public float Degrees{get { return degrees; }}}class Fahrenheit{private float degrees;public Fahrenheit(float temp){degrees = temp;}// Must be defined inside a class called Fahrenheit:public static explicit operator Celsius(Fahrenheit fahr){return new Celsius((5.0f / 9.0f) * (fahr.degrees - 32));}public float Degrees{get { return degrees; }}}class Program{static void Main(){Fahrenheit fahr = new Fahrenheit(100.0f);Console.Write("{0} Fahrenheit", fahr.Degrees);Celsius c = (Celsius)fahr;Console.Write(" = {0} Celsius", c.Degrees);Fahrenheit fahr2 = (Fahrenheit)c;Console.WriteLine(" = {0} Fahrenheit", fahr2.Degrees);Console.ReadLine();}}
}
View Code

?

implicit?關鍵字用于聲明隱式的用戶定義類型轉換運算符。?如果可以確保轉換過程不會造成數據丟失,則可使用該關鍵字在用戶定義類型和其他類型之間進行隱式轉換

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace EventDemo
{class Digit{public Digit(double d) { val = d; }public double val;// ...other members// User-defined conversion from Digit to doublepublic static implicit operator double(Digit d){return d.val;}//  User-defined conversion from double to Digitpublic static implicit operator Digit(double d){return new Digit(d);}}class Program{static void Main(string[] args){Digit dig = new Digit(7);//This call invokes the implicit "double" operatordouble num = dig;//This call invokes the implicit "Digit" operatorDigit dig2 = 12;Console.WriteLine("num = {0} dig2 = {1}", num, dig2.val);Console.ReadLine();}}
}
View Code

?

使用?operator?關鍵字來重載內置運算符,或提供類或結構聲明中的用戶定義轉換。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace EventDemo
{class Fraction{int num, den;public Fraction(int num, int den){this.num = num;this.den = den;}// overload operator +public static Fraction operator +(Fraction a, Fraction b){return new Fraction(a.num * b.den + b.num * a.den,a.den * b.den);}// overload operator *public static Fraction operator *(Fraction a, Fraction b){return new Fraction(a.num * b.num, a.den * b.den);}// user-defined conversion from Fraction to doublepublic static implicit operator double(Fraction f){return (double)f.num / f.den;}}class Program{static void Main(){Fraction a = new Fraction(1, 2);Fraction b = new Fraction(3, 7);Fraction c = new Fraction(2, 3);Console.WriteLine((double)(a * b + c));Console.ReadLine();}}
}
View Code
按引用傳遞參數 -- 關鍵字ref

和前面的“按值傳遞”相對應的是按引用傳遞。顧名思義,這里傳遞的不在是值,而是引用。注意這里不是傳遞一個復制品了,而是將真實的自己傳到方法中供方法玩弄。

  注意點:

  1、按引用傳遞的參數,系統不再為形參在托管棧中分配新的內存。

  2、此時,形參名其實已經成為實參名的一個別名,它們成對地指向相同的內存位置。

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Timers;namespace AllDemo
{public class Program{static void Main(string[] args){int i = 1;int j = 2;int k = Plus(ref i, ref j);      //實參前也要加ref關鍵字Console.WriteLine(i);   //輸出 2Console.WriteLine(j);   //輸出 3Console.WriteLine(k);   //輸出 5
Console.ReadKey();}public static int Plus(ref int i, ref int j)    //形參錢要加ref關鍵字
        {i = i + 1;j = j + 1;return i + j;}}
}
View Code
輸出參數 - 關鍵字out

輸出參數和引用參數有一定程度的類似,輸出參數可用于將值從方法內傳遞到方法外,實際上就相當于有多個返回值。要使用輸出參數只需要將引用參數的ref關鍵字替換為out關鍵字即可。但又一點必須注意,只有變量才有資格作為輸出參數,文本值和表達式都不可以,這點要謹記。

  注意兩個問題:

  1、編譯器允許在方法中的任意位置、任意時刻讀取引用參數的值。

  2、編譯器禁止在為輸出參數賦值前讀取它。

  這意味著輸出參數的初始值基本上是沒意義的,因為它在使用前要被賦予新的值。因此想通過輸出參數將值傳入方法的路是行不通的。

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Timers;namespace AllDemo
{public class Program{static void Main(string[] args){int i = 1;int j = 2;int k = Plus(i, out j);      //實參前也要加out關鍵字Console.WriteLine(i);   //輸出 1Console.WriteLine(j);   //輸出 100Console.WriteLine(k);   //輸出 102
Console.ReadKey();}public static int Plus(int i, out int j){i = i + 1;j = 100;return i + j;}}
}
View Code

參數數組 - 關鍵字params

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Timers;namespace AllDemo
{public class Program{static void Main(string[] args){int count1 = Plus(1);       //輸出 1
            Console.WriteLine(count1);int count2 = Plus(1, 2, 3);//輸出 6
            Console.WriteLine(count2);int count3 = Plus();    //輸出 0  參數數組本身可選,沒傳入值也不會出錯
            {Console.WriteLine(count3);}Console.ReadKey();}public static int Plus(params int[] values){int count = 0;foreach (int i in values){count = count + i;}return count;}}
}
View Code

?

?

轉載于:https://www.cnblogs.com/scmail81/p/8678757.html

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

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

相關文章

maven 中 pom.xml 配置文件標簽說明,dependencyManagement和dependencies區別

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 參考:http://zhaoshijie.iteye.com/blog/2094478http://blog.csdn.net/cpf2016/article/details/45674377 還有一篇轉載文章…

學成在線--17.我的課程

文章目錄一.需求分析二.API接口三.PageHelper1.PageHelper介紹2.添加依賴3.配置pageHelper四.Dao1.mapper 接口2.mapper.xml映射文件3.測試Dao五.Service六.Controller七.前端1.創建course_list.vue2.路由3.定義API方法4.前端視圖course_list.vue詳解1)API調用--在視…

碼是數據系統中的基本概念。所謂碼就是能唯一標識實體的屬性或屬性集合,他是整個實體集的性質,而不是單個實體的性質。 主屬性與非主屬性 包含在任何一個候選碼中的屬性 ,稱為主屬性(Prime attribute)。 不包含在任何…

關于C編程的一點感受

剛畢業的時候用了兩個多月的C語言編程,總的來說對它還是很有感受的,C是一個過程式語言,沒有像C,Java等OOP語言這樣那樣的一系列的規則和限制;它比較靈活,簡潔,高效;這些是給我的印象最深的。這是…

如何打造高效的多任務、高并發的網絡服務器系統?

同一個功能的軟件,不同的團隊,不同工程師去實現,肯定是千差萬別,甚至從根本上完全不同。所以軟件開發在未來很長時間內仍然是一項工匠的手工勞動,尤其像多任務,高并發,偏底層這種對實現技巧比較…

BZOJ.2780.[SPOJ8093]Sevenk Love Oimaster(廣義后綴自動機)

題目鏈接 \(Description\) 給定n個模式串,多次詢問一個串在多少個模式串中出現過。(字符集為26個小寫字母) \(Solution\) 對每個詢問串進行匹配最終會達到一個節點,我們需要得到這個節點所代表的子串出現在多少個模式串中。 建立廣義后綴自動機。每次插入…

BigDecimal 加減乘除運算

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 java.math.BigDecimal。BigDecimal一共有4個夠造方法,讓我先來看看其中的兩種用法: 第一種:BigDeci…

主碼 超碼 候選碼

碼是數據系統中的基本概念。所謂碼就是能唯一標識實體的屬性,他是整個實體集的性質,而不是單個實體的性質。它包括超碼,候選碼,主碼。   超碼是一個或多個屬性的集合,這些屬性可以讓我們在一個實體集中唯一地標識一…

學成在線--18.新增課程(課程分類查詢)

文章目錄一.需求分析二.課程分類查詢介紹三.數據結構四.數據格式五.數據模型六.Api接口七.服務器端1.Dao1)定義mapper2)定義mapper映射文件2.Service3.Controller八.接口測試一.需求分析 用戶操作流程如下: 1、用戶進入“我的課程”頁面&…

給程序員們的工資報價提醒

在薪水上討價還價的方式有很多種,我要說的這一點也許并不是最好的。然而,如果使用的得當,會收到很好的效果。如果你正在跟一家公司接觸(沒有經過職業中介),而且事情看來很順利,進度很快,你要保持這種面試的…

POI 方式-excle 表格導出實現-java-poi

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 效果&#xff1a; jsp 頁面 用的Bootstrap &#xff1a; <li class"dropdown"> <a href"javascript:void(0)…

02-css的選擇器

css的選擇器&#xff1a;1.基本選擇器 2.高級選擇器 基本選擇器包含&#xff1a; 1.標簽選擇器標簽選擇器可以選中所有的標簽元素&#xff0c;比如div&#xff0c;ul&#xff0c;li &#xff0c;p等等&#xff0c;不管標簽藏的多深&#xff0c;都能選中&#xff0c;選中的是所有…

iphoneX樣式兼容

// 1.viewport meta 標簽增加屬性viewport-fitcover // 2.body元素增加樣式 body { padding-bottom: constant(safe-area-inset-bottom); padding-bottom: env(safe-area-inset-bottom); } // 3.如有fixed底部的元素&#xff0c;也增加上面樣式 xxx { padding-bottom: constant…

學成在線--19.新增課程(數據字典)

文章目錄一.介紹二.數據模型三.數據模型類四.字典查詢API接口五.服務器端1.Dao2.Service3.Controller一.介紹 在新增課程界面需要選擇課程等級、課程狀態等&#xff0c;這些信息統一采用數據字典管理的方式。 本項目對一些業務的分類配置信息&#xff0c;比如&#xff1a;課程…

范式簡介

范式是符合某一種級別的關系模式的集合。關系數據庫中的關系必須滿足一定的要求。滿足不同程度要求的為不同范式。范式的種類&#xff1a; 第一范式(1NF) 第二范式(2NF) 第三范式(3NF) BC范式(BCNF) 第四范式(4NF) 第五范式(5NF) 一個低一級范式的關系模式&#xff0c;通過模…

程序員的進化

對于很多同學來說&#xff0c;他們對程序員的職業生涯非常關注。而這本質上是一個進化的過程。我們將如何進化&#xff1f;在每個進化階段我們應該如何提高自己&#xff1f;下面的文章根據我自己的切身經歷和閱讀過的書&#xff0c;為程序員每個階段的進化提供了不同的學習思路…

【樹形dp】vijos1144小胖守皇宮

細節很精妙 描述 huyichen世子事件后&#xff0c;xuzhenyi成了皇上特聘的御前一品侍衛。 皇宮以午門為起點&#xff0c;直到后宮嬪妃們的寢宮&#xff0c;呈一棵樹的形狀&#xff1b;某些宮殿間可以互相望見。大內保衛森嚴&#xff0c;三步一崗&#xff0c;五步一哨&#xff0c…

手機號碼歸屬地及運營商查詢

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL;public class NewMobile {public stati…

redhat6.5手動配置網絡

2、手動設置ip地址如果虛擬機不能自動獲取IP&#xff0c;只能手動配置&#xff0c;配置方法如下&#xff1a;輸入命令#vi /etc/sysconfig/network-scripts/ifcfg-eth0 [編輯網卡的配置文件]輸入上述命令后回車&#xff0c;打開配置文件&#xff0c;使用方向鍵移動光標到最后一行…

學成在線--20.新增課程(最后完善)

文章目錄一.效果展示二.服務端1.Api接口2.Dao3.Service4.Controller三.前端1.頁面完善1&#xff09;創建course_add.vue頁面2&#xff09;course_add.vue頁面路由3&#xff09;course_list.vue中添加鏈接2.查詢數據字典1&#xff09;視圖中代碼2&#xff09;定義Api方法3&#…