C# 2018.9.17
C# 2018.9.17
C#的優(yōu)點(diǎn):
1,不會有運(yùn)行時(shí)崩潰,解決了C++的痛點(diǎn)一,難預(yù)防,難查錯(cuò)
2,使用文件不需要包含進(jìn)來,只需要using namespace即可,解決了C++的痛點(diǎn)二,包含復(fù)雜,路徑復(fù)雜,編譯復(fù)雜
3,編譯速度極快,解決了C++的痛點(diǎn)三
4,庫代碼易懂,智能提示好。
std::map<int, <error-type>, std::less<int>, std::allocator<std::pair<const int, <error-type>>>>
5,對于中小應(yīng)用極其方便,因?yàn)閮?nèi)存托管
6,完善,豐富,易用,高效的各種功能庫:線程,網(wǎng)絡(luò),數(shù)據(jù)庫,窗口編程庫
7,強(qiáng)大的語言新特性:lambda,委托,正則,局部函數(shù),閉包,linq,
6,簡潔,易用,功能全,開發(fā)效率高,是生產(chǎn)利器
7,有U3D光環(huán)加成,微軟親兒子,非常適合用于游戲開發(fā),兼具了運(yùn)行效率與開發(fā)效率,兼合了C++,LUA的功能
readonly : 運(yùn)行時(shí)常量,僅能在定義時(shí)初始化或在構(gòu)造函數(shù)中被初始化,
它僅指對象本身不能被改變,但對象內(nèi)部數(shù)據(jù)可以被改變,這是不同于C++常引用的地方,C#沒有常引用類似的功能
const: 編譯時(shí)常量
as 與強(qiáng)制類型轉(zhuǎn)換:
as 只能用在類或結(jié)構(gòu)上,有父子關(guān)系
as 要比強(qiáng)制類型轉(zhuǎn)換安全,效率高。為什么效率高?try-catch
如何比較兩個(gè)變量的內(nèi)存地址是否相同? referenceEquals
靜態(tài)構(gòu)造函數(shù),
1,在類的靜態(tài)變量第一次被使用時(shí)調(diào)用。
2,不能直接被調(diào)用
3,靜態(tài)構(gòu)造函數(shù)必須無參
靜態(tài)構(gòu)造函數(shù)機(jī)制實(shí)現(xiàn)線程安全的單例:
//方式一,
public static CSingleTest inst;
static CSingleTest()
{
inst = new CSingleTest();
}
CSingleTest()//這里有什么用???
{
Console.WriteLine("constructor");
}
//方式二
public static CSingleTest inst = new CSingleTest();
static CSingleTest()
{
Console.WriteLine("static constructor");
}
CSingleTest()//這里有什么用???
{
Console.WriteLine("constructor");
}
線程同步機(jī)制:對象鎖
class safetySingletonByLock
{
object _lock = new object();
public static safetySingletonByLock inst;
safetySingletonByLock()
{
if(null == inst)
{
lock (_lock)
{
if (null == inst)
inst = new safetySingletonByLock();
}
}
}
}
結(jié)構(gòu)體相等比較,默認(rèn)情況下是如何比較的??? 內(nèi)容對比,如何驗(yàn)證? 隨著數(shù)據(jù)復(fù)雜性提升而變慢,而引用類型則不會這樣
為什么不是地址比較???? 值類型
構(gòu)造函數(shù)可以被主動調(diào)用
子類的每個(gè)構(gòu)造函數(shù)默認(rèn)都會調(diào)用父類的無參構(gòu)造函數(shù)
一個(gè)構(gòu)造函數(shù)最多只能調(diào)用一個(gè)構(gòu)造函數(shù),這個(gè)被調(diào)用的構(gòu)造函數(shù)可以是本類的,父類的
根據(jù)以上原理,常見的問題:
1,父類僅有帶參構(gòu)造函數(shù)時(shí),子類構(gòu)造函數(shù)必須主動調(diào)用父類構(gòu)造函數(shù)
class xbase{
protected xbase(float fx){}
}
class child : xbase {
public float fx;
public xbase() : base(1)//必須調(diào)用父類構(gòu)造函數(shù)
,this(2)//error,只能調(diào)用一個(gè)構(gòu)造函數(shù)
,fx(2); //error, C++初始化列表方式不再支持
{
}
public xbase(float fx){}
}
泛型問題
?
posted on 2018-09-17 16:35 時(shí)空觀察者9號 閱讀(...) 評論(...) 編輯 收藏
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的C# 2018.9.17的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个疑问
- 下一篇: C#开发VS LUA开发