有一个JSLint选项,实际上是一个好的部分,"[需要]围绕立即调用的parens,"意味着构造
(function () {
// ...
})();
Run Code Online (Sandbox Code Playgroud)
反而需要写成
(function () {
// ...
}());
Run Code Online (Sandbox Code Playgroud)
我的问题是 - 任何人都可以解释为什么第二种形式可能被认为更好?它更有弹性吗?不容易出错?它比第一种形式有什么优势?
自从提出这个问题以来,我逐渐理解了在函数值和函数值之间进行清晰视觉区分的重要性.考虑立即调用的结果是赋值表达式的右侧的情况:
var someVar = (function () {
// ...
}());
Run Code Online (Sandbox Code Playgroud)
尽管最外面的括号在语法上是不必要的,但是左括号给出了一个预先指示,即所分配的值不是函数本身,而是调用函数的结果.
这类似于Crockford关于构造函数大写的建议 - 它可以作为任何查看源代码的人的视觉提示.
如何在WPF中绑定到此场景中的对象方法?
public class RootObject
{
public string Name { get; }
public ObservableCollection<ChildObject> GetChildren() {...}
}
public class ChildObject
{
public string Name { get; }
}
Run Code Online (Sandbox Code Playgroud)
XAML:
<TreeView ItemsSource="some list of RootObjects">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type data:RootObject}"
ItemsSource="???">
<TextBlock Text="{Binding Path=Name}" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type data:ChildObject}">
<TextBlock Text="{Binding Path=Name}" />
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
Run Code Online (Sandbox Code Playgroud)
在这里,我想绑定到GetChildren每个RootObject树上的方法.
编辑绑定到一个ObjectDataProvider似乎不起作用,因为我绑定到一个项目列表,并且ObjectDataProvider需要一个静态方法,或者它创建它自己的实例并使用它.
例如,使用Matt的答案,我得到:
System.Windows.Data错误:33:ObjectDataProvider无法创建对象; 类型= 'RootObject'; Error ='构造函数的参数错误.'
System.Windows.Data错误:34:ObjectDataProvider:尝试在类型上调用方法失败; 方法= '的GetChildren'; 类型= 'RootObject'; Error ='无法在目标上调用指定的成员.TargetException:'System.Reflection.TargetException:非静态方法需要一个目标.
我只是想知道return在using块内调用它是安全/好的方法.
对于前者
using(var scope = new TransactionScope())
{
// my core logic
return true; // if condition met else
return false;
scope.Complete();
}
Run Code Online (Sandbox Code Playgroud)
我们知道最后一个大括号 dispose()将被取消.但是在上面的情况下,由于return将控件跳出给定范围(AFAIK)......
scope.Complete()被叫了吗?dispose()方法也是如此.哪一个提供更好的性能?ADO.NET或实体框架.
这是我想要分析的两种方法.
ADO.NET测试方法
public void ADOTest()
{
Stopwatch stopwatch = Stopwatch.StartNew();
using (SqlConnection con = new SqlConnection(connection))
{
string Query = "select * from Product ";
SqlDataAdapter da = new SqlDataAdapter(Query, con);
DataSet ds = new DataSet();
con.Open();
da.Fill(ds);
DataView dv = ds.Tables[0].DefaultView;
}
stopwatch.Stop();
Console.WriteLine("ADO.NET Time Elapsed={0}", stopwatch.Elapsed);
}
Run Code Online (Sandbox Code Playgroud)
实体框架测试方法
public void EFTest()
{
Stopwatch stopwatch = Stopwatch.StartNew();
var list = _OnlineStoreEntities.Products.ToList();
stopwatch.Stop();
Console.WriteLine("Entity Framework Elapsed={0}", stopwatch.Elapsed);
}
Run Code Online (Sandbox Code Playgroud)
导致首次执行
当我运行上述方法超过100次.平均执行时间显示在图像中:

无论实体框架花费超过4毫秒,ADO.NET只用了2毫秒.
导致第二次执行
当我一次又一次地运行这个方法时.ADO.NET和EF之间的平均执行时间并不多:

题
我正在使用dotnetopenauth 3.2来实现Openid,并且无法弄清楚如何让Google在声明响应中传递电子邮件地址.我知道Google不支持简单注册,但我无法确定他们支持的内容.
对这个问题的警告是我刚刚开始学习OpenID,我知道我对规范没有扎实的把握,我认为这导致了我的困惑.
任何帮助,将不胜感激!
我想将PartialView呈现为HTML字符串,以便将其返回到SignalR ajax请求.
就像是:
SignalR Hub(mySignalHub.cs)
public class mySignalRHub: Hub
{
public string getTableHTML()
{
return PartialView("_MyTablePartialView", GetDataItems()) // *How is it possible to do this*
}
}
Run Code Online (Sandbox Code Playgroud)
Razor PartialView(_MyTablePartialView.cshtml)
@model IEnumerable<DataItem>
<table>
<tbody>
@foreach (var dataItem in Model)
{
<tr>
<td>@dataItem.Value1</td>
<td>@dataItem.Value2</td>
</tr>
}
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
HTML(MySignalRWebPage.html)
<Script>
...
//Get HTML from SignalR function call
var tableHtml = $.connection.mySignalRHub.getTableHTML();
//Inject into div
$('#tableContainer).html(tableHtml);
</Script>
<div id="tableContainer"></div>
Run Code Online (Sandbox Code Playgroud)
我的问题是我似乎无法在Controller之外渲染PartialView.甚至可以在Controller外部渲染PartialView吗?能够利用Razor附带的令人敬畏的HTML生成能力将是非常好的.
我错了吗?还有另外一种方法吗?
我正在将内容添加到身体的顶部.有时这个内容可以是400-500px高,当这样的内容被添加时,在你阅读页面时推下内容可能会非常烦人.
我想要自动添加项目,而不是点击此处查看新项目.
有没有办法在不移动页面的情况下将此内容添加到正文顶部?然后,当用户滚动到顶部时,它已经存在?
我使用的JsonSerializer是Newtonsoft.
但我想自己命名json-objects.
我试过了这个JsonObject属性
[JsonObject(Description = "MyName", Title = "orThisname")]
Run Code Online (Sandbox Code Playgroud)
JsonArray 也没工作......是否有可能自己命名json-objetcs /数组?
每当我创建新的WPF应用程序或WPF用户控件库时,该AssemblyInfo.cs文件都包含以下属性:
[assembly: ThemeInfo(
ResourceDictionaryLocation.None,
//where theme specific resource dictionaries are located
//(used if a resource is not found in the page,
// or application resource dictionaries)
ResourceDictionaryLocation.SourceAssembly
//where the generic resource dictionary is located
//(used if a resource is not found in the page,
// app, or any theme specific resource dictionaries)
)]
Run Code Online (Sandbox Code Playgroud)
这个ThemeInfo属性是什么?如果我删除它会破坏任何东西吗?
我正在学习编写lambda表达式,我需要有关如何从列表中删除不在另一个列表中的所有元素的帮助.
var list = new List<int> {1, 2, 2, 4, 5};
var list2 = new List<int> { 4, 5 };
// Remove all list items not in List2
// new List Should contain {4,5}
// The lambda expression is the Predicate.
list.RemoveAll(item => item. /*solution expression here*/ );
// Display results.
foreach (int i in list)
{
Console.WriteLine(i);
}
Run Code Online (Sandbox Code Playgroud) c# ×7
javascript ×2
wpf ×2
xaml ×2
.net ×1
ado.net ×1
asp.net-mvc ×1
assemblyinfo ×1
data-binding ×1
iife ×1
jquery ×1
jquery-ui ×1
jslint ×1
json ×1
json.net ×1
lambda ×1
openid ×1
performance ×1
return ×1
signalr ×1
syntax ×1
themes ×1
using ×1