簡體   English   中英

這兩種定義有什么區別?

[英]What is the difference between the two definitions?

string a = "var";
string b = new string("var");

我還有一個額外的問題,如何在不分配堆空間的情況下訪問第一個定義中的字符串類型變量?

.NET 框架 4.8:

第一個編譯; 第二個沒有,產生 CS1503 錯誤:

參數 1:無法從 'string' 轉換為 'char*'

這是因為String class 沒有接受string參數的構造函數。

.NET Core 2.1 及更高版本

第一個將文字分配給字符串變量。 第二個將字符串隱式轉換為ReadOnlySpan<char> ,然后調用接受ReadOnlySpan<char>實例的String構造函數,該實例將字符從原始字符串復制到新字符串,從而使 memory 的使用加倍。


至於您的第二個問題,由於String是一種引用類型,因此您不能在不分配堆空間的情況下分配實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM