日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#与C++的几个不同之处知识点

發(fā)布時(shí)間:2025/3/14 C# 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#与C++的几个不同之处知识点 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.索引器

索引器是C#自創(chuàng)的內(nèi)容,這是C++當(dāng)中沒有的內(nèi)容,所以做一次筆記.

索引器是用于書寫一個(gè)可以通過使用[]想數(shù)組一樣直接訪問集合元素的方法。我們只需要指定待訪問實(shí)例或元素的索引。索引器的語法和類屬性語法相同,除了接受作為元素索引的輸入?yún)?shù)外。

class SampleCollection<T> {// 聲明一個(gè)數(shù)組來存儲(chǔ)數(shù)據(jù)元素。private T[] arr = new T[100];// 定義索引器,它允許客戶機(jī)代碼   / /類實(shí)例上使用[]符號(hào)本身。   / /下面的代碼主要(參見第2行。) public T this[int i]{get{//這個(gè)索引器非常簡(jiǎn)單,僅僅返回或設(shè)置   //數(shù)組從內(nèi)部相應(yīng)的元素。return arr[i];}set{arr[i] = value;}} }//program類顯示了客戶端代碼使用索引器。 class Program {static void Main(string[] args){// 聲明SampleCollection類型的一個(gè)實(shí)例。SampleCollection<string> stringCollection = new SampleCollection<string>();// 使用[]符號(hào)的類型。stringCollection[0] = "Hello, World";System.Console.WriteLine(stringCollection[0]);} }

?

?2.拆箱與裝箱

裝箱:所謂裝箱是將一個(gè)原始類型或基礎(chǔ)類型對(duì)象賦給一個(gè)object對(duì)象,object是C#基類,所有類都繼承自object類

拆箱:反之,拆箱是將一個(gè)事先裝箱過的object對(duì)象強(qiáng)制轉(zhuǎn)換為目標(biāo)對(duì)象。

例如:

class Test {static void Main(){int mInt;object obj=mInt;//裝箱int myInt=(int) obj;//拆箱 } }

3.參數(shù)的按值傳遞與按引用傳遞

在C#當(dāng)中,按值傳遞與C++是一樣的,這里不做介紹了;主要說一下按引用傳遞。

C#使用關(guān)鍵字ref指定引用參數(shù),在形參中使用ref的同時(shí),在實(shí)參中也要用ref,否則將出現(xiàn)編譯錯(cuò)誤,另外你不能將一個(gè)沒用初始化的對(duì)象按引用傳遞給函數(shù)。

例如:

class TestRef {int a=5;myMethod(ref a);//use func by ref .........void myMethod(ref int a){//function block } }

4.輸出參數(shù)

輸出參數(shù)只是從函數(shù)返回值的參數(shù),輸入值不要求。C#使用關(guān)鍵詞out表示輸出參數(shù)。

例如:

class TestOut {int val;getNodeValue(val);..........bool getNodeValue(out int val){val = value;return true;}

5.可變數(shù)量的參數(shù)和數(shù)組

C#中的數(shù)組使用關(guān)鍵詞param進(jìn)行傳遞,一個(gè)數(shù)組類型的參數(shù)必須總是函數(shù)最右邊的參數(shù).可以傳遞任意數(shù)量的的元素作為數(shù)組類型的參數(shù)。

例如:

class TestArray{void func(param int []array){print(array.length);}func(1);//輸出1 func();//輸出0 func(7,9,4);//輸出3 func(new int[]array {4,6,7,3,5});//輸出5int []array2=new int[]{4,5,6,1,2,3};func(array2);//輸出6 }

6.運(yùn)算符與表達(dá)式

?is關(guān)鍵字:

is關(guān)鍵字的作用是檢查目標(biāo)對(duì)象與給定對(duì)象是否兼容;如果所提供的表達(dá)式非空,并且所提供的對(duì)象可以強(qiáng)制轉(zhuǎn)換為所提供的類型而不會(huì)導(dǎo)致引發(fā)異常,則?is?表達(dá)式的計(jì)算結(jié)果將是?true。

?例如:

class test1{} class test2{} class test3: test2{}class isTest {test1 t1;test2 t2;static void Test(object obj){if(obj is t1){print("obj is test1 classes");t1 = (test1)obj;}else if(obj is t2){print("obj is test2 classes);t2 = (test2)obj;}else{print("obj not is test1 and test2");} }static void Main(){test1 T1=new test1();test2 T2 = new test2();test3 T3 = new test3();test(T1);test(T2);test(T3);test("my test content");} }

as關(guān)鍵字:

?as關(guān)鍵字類似于C++強(qiáng)制類型轉(zhuǎn)換,但是如果強(qiáng)制轉(zhuǎn)換不成功,as將返回null而不引發(fā)異常。

例如:

namespace MyFirstApp {class Base{public override string ToString(){return "base";}}class Device : Base{public delegate void GetVisiter(string name);}class Program{ static int Main(){Device de = new Device();Base b = de as Base;if(de != null){System.Console.WriteLine(de.ToString());}return 0;}} }

表達(dá)式:

expression as type

和下面的代碼是一樣的效果,說明as關(guān)鍵字是通過is來實(shí)現(xiàn)的

expression is type ? (type)expression : (type)null

?sealed 關(guān)鍵詞

被sealed修飾的類不能被實(shí)例化

7.接口類interface

在C#當(dāng)中不引許多繼承,多繼承應(yīng)該考慮把基類聲明為interface,并且在interface聲明封裝的類中,不引許函數(shù)的實(shí)現(xiàn),只能寫出聲明,就像C++的頭文件,函數(shù)的實(shí)現(xiàn)留給派生類或結(jié)構(gòu)去實(shí)現(xiàn)。

例如:

//interface interface Equatable<T> {bool Equals(T obj);//只能寫出函數(shù)聲明 }// public class TestEquals : Equatable<TestEquatable> {public string Make { get; set; }public string Module { get; set; }public string Year { get; set; }public bool Equals(TestEquals te)//實(shí)現(xiàn)基類當(dāng)中的Equals函數(shù) {if(this.Make==te.Make &&this.Module==te.Module &&this.Year==te.Year){return true;}else{return flase} }

注意:

接口具有下列屬性:

  • 接口與抽象基類。?實(shí)現(xiàn)接口的任何類或結(jié)構(gòu)必須實(shí)現(xiàn)其所有成員的鏈接。

  • 接口不能直接實(shí)例化。?其成員通過實(shí)現(xiàn)接口的任何類或結(jié)構(gòu)實(shí)現(xiàn)。

  • 接口可以包含事件、索引器、方法和屬性。

  • 接口不包含方法的實(shí)現(xiàn)。

  • 類或結(jié)構(gòu)可以實(shí)現(xiàn)多個(gè)接口。?類可以繼承基類并實(shí)現(xiàn)一個(gè)或多個(gè)接口

轉(zhuǎn)載于:https://www.cnblogs.com/Leekin/p/5813087.html

與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的C#与C++的几个不同之处知识点的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。