小编Pao*_*tti的帖子

立即函数调用语法

有一个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关于构造函数大写的建议 - 它可以作为任何查看源代码的人的视觉提示.

javascript syntax jslint iife

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

绑定到WPF中的方法?

如何在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:非静态方法需要一个目标.

.net data-binding wpf xaml

87
推荐指数
4
解决办法
8万
查看次数

使用{}语句调用return是一个好方法吗?

我只是想知道returnusing块内调用它是安全/好的方法.

对于前者

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

  1. scope.Complete()被叫了吗?
  2. 对于示波器的dispose()方法也是如此.

c# using return

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

性能分析ADO.NET和实体框架

哪一个提供更好的性能?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之间的平均执行时间并不多:

第二个结果

  1. 我认为EF在首次执行时表现得非常糟糕那么为什么我们使用EF呢?
  2. 为什么EF第二次执行比第一次执行快?

c# performance ado.net entity-framework

37
推荐指数
3
解决办法
5万
查看次数

OpenID:尝试从Google OP获取电子邮件地址

我正在使用dotnetopenauth 3.2来实现Openid,并且无法弄清楚如何让Google在声明响应中传递电子邮件地址.我知道Google不支持简单注册,但我无法确定他们支持的内容.

对这个问题的警告是我刚刚开始学习OpenID,我知道我对规范没有扎实的把握,我认为这导致了我的困惑.

任何帮助,将不胜感激!

c# openid dotnetopenauth

35
推荐指数
1
解决办法
8118
查看次数

将MVC PartialView渲染为SignalR响应

我想将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生成能力将是非常好的.

我错了吗?还有另外一种方法吗?

c# asp.net-mvc partial-views asp.net-mvc-3 signalr

33
推荐指数
2
解决办法
8397
查看次数

如何防止前置滚动?

我正在将内容添加到身体的顶部.有时这个内容可以是400-500px高,当这样的内容被添加时,在你阅读页面时推下内容可能会非常烦人.

我想要自动添加项目,而不是点击此处查看新项目.

有没有办法在不移动页面的情况下将此内容添加到正文顶部?然后,当用户滚动到顶部时,它已经存在?

javascript jquery jquery-ui jquery-plugins

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

Json.Net:用于自定义命名的JsonSerializer-Attribute

我使用的JsonSerializer是Newtonsoft.

但我想自己命名json-objects.

我试过了这个JsonObject属性

[JsonObject(Description = "MyName", Title = "orThisname")]
Run Code Online (Sandbox Code Playgroud)

JsonArray 也没工作......是否有可能自己命名json-objetcs /数组?

c# serialization json json.net

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

ThemeInfo属性是什么?

每当我创建新的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属性是什么?如果我删除它会破坏任何东西吗?

c# wpf xaml themes assemblyinfo

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

从列表1中删除不在列表2中的项目

我正在学习编写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# lambda

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