所以这个问题说明了font-size
一个盒子的高度,所以所有的字母(上升和下降)都可以适合.
但为什么有span
40px font-size
和line-height
45px的实际尺寸?如果我正确理解链接的问题,那么"X"应该小于40px,但总高度应该恰好是40px.我想也许它可以在上升/下降器的上方/下方增加一些空间,但是图像显示上升器/下降器占据了所有空间,因此不会有太多额外的空间:
当我围绕div
(绿色)包裹时span
,div
其高度为40px.为什么div
使用font-size
它的孩子的高度,但孩子本身没有?:
现在,当我将span
's 设置line-height
为15px(小于font-size
)时,则div
高度变为26px.这个值是如何计算的?这与基线有关吗?:
当我将span
's 设置line-height
为65px(大于font-size
)时,那么div
高度就是高度line-height
.我原div
以为它的高度是(65px - 45px)+ 45px:
那么,如何才能font-size
和line-height
影响因素的实际高度?我读了一些引用该规范的问题,但我无法从中得到很多.有没有易于理解的规则?
我对上下文敏感度和模糊性如何相互影响感到困惑.
我认为是正确的是:
歧义:
模糊语法导致使用左或右派生构造多个解析树.所有可能的语法都含糊不清的语言是一种含糊不清的语言.
例如,C++是一种含糊不清的语言,因为x*y总是意味着两种不同的东西,如下所述:为什么不能用LR(1)解析器解析C++?.
上下文灵敏度:
上下文敏感语法具有规则,其中这些规则的左侧可以包含(非)终端符号,除了在不同类型语法的所有规则的lhs内所需的一个非终结符号之外.这意味着您不能在降序时替换非终结符.相反,你必须先看看周围的非终结者.
现在困扰我的是那些或多或少说上下文敏感的解析器可以解析像x*y这样的歧义的语句.例如,在上面的链接问题中,声明"... [在创建语法树时装饰语法树]的解析器不是上下文无关的,而LR解析器(纯粹的解析器)是无上下文的." 在我看来,这意味着上下文敏感的解析器(与无上下文解析器相反?)可以做到这一点.另一个例子是C++语法上下文的任何部分都是敏感的吗?这个问题用"是......"回答.同样在这里:什么是模糊的上下文自由语法?
我不明白这个C++模糊性与上下文敏感性有什么关系.我不认为有任何上下文敏感的语法可以处理这种歧义.例如,如果你采用像Typedef,<other>*,PointerDeclaration - > Ident"*"Ident这样的虚构规则
那么你仍然无法确定(使用纯解析)在Typedef期间是否使用了具体的第一个Ident(例如"x")(例如typedef double x;).
因此,可能在链接的问题中使用术语"上下文敏感性",尽管意味着像上下文依赖一样简单(例如,需要比简单解析器提供的更多信息).或者"真实的"上下文敏感性"与歧义之间是否有任何联系.
编辑更多指定问题:在无上下文语法中是否存在任何可以通过使用上下文相关语法处理的歧义.这个问题发生在我身上,因为在链接的问题中,它听起来像C++模糊性有时被称为上下文敏感性问题.
Edit2附加信息:计算机系统在第346页上指出,上下文相关语法可以表示具有相同数量的实际和形式参数的要求.但这非常麻烦,因为你需要很多复杂的规则.但也许这也适用于前面提到的C++模糊性.所以我们有像这样的规则
"Typedef double x",<other>*,PointerDeclaration - >"x""*"Ident
当然,这些规则将非常有限,你需要大量的表达每种可能性.至少这可能是问题答案的一种方法,如果(理论上)无上下文的自由模糊可以用上下文敏感规则的使用来代替
当我尝试将文件Class1.cs重命名为VS内的class1.cs然后尝试通过ankhSVN提交项目时,我得到两个错误:
[...\Class1.cs] is already under version control.
The commit processing can't commit [...\Class1.cs], because it is not managed by Subversion. Maybe you should refresh the status after applying changes with another client?
Run Code Online (Sandbox Code Playgroud)
然后我删除了class1.cs,添加了一个新的class1.cs,尝试提交它但收到了同样的错误.我如何解决这个问题,以便我可以改变案例并仍能提交?我知道Windows是案例性的,但是不应该有一种(简单的)方法吗?
在与ankhSVN玩了一点之后,然后尝试使用其原始名称提交文件(所以我至少在版本控制中将其恢复)我得到了:
An internal error occured. Commit failed (details follow): Cannot commit: '[...]\Class1.cs' because it was moved to '[...]\class1.cs' which is not part of the commit; both sides of the move must be committed together
SharpSvn.SvnIllegalTargetException...
Run Code Online (Sandbox Code Playgroud)
我正在使用
在ASP.NET 5 MVC 6 RC1中如何AuthenticationProperties
从控制器或过滤器中检索?HttpContext.Authentication
似乎没有这个功能.
我考虑过注册一个CookieAuthenticationEvents.OnValidatePrincipal
处理程序然后Properties
在CookieValidatePrincipalContext
参数上使用该属性.然后我可以将它们存储AuthenticationProperties
在请求缓存中,以便以后我能够得到类似的东西IssuedUtc
.
有没有更好的解决方案,我不需要自己存储?
我没有使用ASP.NET身份,而是使用cookie中间件作为独立的.
使用ReSharper 8.2我会收到一个警告("表达式始终为false")进行空值检查
public bool TryGetValue(TKey key, out TValue value)
{
if (key == null)
Run Code Online (Sandbox Code Playgroud)
来自NHibernate NullableDictionary.为什么是这样?我试试的时候
class Test<T> where T : class
Run Code Online (Sandbox Code Playgroud)
然后我没有按预期得到对T变量进行空检查的警告.
编辑:为了方便起见,链接源的类签名是:
public class NullableDictionary<TKey, TValue> : IDictionary<TKey, TValue> where TKey : class
Run Code Online (Sandbox Code Playgroud) 我怎么知道要听哪个事件?
例如,gulp.dest
触发finish
事件,然后触发end
事件。其他一些流只会触发该finish
事件。当我有一个返回流的方法(可以是读或写流)并执行该方法时,如何等待返回的流完成?我什么时候必须报名参加?什么finish
时候报名参加end
?
当我具有以下类并且尝试ConcreteClass
使用DataContractSerializer序列化实例时,.WriteObject(..)
我得到了一个InvalidDataContractException
。
public abstract class AbstractClass
{
protected AbstractClass(string text) { }
}
public class ConcreteClass : AbstractClass
{
public ConcreteClass() : base("text") { }
}
Run Code Online (Sandbox Code Playgroud)
序列化器用实例化new DataContractSerializer(typeof(ConcreteClass)
。
使用XmlSerializer没问题。
现在,当添加 public AbstractClass() {}
两个序列化器都可以工作。
那么,为什么DataContractSerializer要求抽象基类具有无参数构造函数?这里说明可以对类型进行序列化,即“具有不带参数的构造函数”,这对于ConcreteClass是正确的。我还向此必需的构造函数中添加了一些代码,而且我认为在序列化过程中从未调用过它。
完整的异常显示:
System.Runtime.Serialization.InvalidDataContractException:类型AbstractClass'不能序列化。考虑使用DataContractAttribute属性标记它,并使用DataMemberAttribute属性标记要序列化的所有成员。有关其他受支持的类型,请参见Microsoft .NET Framework文档。
如果我离开无参数构造函数,而是使用建议的属性,它甚至可以工作。那么为什么会有区别,为什么要尝试对抽象类进行序列化呢?当然,抽象类中可能有诸如属性之类的东西,但是否不应该将它们与ConcreteClass实例(继承此类东西)一起序列化?
编辑:
我的确切代码:
namespace SerilizationTest
{
public abstract class AbstractClass
{
public string StringProperty { get; set; }
//This constructor is required (although never called).
//If not …
Run Code Online (Sandbox Code Playgroud) c# serialization constructor abstract-class datacontractserializer
说我有以下枚举:
[Flags]
enum IntFlags
{
A = 1 << 0,
B = 1 << 1,
C = 1 << 2,
AAndB = A | B
}
Run Code Online (Sandbox Code Playgroud)
我想构建一个帮助方法,设置如下所示的标志:
private static IntFlags Set(IntFlags values, IntFlags target)
{
return target | values;
}
Run Code Online (Sandbox Code Playgroud)
有没有灵活的方法来进行一些健全性检查?就像不应该设置枚举中不存在的值或不是现有值的组合.
以下内容不应该是可能的:
IntFlags flags = 0;
flags = Set(0, flags);
flags = Set((IntFlags)int.MaxValue, flags);
flags = Set(~IntFlags.A, flags);
Run Code Online (Sandbox Code Playgroud)
我想只是对现有的值进行检查,例如:
private static IntFlags Set(IntFlags values, IntFlags target)
{
if (!Enum.GetValues(typeof(IntFlags)).Cast<IntFlags>().Contains(values))
throw new ArgumentException();
return target | values;
}
Run Code Online (Sandbox Code Playgroud)
将无法正常工作,因为设置值如
IntFlags flags …
Run Code Online (Sandbox Code Playgroud) 我想缓存一些动态生成的表达式(使用LinqKit),以便将它们传递给Where
作为Entity Framework查询一部分的子句.
所以我有类似的东西
private static Expression<Func<T, bool>> _expression; // Gets a value at runtime
public IQueryable<T> Apply(IQueryable<T> query)
{
return query.Where(_expression); // Here _expression already has a value
}
Run Code Online (Sandbox Code Playgroud)
多线程调用Apply
然后并行执行这些查询是否安全?是Expression<TDelegate>
类线程安全的?
Docs只提供标准"此类型的任何公共静态(在Visual Basic中共享)成员都是线程安全的......"
对于某种方法,抑制 Visual Studio(以及可能的 Roslyn 分析器)发出的所有警告的最简单方法是什么?就像我将代码从 stackoverflow 答案复制粘贴到我的类的新方法中,该代码不符合我的编码准则,但我也不想更改它,也不想插入大量pragma warning disable
指令或很多SuppressMessage
属性。
关于 ReSharper 警告,我可以简单地将以下属性添加到该方法中:
[SuppressMessage("ReSharper", "All")]
Run Code Online (Sandbox Code Playgroud)
但这仅适用于 ReSharper 警告,不适用于 Visual Studio 中的警告。