在与同事谈论C#时,他向我展示了一些我必须预测输出的C#代码.这看起来很简单,但事实并非如此.我无法理解为什么C#以这种方式行事.
代码:
public class A<T1>
{
public T1 a;
public class B<T2> : A<T2>
{
public T1 b;
public class C<T3> : B<T3>
{
public T1 c;
}
}
}
class Program
{
static void Main(string[] args)
{
A<int>.B<char>.C<bool> o = new A<int>.B<char>.C<bool>();
Console.WriteLine(o.a.GetType());
Console.WriteLine(o.b.GetType());
Console.WriteLine(o.c.GetType());
Console.ReadKey();
}
}
Run Code Online (Sandbox Code Playgroud)
输出是:
System.Boolean
System.Char
System.Int32
Run Code Online (Sandbox Code Playgroud)
如果我错了,请纠正我,但我知道这o.a是bool类型,因为C<T3>继承自B<T3>并B<T2>继承自A<T2>.我也可以稍微明白o.c是int类型的,因为类型c就是T1它从外部类获取(我认为).
当我试图弄清楚为什么o.b是char类型时,我的脑袋几乎爆炸了.谁可以给我解释一下这个?
tinymce jQuery 版和tinymce jQuery 插件有什么区别?有任何功能差异吗?决定使用哪一个的标准是什么?
尝试在visual studio 2012中加载一些项目时出现以下错误:
G:\path\project.csproj : error : The value "" of the "Project" attribute in element <Import> is invalid. Parameter "path" cannot have zero length.
Run Code Online (Sandbox Code Playgroud)
在svn结账后,我正在尝试这个机器.这些项目可以正确加载到其他机器上.
有人可以帮我解决这个问题吗?谷歌没有给我答案,我希望如此.
编辑
这是csproj文件的相关部分.
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="$(StyleCopTargets)" />
</Project>
Run Code Online (Sandbox Code Playgroud) 我使用JSFiddle创建了一个简单的Web UI,我想知道是否可以在不使用JavaScript的情况下创建相同的UI .
一个小提琴说超过1000个单词.
所以问题是(因为对某些人来说似乎不太清楚):如何在不使用任何JavaScript的情况下实现相同的结果?
PS:我不想使用JavaScript重新计算每个滚动事件的位置,因为IE中的重新定位不够平滑.
HTML:
<div class="A">
<div class="B">
B
</div>
<div class="C">
This stays fixed when scrolling horizontally, but scrolls along when scrolling down the parent.
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
.A {
background-color: yellow;
height: 400px;
width: 700px;
overflow:scroll;
position: relative;
}
.B {
background-color: green;
height: 1000px;
width: 1500px;
position: absolute;
top:0;
color:white;
}
.C {
background-color: red;
position: absolute;
left: 100px;
top: 0px;
height: 1000px;
width: 100px;
}
Run Code Online (Sandbox Code Playgroud)
JS(使用jQuery):
$('.A').scroll(function(e) {
$('.C').css('left', …Run Code Online (Sandbox Code Playgroud) 在深化自己使用C#的更高级功能的同时,我遇到了一些代码,我并不知道它的区别.这是关于这两行:
Func<string, int> giveLength = (text => text.Length);
Run Code Online (Sandbox Code Playgroud)
和
Func<string, int> giveLength = delegate(string text) { return text.Length; };
Run Code Online (Sandbox Code Playgroud)
这可以以相同的方式使用:
Console.WriteLine(giveLength("A random string."));
Run Code Online (Sandbox Code Playgroud)
所以基本上......这两条线有什么区别?这些行是否编译为相同的CIL?