字符串是引用类型,但它们是不可变的.这允许它们被编译器实现; 在出现相同的字符串文字的地方,可以引用相同的对象.
委托也是不可变的引用类型.(使用+=运算符向多播委托添加方法构成赋值 ;这不是可变性.)而且,就像字符串一样,有一种"文字"方式来表示代码中的委托,使用lambda表达式,例如:
Func<int> func = () => 5;
Run Code Online (Sandbox Code Playgroud)
该语句的右侧是一个类型为的表达式Func<int>; 但我没有明确地调用Func<int>构造函数(也没有发生隐式转换).所以我认为这基本上是一个文字.我在这里误解了我对"文字"的定义吗?
无论如何,这是我的问题.如果我有两个变量,比如Func<int>类型,我将两个相同的lambda表达式分配给:
Func<int> x = () => 5;
Func<int> y = () => 5;
Run Code Online (Sandbox Code Playgroud)
...什么阻止编译器将这些视为同一个Func<int>对象?
我问,因为C#4.0语言规范的第6.5.1节明确指出:
将具有相同(可能为空)的捕获的外部变量实例集的语义相同的匿名函数转换为相同的委托类型是允许(但不是必需的)返回相同的委托实例.这里使用术语相同的术语来表示在所有情况下,在给定相同参数的情况下,匿名函数的执行将产生相同的效果.
当我读到它时,这让我感到惊讶; 如果明确允许这种行为,我希望它能够被实现.但似乎并非如此.事实上,这已经让很多开发人员陷入困境,尤其是 当lambda表达式用于成功附加事件处理程序而不能删除它们时.例如:
class EventSender
{
public event EventHandler Event;
public void Send()
{
EventHandler handler = this.Event;
if (handler != null) { handler(this, EventArgs.Empty); }
}
}
class Program
{
static string …Run Code Online (Sandbox Code Playgroud) 尝试在我的wordpress网站中使用以下代码时,我得到一个解析错误(意外的T_Else).有什么想法可能是什么?对不起PHP新手所以请耐心等待.
<?php
if (time() >= strtotime('11/28/2011') && time() <= strtotime('12/25/2011'))
{ include (TEMPLATEPATH . '/stub_s10_Nov28-Dec25.php');
}
else if (time() >= strtotime('12/26/2011') && time() <= strtotime('01/14/2012'))
{ include (TEMPLATEPATH . '/stub_s11_Dec26-Jan14.php');
}
else if (time() >= strtotime('01/15/2011') && time() <= strtotime('02/14/2011'))
{ include (TEMPLATEPATH . '/stub_s2_Jan15-Feb14.php');
}
else if (time() >= strtotime('02/15/2011') && time() <= strtotime('03/17/2011'))
{ include (TEMPLATEPATH . '/stub_s3_Feb15-Mar17.php');
}
else if (time() >= strtotime('03/18/2011') && time() <= strtotime('04/30/2011'))
{ include (TEMPLATEPATH . '/stub_s4_Mar18-Apr30.php');
else if (time() >= strtotime('05/01/2011') …Run Code Online (Sandbox Code Playgroud) 如何在for循环中初始化列表:
for x, y in zip(list_x, list_y):
x = f(x, y)
Run Code Online (Sandbox Code Playgroud)
不幸的是,即使我想要它,这个循环也不会改变list_x.
有没有办法在循环中引用list_x的元素?
我意识到我可以使用列表理解,但是当for循环非常复杂时,这很难理解.
编辑:我的for循环是20行.您通常会将20行放入单个列表理解中吗?
我有一个MapActivity,当按下搜索按钮时,它会显示Android搜索框.SearchManager管理对话框,并将用户的查询传递给可搜索的活动,该活动搜索SQLite数据库并使用自定义适配器显示结果.
这很好 - 我从显示的数据库中得到了正确的结果.
但是,我想要做的是在用户点击搜索结果时在地图上的MapActivity中显示结果.目前,这意味着启动一个新的MapActivity,使用Bundle传递搜索结果.
我认为更清洁的方法是将搜索结果传递回原始活动,而不是开始新的活动.目前,我的活动堆栈是MapAct - > SearchManager - >搜索结果 - >新MapAct.这意味着从新MapAct中按"后退"将返回查询结果,然后返回到原始MapAct.
似乎在搜索结果中,调用finish()不会导致在调用MapActivity中调用onActivityResult.
任何想法如何获得此回调并维护合理的活动堆栈?
我想制作一个滑动到中心的滑块,同时在其他地方保持平滑动作.像现实生活中的扬声器平衡滑块的jQuery版本.可能吗?
或者我应该用可拖动的对象创建我自己的滑块,收缩到包含它的一个轴的框架,捕捉到位于框架中心的另一个对象(或网格)?
编辑:我只需要一个允许值的滑块,例如从-10到-1,0和1到10(介于-1和1之间,对齐为0),步长为:0.1
我在 Linux 上有一个很长的 c 程序,在 main 返回后出现分段错误。这是一个很长的程序,所以我无法发布它。那么你能帮我看看什么会犯这样的错误吗?
谢谢。
哇,这些答案来得真快。谢谢你们。我想我已经解决了,我忘记了分配一个字符串并将其用作缓冲区。现在我已经分配了它,它不会向我发出分段错误的信号。
再次感谢大家。
什么是一般(不特定于LAMP,.NET,Ruby,mySql等)策略和最佳实践来提高页面加载速度?
我正在寻找有关缓存,HTTP标头,外部文件缩小(CSS,JS)等的提示.
对于像Google PageSpeed和Yahoo YSlow这样的好工具.
一个"终极资源"wiki风格的"不要忘记的事情"清单(由SO上的所有向导主持和更新)是最终目标.所以人们不必无休止地关注这个主题过时的博客文章.;)
我希望"主观"mod对我来说很容易,我知道这有点开放.而 类似 的问题在这里已经问过.而这种材料的领域重叠ServerFault和网络管理者也有点.但是没有真正涵盖这个问题的中心"维基"问题所以我希望能够开始一个.有很大的问题,像这样的,我是指SO上所有的时间!谢谢
我想要乘以下三角矩阵和上三角矩阵......通常的矩阵乘法是浪费,因为它花费了很多时间来乘以零...我正在寻找是否有一种特定的matlab方法来节省计算时间..矩阵大小约为数千
执行具有有限结果的简单Hibernate查询的以下两种方法之一在Sybase中不起作用.它们都会导致SybSQLException:'@ p0'附近的语法不正确.
Query q = session.createQuery( "from Record" );
q.setMaxResults( 50 );
q.list();
Run Code Online (Sandbox Code Playgroud)
要么
Criteria criteria = session.createCriteria( Record.class );
criteria.setMaxResults( 50 );
criteria.list();
Run Code Online (Sandbox Code Playgroud)
看来在这两种情况下生成的实际SQL看起来像......
select top ? record_id, etc...
Run Code Online (Sandbox Code Playgroud)
并且Sybase正在讨论?,Hibernate没有填充值50(这是我的猜测).我到处搜索,而其他人遇到了类似的错误,这不是因为试图限制结果.
我可以执行一个直接的SQL语句,例如'从Record中选择前50个',它运行得很好,所以我知道我的Sybase版本支持语法.
我正在使用Hibernate 3.2和Sybase ASE 15.0.2
我想在我的网站上设置一些东西,当你在页面底部的15%内滚动时,一个元素从侧面跳出来...我不知道如何开始这里...我应该添加一个是否有滚动功能的监听器?
我正在尝试重新创建此页面底部的效果:http://www.nytimes.com/2011/01/25/world/europe/25moscow.html? _ r = 1
更新
我有这个代码....
console.log(document.body.scrollTop); //shows 0
console.log(document.body.scrollHeight * 0.85); //shows 1038.7
if (document.body.scrollTop > document.body.scrollHeight * 0.85) {
console.log();
$('#flyout').animate({
right: '0'
},
5000,
function() {
});
}
Run Code Online (Sandbox Code Playgroud)
console.log()当我滚动到页面底部时,值不会改变.该页面是我的视口的两倍.