小编con*_*tor的帖子

为什么JavaScript中没有隐含的内容

在JavaScript中,this访问其属性时必须始终明确说明.例如:

function Frobber(x) {
    this.x = x;
    return this;
}

Frobber.prototype.frob = function () {
    // wrong:
    return x * x;
    // right:
    return this.x * this.x;
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用with(this)(已被弃用且通常不赞成),但为什么this范围内的属性不是自动的?我认为这个设计决定必须有理由.

javascript language-design

16
推荐指数
1
解决办法
3782
查看次数

强制类加载

在C#或.net IL中是否有办法强制一个具有类型初始值设定项(静态构造函数)的类来加载自身,而不访问它的任何参数?

假设我上了课

public static class LogInitialization {
    static LogInitialization() {
        System.Console.WriteLine("Initialized");
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法让这条线打印出来?

请注意,该类是静态的,因此我无法将其实例化以强制初始化,并且它没有公共成员,因此我无法访问它们以启动它.

.net c# static-constructor classloader typeinitializer

12
推荐指数
2
解决办法
2961
查看次数

这是动态的错误吗?

在dynamic泛型类上实现动态分派,并且泛型类型参数是另一个类上的私有内部类时,运行时绑定程序会引发异常.

例如:

using System;

public abstract class Dispatcher<T> {
    public T Call(object foo) { return CallDispatch((dynamic)foo); }

    protected abstract T CallDispatch(int foo);
    protected abstract T CallDispatch(string foo);
}

public class Program {
    public static void Main() {
        TypeFinder d = new TypeFinder();

        Console.WriteLine(d.Call(0));
        Console.WriteLine(d.Call(""));
    }

    private class TypeFinder : Dispatcher<CallType> {
        protected override CallType CallDispatch(int foo) {
            return CallType.Int;
        }

        protected override CallType CallDispatch(string foo) {
            return CallType.String;
        }
    }

    private enum CallType { Int, String }
} …
Run Code Online (Sandbox Code Playgroud)

c# dynamic compiler-bug

12
推荐指数
1
解决办法
931
查看次数

在MVC中使用动态匿名对象的RuntimeBinderException

代码

我有一个MVC项目的部分页面看起来像这样:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %>
<div class="tab-window <%= Model.TargetClass %> <%= Model.TargetTab == Model.SelectedTab ? "selected" : "" %>"
    data-window-url="/SomeUrl/Partial/<%= Model.TargetTab %>/"
    <%= Model.TargetTab == Model.SelectedTab ? "data-content-loaded=\"true\"" : "" %>>
    <% if (Model.TargetTab == Model.SelectedTab) {
           Html.RenderPartial(Model.TargetTab as string, Model.Model as object);
        } %>
</div>
Run Code Online (Sandbox Code Playgroud)

它的作用是打开另一个部分(名为in Model.TargetTab),Model.Model如果它是当前可见的选项卡,否则只需渲染一个空div(在需要时加载jQuery).

它被称为这样:

<% Html.RenderPartial("TabWindowContainer", new { TargetTab = "MyTabName", TargetClass = "my-tab-class", SelectedTab = Model.Tab, Model = Model }); %>
Run Code Online (Sandbox Code Playgroud)

这曾经工作过.

然后我改变了进入的值,Model它停止了工作.我改回来了,它仍然无法正常工作.要清楚,hg status当前不显示任何这些文件.

例外

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'object' …

c# dynamic asp.net-mvc-3

11
推荐指数
1
解决办法
2852
查看次数

使用finally而不是catch

我现在已经看过这种模式了几次:

        bool success = false;
        try
        {
            DoSomething();
            success = true;
        }
        finally
        {
            if (!success)
                Rollback();
        }
Run Code Online (Sandbox Code Playgroud)

而且我一直在想:为什么这比使用catch回滚更好?

        try
        {
            DoSomething();
        }
        catch
        {
            Rollback();
            throw;
        }
Run Code Online (Sandbox Code Playgroud)

确保更改在失败时回滚的两种方法之间有什么区别?

c# transactions try-catch try-finally

11
推荐指数
1
解决办法
621
查看次数

什么是全球方法?

什么是.net中的全局方法?我在谈论由该ModuleBuilder.DefineGlobalMethod方法创建的那些.

可以从C#或其他.net语言调用这些方法吗?

.net

8
推荐指数
1
解决办法
2640
查看次数

为什么jQuery的电子邮件验证正则表达式如此简单?

我们都知道正确验证电子邮件的正则表达式会非常复杂.但是,jQuery的验证插件有一个较短的正则表达式(由Scott Gonzalez提供),只有几行:

/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])
+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|
((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|
[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]
|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?
(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|
[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*
([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|
[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])
([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|
[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/
Run Code Online (Sandbox Code Playgroud)

与更为人熟知的怪物相比,为什么这么"简单"?是否存在一个正则表达式失败而另一个正式成功的情况(案例是有效还是无效的电子邮件)?

regex email jquery

8
推荐指数
1
解决办法
2536
查看次数

.NET幕后:'对象'存储什么?

一个天真的类型系统会将对象存储为指向其类型的指针(其中包含许多有用的信息,如vtable,对象大小等),后跟其数据.如果.Net具有这样的类型系统,则object在32位系统上占用4个字节,在64位上占用8个字节.

我们可以看到它没有.对象开销是两个指针大小,另外,还有一个指针大小的"最小"大小.

那么object在幕后实际存储的内容是什么?

.net clr

8
推荐指数
2
解决办法
656
查看次数

生成不可变循环数据结构

假设我有这个简单的类:

public class Pair {
    public readonly object first;
    public readonly object second;

    public Pair(object first, object second) {
        this.first = first;
        this.second = second;
    }
}
Run Code Online (Sandbox Code Playgroud)

生成对的循环图是不可能的.

你将如何创建一个类似的类,它仍然是不可变的,但可以某种方式用于生成循环图?

immutability lazy-evaluation data-structures cyclic-graph

7
推荐指数
1
解决办法
705
查看次数

在msdeploy中指定项目名称

我在一个解决方案中有两个Web项目,我想使用msbuild和WebDeploy来部署它们(这通过CI服务器发生).

目前,我正在运行命令行:

C:\ProjectFolder>msbuild <solution>.sln
    /p:Configuration=<Release>
    /p:OutputPath=bin
    /p:DeployOnBuild=True
    /p:DeployTarget=MSDeployPublish
    /p:MsDeployServiceUrl=https://<ServerUrl:port>/msdeploy.axd
    /p:username=<user>
    /p:password=<password>
    /p:AllowUntrustedCertificate=True
    /p:DeployIisAppPath=<SiteName>
    /p:MSDeployPublishMethod=WMSVC
Run Code Online (Sandbox Code Playgroud)

这按预期部署了一个项目.但是我如何部署另一个呢?在这个命令行中没有任何地方我指定了一个项目名称 - 为什么它选择一个项目来部署另一个项目?

理想情况下,我可以使用相同的命令部署两个项目,例如

...

    /p:Project=Project1
    /p:DeployIisAppPath=<SiteName>/Project1
    /p:Project=Project2
    /p:DeployIisAppPath=<SiteName>/Project2
Run Code Online (Sandbox Code Playgroud)

但我怀疑这是可能的.或者,我只想知道如何在命令行中指定项目名称.

msbuild msdeploy command-line-arguments

7
推荐指数
1
解决办法
5738
查看次数