string和String/bool和Boolean之间有什么不同吗?我更喜欢使用一个而不是其他一个?或者我应该尽量避免在这些类型之间进行转换(我已经注意到应用程序能够处理这种转换,但可能存在一些问题)......或者它只是毫无意义的问题?
在C#中有存在string而且存在System.String.
这些有什么区别?一个被认为更好地使用另一个.混合使用它们是否有任何隐患?
如果他们是相同的,那么为什么他们两个?为什么不拥有一个或另一个?
在Visual Studio 2015中工作,我有一个条件检查效果:
if(String.IsNullOrWhiteSpace(stringToTest))
Run Code Online (Sandbox Code Playgroud)
我看到一个IDE001 快速提示或动作建议"名称可以简化",建议更正:
if(string.IsNullOrWhiteSpace(stringToTest))
Run Code Online (Sandbox Code Playgroud)
唯一的区别是使用string而不是String.
MSDN示例使用大写字母S String,这个SO答案澄清" string在C#中是别名System.String.所以从技术上讲,没有区别."
要明确的是,我的问题依赖于字符串与字符串中的答案,但我有一个不同于那里的问题.
这个问题也是相关的,尽管那里的答案并没有真正解决这个问题.这个特殊问题与我的问题非常相似,但它被标记为我注意到的另一个SO问题的副本.而有评论由OP表示,这是全新的行为仅出现在2015年.
我的问题
我的问题是,如果两个变量类型是等价的,和MS的例子使用大写版本,为何会出现快速的操作来使用小写版本? .NET 4.6框架和VS2015是否有变化以鼓励使用小写版本?看起来我不应该看到这种类型的小费.
假设我有一个项目的数组(或列表)
A[] = [a,b,c,d,e]
Run Code Online (Sandbox Code Playgroud)
如果我想打印出来,所以每个项目都用逗号(或任何其他分隔符)分隔,我通常必须这样做:
for(int i=0; i < A.Count; i++)
{
Console.Write(A[i]);
if (i != A.Count-1)
Console.Write(",");
}
Run Code Online (Sandbox Code Playgroud)
所以,我的输出看起来像:
a,b,c,d,e
Run Code Online (Sandbox Code Playgroud)
是否有更好或更简洁的方法来实现这一目标?
我喜欢使用foreach循环,但是在最后一个元素之后也会打印一个逗号,这是不可取的.
为什么C#.Net允许字符串对象的声明不区分大小写?
String sHello = "Hello";
string sHello = "Hello";
Run Code Online (Sandbox Code Playgroud)
单词String的小写和大写S都是可接受的,这似乎是允许这个的唯一对象.
有谁能解释为什么?
它不是关于using foo = MyPackage.Foo;
我意识到这更多地与IDE(Visual Studio 2010)有关,它向我展示了蓝色的特殊类型.我想同我的一些课程.我希望它是蓝色的 (呈现为特殊的)并且可以在整个项目中访问.
原因是我想给他们意义/重要性,以便我的团队中的每个人都知道这个课程是整个项目的关键课程.
// "foo" and "Foo" shall be just the same type:
foo: MyPackage.Foo
object: System.Object
string: System.String
bool: System.Boolean
byte: System.Byte
sbyte: System.SByte
short: System.Int16
ushort: System.UInt16
int: System.Int32
uint: System.UInt32
long: System.Int64
ulong: System.UInt64
float: System.Single
double: System.Double
decimal: System.Decimal
char: System.Char
Run Code Online (Sandbox Code Playgroud)
那可能吗 ?如果我的IDE安装中有一个文件,里面会有上面的关键字,我可以添加一些关键字并保存并重新启动IDE?
要有两个班级,我可以这样做.这是同一个班级的两个名字.我知道我需要在这些之间施展.
public class foo : Foo
{ }
Run Code Online (Sandbox Code Playgroud) 我不明白之间的差别Anonymous Class,并object Class
如果我有一个匿名类型对象:
var x = new []
{
new {name = "x", phone = 125},
new {name = "f", phone = 859},
new {name="s",phone=584}
};
Run Code Online (Sandbox Code Playgroud)
我可以看到我如何迭代它并获得这些属性的值 x.name ...
但如果我改成这个 object
var x = new Object[]
{
new {name = "x", phone = 125},
new {name = "f", phone = 859},
new {name="s",phone=584}
};
Run Code Online (Sandbox Code Playgroud)
那么如果我循环通过它我将无法访问属性?我已经尝试了不同的方法来从这个对象获取值,但我失败了,可能是我错过了什么?什么是生成点,object array我该如何消费呢?
我知道我不能做这样的事情: new Object[] {name = 'x' ...
我目前正在使用Visual Studio(特别是2012 Express).我有一个接口已经定义如下:
interface IMyInterface
{
public String Data { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如果我有一个空类:
class MyClass : IMyInterface
{
}
Run Code Online (Sandbox Code Playgroud)
我右键单击IMyInterface,我可以选择"实现接口".当我这样做时,自动生成的代码产生以下内容:
class MyClass : IMyInterface
{
public string Data
{
get
{
throw new NotImplementedException();
}
set
{
throw new NotImplementedException();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,有没有办法可以自动生成以下内容:
public String Data
Run Code Online (Sandbox Code Playgroud)
代替:
public string Data
Run Code Online (Sandbox Code Playgroud)
?
在为我的程序编写 XML 文档时,我在记录此方法时遇到了一个问题:
internal void MethodB(int i, DateTime? date = null);
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是特定于参数的date。正如您所看到的,它是可选的并且可以为 null。以下是我尝试记录此方法的方法:
/// <summary>
/// This method uses <see cref="MethodB(Int32, System.DateTime)"/> internally
/// todo some stuff.
/// </summary>
Run Code Online (Sandbox Code Playgroud)
具体来说,我收到一条编译器警告,表明无法解析cref的值。
如何修复 XML 文档注释,使其在编译时不会出现此警告?