![](/img/trans.png)
[英]System.String does not overload operator += But String Concatenation works, How?
[英]string alias works without System.String But String does not
我今天遇到了一個奇怪的困惑。 雖然我在這篇文章中讀到了C#中String和string之間的區別 :C#中String和string之間有什么區別? 。 但是當我嘗試在不使用命名空間System
情況下使用大寫字母的String
時,它無法識別。 喜歡
這段代碼有效,
using System;
String s = "";
但是如果不使用System
,它就會出錯。
而帶有小寫字母的string
可以使用和不使用System
命名空間。
如果String和string是相同的東西那么為什么一個只用它的命名空間和其他有和沒有命名空間的工作。
string
是一個C#構造,在編譯期間將其轉換為System.String
。
每個C#程序默認都有:
using string = System.String;
using char = System.Char;
using int = System.Int32;
using double = System.Double;
System.String
是類。 如果不能訪問System
命名空間,則不能使用String
類型(因此,要么完全限定為System.String
,要么使用using System;
指令)。
String
是System.String
的別名。 查看您在鏈接到的SO答案上獲得728分數的答案,以獲取一些別名的列表。 如果使用別名,它會自動抓取System.
位,所以你不需要明確地引用它,因為它已經是。
System.String是一個System命名空間的類。 字符串直接引用它。
鍵入string時,可以訪問System.String的所有方法(和構造函數等)。
與Nullable<T>
:你可以寫,例子
int? myInt = 2;
這是一回事
Nullable<int> myInt = 2;
只有Alias實用程序
好吧想想這個如下
假設我們有一個Namespace Foo,它有一個名為Boo的類。 現在如果我們需要調用Boo,我們需要使用“Using”關鍵字在項目中包含它。
如果我們為ex:Foo.Boo> NewBoo創建一個別名(不確定是否可能)
在這種情況下,編譯器會將其視為Foo.Boo
這里是String case。
當我們編寫編譯為System.String的字符串時 ,因此我們不需要進行任何類型的System Namespace來訪問字符串。
但是對於Just String,我們需要包含它。
實際上,如果不using System;
,這將無法編譯using System;
String name = "me";
有一個波形String name = "me";
class Program
{
static void Main(string[] args)
{
string name1 = "me";
String name2 = "me";
}
}
當我把鼠標放在string
它說class System.String
,當我把它放在String
它說the type or namespace String could not be found
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.