当我sizeof(int)在C#.NET项目中执行时,返回值为4.我将项目类型设置为x64,那为什么它会说4而不是8?这是因为我正在运行托管代码吗?
我应该使用string或String在c#中声明一个基本的字符串变量,这有关系吗?
在C#中有String对象和string对象.
两者有什么区别?有关使用哪种方法的最佳做法是什么?
我一直在查看过去3天的代码,原始开发人员使用String类而不是字符串类来定义字符串.因此,当他们使用IsNullOrEmpty方法时,它定义了String.IsNullOrEmpty.
我想知道的是编译器处理String.IsNullOrEmpty与string.IsNullOrEmpty相比如何?
使用String.IsNullOrEmpty比string.IsNullOrEmpty有什么优势吗?
如果我使用正常的主入口点创建一个普通的控制台应用程序,如下所示
using System;
namespace ConsoleApp
{
public class Program
{
public static void Main(string[] args)
{
// do stuff
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后在visual studio中选择它一切都很好..
但是,如果我按如下方式编写代码......
using System;
namespace ConsoleApp
{
public class Program
{
public static void Main(String[] args)
{
// note the capital S in String
}
}
}
Run Code Online (Sandbox Code Playgroud)
那一切都不好......
有谁知道为什么它没有拿起String []但是对字符串[]感到满意吗?
编辑:从评论中提取,它似乎是Visual Studio 2012和2013中的一个错误.据推测,它也出现在早期版本中,但似乎已在VS2015中得到纠正.这本身并不是问题,并且如前所述,代码仍然使用string []或String []进行编译和执行.我有兴趣知道VS中的bug的原因.我想是属性编辑器窗口不是Using System;?
可能重复:
String和string之间有什么区别
当我跑:
char c1 = 'a';
Console.WriteLine(c1);
Run Code Online (Sandbox Code Playgroud)
当我跑:
Char c2 = 'a';
Console.WriteLine(c2);
Run Code Online (Sandbox Code Playgroud)
我得到了完全相同的结果a.
我想知道这两种形式有什么区别,为什么有两种形式?
我使用反射来查看System.String的内部字段,我找到了三个字段:
m_arrayLength
m_stringLength
m_firstChar
Run Code Online (Sandbox Code Playgroud)
我不明白这是如何工作的.
m_arrayLength是某个数组的长度.这个阵列在哪里?它显然不是字符串类的成员字段.
m_stringLength很有意义.这是字符串的长度.
m_firstChar是字符串中的第一个字符.
所以我的问题是字符串的其余字符在哪里?如果不在字符串类中,则存储字符串的内容在哪里?
在Juides Lowy的"C#编码标准"中,可以从www.idesign.net获得,推荐使用C#预定义类型而不是System命名空间中的别名.
object NOT Object
string NOT String
int NOT Int32
Run Code Online (Sandbox Code Playgroud)
这有什么好处?他们有什么不同?我在自己的编码中遵循了这个建议,但从未知道它们有何不同.
c# ×10
string ×4
.net ×3
64-bit ×1
char ×1
clr ×1
declaration ×1
difference ×1
long-integer ×1
reflection ×1
sizeof ×1