有什么区别:
return string.Empty;
return String.Empty;
return "";
Run Code Online (Sandbox Code Playgroud) 我目前正在使用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 文档注释,使其在编译时不会出现此警告?
为什么typeof(string).FullName给予System.String而不给予string?同样是与所有其他"简单"类型,如int,float,double,...
我明白这typeof是返回System.Type给定类型的对象,但为什么string不是一个System.Type对象呢?
是因为它string是c#语言的System.Type一部分,并且是系统库的一部分吗?
我对这门语言很新.这段代码给了我错误:
无法创建静态类'System.Tuple'的实例
Operator '!=' cannot be applied to operands of type 'bool' and 'int'
Run Code Online (Sandbox Code Playgroud)
我不知道我做错了什么.有人可以告诉我有什么问题
using(StreamReader rdr = new StreamReader("fileName"))
{
StringBuilder sb = new StringBuilder();
Int32 nc = 0;
Char c;
Int32 lineNumber = 0;
while( (nc == rdr.Read() !=-1 ))
{
c = (Char)nc;
if( Char.IsWhiteSpace(c) )
{
if( sb.Length > 0 )
{
yield return new Tuple( sb.ToString(), lineNumber );
sb.Length = 0;
}
if( c == '\n' ) lineNumber++;
}
else
{
sb.Append( c );
} …Run Code Online (Sandbox Code Playgroud) 任何人都可以告诉我,我没有使用系统名称空间,但字符串可用作字符串hello ="Hello"; 并且不会抛出任何编译时错误
但是,如果我写大写字符串,它就不可用.
sealed class SealedClass
{
public void PrintSealed()
{
string hello = "Hello";
}
}
Run Code Online (Sandbox Code Playgroud) 我想Fullname,以包括FirstName和Lastname,但我得到以下异常:
字段初始值设定项不能引用非静态字段,方法或属性"Employee.FirstName"/"Employee.LastName"
class Employee
{
public string FirstName { get; }
public string LastName { get; }
private string FullName = string.Format("{0}, {1}", FirstName, LastName);
}
Run Code Online (Sandbox Code Playgroud) 我有两台具有不同文化的机器,其中一种格式mm/dd/yyyy被Specflow成功解析(它是一个步骤参数),但在另一台机器中失败.
我希望我的测试能够独立于文化.那么如何配置Specflow CultureInfo.InvariantCulture用于解析日期?
在回答另一个问题时,Jon Skeet提到有一个奇怪的事情正在进行定义enums.他的回答.
他声明,enum只有类型别名而不是框架类型(int有效,Int32不是等)才能重新定义a的基础类型.
public enum Foo : UInt32 {} // Invalid
public enum Bar : uint {} // Valid
Run Code Online (Sandbox Code Playgroud)
现在我试图重现(在VS2015中使用C#6/Roslyn),我没有得出相同的结论:
public enum TestEnum : UInt32
{
}
Run Code Online (Sandbox Code Playgroud)
和
public enum MyEnum : uint
{
}
Run Code Online (Sandbox Code Playgroud)
都是完全有效的.为什么会这样?或者改变了什么?
编辑:
所以为了清理事情,这是C#6中的一个变化,尚未记录,并且很快就会记录下来,因为你可以从Roslyn Github上的这个git问题中读到
我正在尝试创建一个通用的 SqlDataReader,它将一个包含 33 列的表转换为一个列表。我希望每个列表项都包含每行的所有 33 个列值。
但是,我的代码将每个值分配给一个单独的列表项。
因此,我有 33,000 个列表项,而不是 1000 个列表项 = 1000 行数据。
我更喜欢在数据表上使用列表,因为我需要做的列表比较要简单得多。
我怎样才能有 1000 个列表项,每个列表项有 33 个值?
public static List<string> loadSQL(String query, String connectString)
{
List<string> dataList = new List<string>();
using (SqlConnection connection = new SqlConnection(connectString))
{
using (SqlCommand command = new SqlCommand(query, connection))
{
connection.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
for (int i = 0; i < reader.FieldCount; i ++)
{
dataList.Add(Convert.ToString(reader.GetValue(i)));
}
}
}
}
return dataList;
}
}
Run Code Online (Sandbox Code Playgroud)
... …