在MSDN中明确规定
对于所有其他类型(包括结构),sizeof运算符只能用于不安全的代码块.
的C#语言规范是更精确的:
但是CLR如何处理以下结构:
[StructLayout(LayoutKind.Explicit, Size = 1, Pack = 1)]
public struct MyStruct
{
[FieldOffset(0)] public byte aByte;
}
public struct MyEmptyStruct { }
Run Code Online (Sandbox Code Playgroud)
在MyStruct我们明确地强制布局,大小,以及如何通过它打包StructLayout属性.该结构应该在内存中具有1个字节的大小.
另一方面MyEmptyStruct是空的,我们可以假设内存中的大小将是0字节 - 即使这样的结构很可能不会被使用它仍然是一个有趣的案例.
当尝试使用来计算论文结构的大小sizeof(MyStruct)和sizeof(MyEmptyStruct)编译器会引发以下错误:
' * '没有预定义的大小,因此sizeof只能在不安全的上下文中使用
我想知道为什么sizeof要考虑在这种情况下使用unsafe.问题不是要求解决方法,也不是要求计算结构大小的正确方法,而是要关注原因.
我正在处理与我正在处理的应用程序的Ajax问题.Web应用程序是用ASP.NET 4.5编写的,它更具体地来自Visual Studio 2012中的默认MVC示例应用程序.该应用程序托管在本地IIS服务器(非快速版本)上,并且需要Windows身份验证(当前为NTLM)出于安全原因,客户端模仿.
我这里有两个问题.
网站在浏览时正确地验证了客户端,但由于某些模糊的原因,每个Ajax调用在401 Unauthorized错误中失败(在使用匿名身份验证时它正在工作,所以我猜这些凭据没有封装在请求中?!).我还没来得及调查他们之间的沟通,但我相信这里的一位大师能够提供帮助.
最后,Windows身份验证提供程序将移至kerberos.关于这个Ajax问题有什么特别要注意的吗?
如果您需要任何其他信息,请与我们联系.
编辑1
我觉得愚蠢...重启IIS解决问题.有一天,IT很高兴......
感谢大家.