我发现虽然字符串插值在应用于我现有的代码库的字符串格式调用时非常好,但考虑到通常首选的列限制,字符串对于单行很快就会变得太长.特别是当插值的表达式很复杂时.使用格式字符串,您可以将变量列表拆分为多行.
var str = string.Format("some text {0} more text {1}",
obj1.property,
obj2.property);
Run Code Online (Sandbox Code Playgroud)
有没有人有任何打破这些线路的首选方法?
我想你可以这样做:
var str = $"some text { obj1.property }" +
" more text { obj2.property };
Run Code Online (Sandbox Code Playgroud) 我想知道为什么当你在一个基类中的虚方法上放置一个System.Diagnostics.Conditional("DEBUG")属性时,你不会在派生类上获得编译器错误,这些类会覆盖相同的虚方法但不会在不满足条件时具有条件属性.例:
public class MyBaseClass
{
[System.Diagnostics.Conditional("DEBUG")]
public virtual void Test()
{
//Do something
}
}
public class MyDerivedClass : MyBaseClass
{
public override void Test()
{
//Do something different
}
}
Run Code Online (Sandbox Code Playgroud)
似乎在没有定义DEBUG时,条件基本上会产生一种不存在覆盖方法的原因,因为实际的IL输出中没有虚函数.然而在我的测试中,编译器似乎生成代码就好了.条件是否仅为函数体抛出IL而不对类签名进行任何实际更改?
任何人都可以推荐一种方法来阻止访问特定程序集中的特定系统类吗?例如,我可能想要在实现某个不涉及I/O的特定层的类库中阻止FileStream或其他I/O类.它不一定是不可克服的,关键不是打击敌对开发人员,只是为了减少团队成员(包括我自己)的分层错误,并通过打破编译轻松识别这些代码.