小编use*_*754的帖子

font-size vs line-height vs实际高度

所以这个问题说明了font-size一个盒子的高度,所以所有的字母(上升和下降)都可以适合.

但为什么有span40px font-sizeline-height45px的实际尺寸?如果我正确理解链接的问题,那么"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-sizeline-height影响因素的实际高度?我读了一些引用该规范的问题,但我无法从中得到很多.有没有易于理解的规则?

提琴手

css

30
推荐指数
2
解决办法
2万
查看次数

上下文敏感度与歧义

我对上下文敏感度和模糊性如何相互影响感到困惑.

我认为是正确的是:

歧义:

模糊语法导致使用左或右派生构造多个解析树.所有可能的语法都含糊不清的语言是一种含糊不清的语言.

例如,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

当然,这些规则将非常有限,你需要大量的表达每种可能性.至少这可能是问题答案的一种方法,如果(理论上)无上下文的自由模糊可以用上下文敏感规则的使用来代替

c++ grammar ambiguity

14
推荐指数
1
解决办法
1258
查看次数

AnkhSVN - 在Visual Studio中重命名(更改其大小写)文件

当我尝试将文件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)

我正在使用

  • Windows 7 64
  • Visual Studio 2012
  • TortoiseSVN 1.8.4
  • ankhSVN 2.5.12266.473

svn version-control tortoisesvn ankhsvn visual-studio

12
推荐指数
1
解决办法
5739
查看次数

在ASP.NET 5中获取AuthenticationProperties

在ASP.NET 5 MVC 6 RC1中如何AuthenticationProperties从控制器或过滤器中检索?HttpContext.Authentication似乎没有这个功能.

我考虑过注册一个CookieAuthenticationEvents.OnValidatePrincipal处理程序然后PropertiesCookieValidatePrincipalContext参数上使用该属性.然后我可以将它们存储AuthenticationProperties在请求缓存中,以便以后我能够得到类似的东西IssuedUtc.

有没有更好的解决方案,我不需要自己存储?

我没有使用ASP.NET身份,而是使用cookie中间件作为独立的.

asp.net asp.net-core-mvc asp.net-core

9
推荐指数
2
解决办法
3364
查看次数

ReSharper:空检查始终是错误警告

使用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)

c# generics resharper

8
推荐指数
1
解决办法
1024
查看次数

流事件:完成与结束

我怎么知道要听哪个事件?

例如,gulp.dest触发finish事件,然后触发end事件。其他一些流只会触发该finish事件。当我有一个返回流的方法(可以是读或写流)并执行该方法时,如何等待返回的流完成?我什么时候必须报名参加?什么finish时候报名参加end

gulp

6
推荐指数
1
解决办法
2146
查看次数

DataContractSerializer需要抽象基类中的无参数构造函数

当我具有以下类并且尝试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

5
推荐指数
1
解决办法
1862
查看次数

如何避免不可能的枚举值?

说我有以下枚举:

[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)

c# enums bit-manipulation bitwise-operators

4
推荐指数
1
解决办法
661
查看次数

表达树是线程安全的吗?

我想缓存一些动态生成的表达式(使用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中共享)成员都是线程安全的......"

.net c# lambda

4
推荐指数
1
解决办法
397
查看次数

抑制某个方法的所有警告

对于某种方法,抑制 Visual Studio(以及可能的 Roslyn 分析器)发出的所有警告的最简单方法是什么?就像我将代码从 stackoverflow 答案复制粘贴到我的类的新方法中,该代码不符合我的编码准则,但我也不想更改它,也不想插入大量pragma warning disable指令或很多SuppressMessage属性。

关于 ReSharper 警告,我可以简单地将以下属性添加到该方法中:

 [SuppressMessage("ReSharper", "All")]
Run Code Online (Sandbox Code Playgroud)

但这仅适用于 ReSharper 警告,不适用于 Visual Studio 中的警告。

c# code-analysis visual-studio

3
推荐指数
1
解决办法
685
查看次数