小编Jus*_*gan的帖子

学习理解不同方法和概念的重要语言是什么?

当你拥有的是一对断线钳和一瓶伏特加酒时,一切看起来就像是Wolf Blitzer船库门上的锁.(如果你不读xkcd,用锤子和钉子代替)

我目前正在编写Clojure,Python,Java和PHP,所以我熟悉C和LISP语法以及空白事物.我知道命令式,功能性,不可变性,OOP和几种类型的系统和其他东西.现在我想要更多!

什么是采用不同方法的语言,对实际工具选择或理论理解有用?

我不想学习另一种函数式语言(Haskell)或其他命令式OOP语言(Ruby),也不想练习像Brainfuck这样不切实际的有趣语言.

我发现自己的一个非常有趣的事情是基于单声道堆栈的语言,如Factor.

只有当我觉得我理解了大多数概念并对我的所有问题都有答案时,我才想开始考虑我自己的玩具语言,以包含我所有的个人喜好.

language-agnostic programming-languages

172
推荐指数
11
解决办法
3万
查看次数

CoffeeScript是否允许JavaScript样式==等同语义?

我喜欢CoffeeScript编译==成JavaScript ===运算符.但是如果你想要原始的JS ==语义怎么办?他们有空吗?我仔细阅读了文档,找不到任何能够实现此功能的内容.

更一般地说,有没有办法将普通的JS内联到我的CoffeeScript代码中,以便编译器不会触及它?

我宁愿避免编辑已编译的JavaScript输出,因为我正在使用Chirpy在Visual Studio中自动生成它.

javascript coffeescript

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

asp.net自定义验证器没有为文本框触发

我有一个必需的字段验证器和自定义验证器来验证texbox.必需的字段验证器完全触发.我无法正确启动自定义验证器?

<asp:TextBox ID="txtPRI" runat="server" Width="295" /><br />

<asp:RequiredFieldValidator display="Dynamic" CssClass="leftAlign" SetFocusOnError="true"  runat="server" controltovalidate="txtPRI" errormessage="Please enter your PRI" />

 <asp:CustomValidator runat="server" id="cusCustom" controltovalidate="txtPRI" onservervalidate="cusCustom_ServerValidate" Enabled="true" ValidateEmptyText="true" display="Dynamic" CssClass="leftAlign" SetFocusOnError="true"  errormessage="The text must be exactly 8 characters long!" />
Run Code Online (Sandbox Code Playgroud)

代码背后

protected void cusCustom_ServerValidate(object sender, ServerValidateEventArgs e)
    {
        Response.Write("firing - test");
        Response.End();


        if (e.Value.Length == 8)
            e.IsValid = true;
        else
            e.IsValid = false;
    }
Run Code Online (Sandbox Code Playgroud)

c# asp.net validation customvalidator

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

VB6相当于string.IsNullOrEmpty

我正在做遗留应用程序的一些工作,而我的VB6技能并不是那么好.我需要检查String字段是否已初始化并设置为null/nothing或空字符串以外的其他字符串.在C#中,我只是做了类似的事情:

if (string.IsNullOrEmpty(myObj.Str))
Run Code Online (Sandbox Code Playgroud)

我不确定在VB6中它的等价物是什么,而且我对使用If myObj.Str = ""它并将其称为好而感到紧张.这样做的正确方法是什么?

为了澄清,如果满足以下任何条件,我希望返回True:

  • 该字段尚未初始化
  • 该字段为空字符串(str ="",length = 0)
  • 该字段设置为null,或Nothing,或vbnull,或任何形式的null值适用于VB6字符串.

该字段最初为Long,我正在替换的代码检查它是否设置为0.

string vb6

26
推荐指数
2
解决办法
7万
查看次数

如何使用Microsoft.Office.Interop.Excel从Excel导入DataSet?

我想做的事

我正在尝试使用Microsoft.Office.Interop.Excel命名空间打开Excel文件(XSL或CSV,但遗憾的是不是 XSLX)并将其导入DataSet.我无法控制工作表或列名,因此我需要允许对它们进行更改.

我试过的

我以前尝试过这种OLEDB方法,并且遇到了很多问题(错误,速度慢,并且需要事先了解Excel文件的架构),所以我想避免再次这样做.我想要做的是使用Microsoft.Office.Interop.Excel将工作簿直接导入DataSet,或者循环遍历工作表并将每个工作表加载到DataTable中.

信不信由你,我很难找到资源.在StackOverflow上进行的一些搜索发现大多数人都试图进行反向(DataSet => Excel)或OLEDB技术.谷歌没有多大帮助.

到目前为止我得到了什么

    public void Load(string filename, Excel.XlFileFormat format = Excel.XlFileFormat.xlCSV)
    {
        app = new Excel.Application();
        book = app.Workbooks.Open(Filename: filename, Format: format);

        DataSet ds = new DataSet();

        foreach (Excel.Worksheet sheet in book.Sheets)
        {
            DataTable dt = new DataTable(sheet.Name);
            ds.Tables.Add(dt);

            //??? Fill dt from sheet 
        }

        this.Data = ds;
    }
Run Code Online (Sandbox Code Playgroud)

我可以一次导入整本书,或者一次循环一张.我可以使用Interop.Excel执行此操作吗?

c# excel interop dataset excel-interop

24
推荐指数
3
解决办法
13万
查看次数

如何分解成员访问表达式链?

短版(TL; DR):

假设我有一个表达式,它只是一个成员访问运算符链:

Expression<Func<Tx, Tbaz>> e = x => x.foo.bar.baz;
Run Code Online (Sandbox Code Playgroud)

您可以将此表达式视为子表达式的组合,每个子表达式包含一个成员访问操作:

Expression<Func<Tx, Tfoo>>   e1 = (Tx x) => x.foo;
Expression<Func<Tfoo, Tbar>> e2 = (Tfoo foo) => foo.bar;
Expression<Func<Tbar, Tbaz>> e3 = (Tbar bar) => bar.baz;
Run Code Online (Sandbox Code Playgroud)

我想要做的是分解e成这些组件子表达式,以便我可以单独使用它们.

更短的版本:

如果我有表达x => x.foo.bar,我已经知道如何中断x => x.foo.如何拉出其他子表达式foo => foo.bar

为什么我这样做:

我试图在C#中模拟"提升"成员访问操作符,就像CoffeeScript的存在访问操作符一样?..Eric Lippert表示,类似的运营商被考虑用于C#,但没有预算来实施它.

如果这样的运算符存在于C#中,您可以执行以下操作:

value = target?.foo?.bar?.baz;
Run Code Online (Sandbox Code Playgroud)

如果target.foo.bar.baz链的任何部分结果为null,那么整个事情将评估为null,从而避免NullReferenceException.

我想要一个Lift可以模拟这种事情的扩展方法:

value = target.Lift(x => x.foo.bar.baz); //returns target.foo.bar.baz or null
Run Code Online (Sandbox Code Playgroud)

我试过的: …

c# lambda expression-trees nullreferenceexception lifting

22
推荐指数
1
解决办法
3650
查看次数

MVC 3复选框始终返回true,即使未选中也是如此

我有以下代码

@foreach (var item in Model.Defaults)
    {
        <tr class="CertainCategory">
            <td>
                @item.Item1
            </td>
            <td>
                @Html.CheckBoxFor(c => c.Use)
                @Html.Hidden("guid", guid.guid.ToString())
            </td>
        </tr>
    }
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用AJAX向控制器方法提交表单值.我的问题是复选框的值总是发送为true.

$('.CropUsageItem').each(function () {

            var guid = $(this).find("#guid").val();
            var chk = $(this).find("#use").val();
            var data = {
                guid: guid,
                chk: chk
            };

            $.ajax({
                async: false,
                type: "POST",
                url: "DefaultValues/SaveDefault",
                data: data
            });
        });
Run Code Online (Sandbox Code Playgroud)

我搜索过类似结果的StackOverflow,但没有一个完全适用于我的场景.我该如何发送正确的值?

checkbox asp.net-mvc jquery asp.net-mvc-3

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

为什么我不能将泛型类型的一个实例化转换为另一个?

如何实现结构以便执行以下转换?

var a = new StatusedValue<double>(1, false);
var b = (StatusedValue<int>)a;
Run Code Online (Sandbox Code Playgroud)

我的实现应该表现得相似Nullable<T>,哪种方式正常.但是,此代码失败System.InvalidCastException:

public struct StatusedValue<T>  where T : struct
{
    public StatusedValue(T value) : this(value, true)
    {

    }

    public StatusedValue(T value, bool isValid)
    {
        this.value = value;
        this.isValid = isValid;
    }

    private T value;
    private bool isValid;

    public static implicit operator StatusedValue<T>(T value)
    {
        return new StatusedValue<T>(value);
    }

    public static explicit operator T(StatusedValue<T> value)
    {
        return value.value;
    }
}
Run Code Online (Sandbox Code Playgroud)

结果:

无法将"StatusedValue`1 [System.Double]"类型的对象强制转换为"StatusedValue`1 [System.Int32]".

c# generics struct casting

20
推荐指数
2
解决办法
1502
查看次数

是否最好将打开的SqlConnection作为参数传递,或者在每个方法中调用一个新的?

如果我要调用的方法/函数需要一个开放的SqlConnection,我将在调用该函数的方法中打开它.例如:

protected static void btnSubmit(){
   conn.Open();
   myMethod(someParam, conn);
   conn.Close();
}

protected static void myMethod(object someParam, SqlConnection conn){
   //Some SQL commands etc here..
}
Run Code Online (Sandbox Code Playgroud)

我这样做,所以我:

  • 每个进程只能打开和关闭1个SqlConnection

但是,如此构造我的代码会更好:

protected static void btnSubmit(){
   myMethod(someParam);
}

protected static void myMethod(object someParam){
   SqlConnection conn = New SqlConnection(".....");
   conn.Open();
   //Some SQL commands etc here..
   conn.Close();
}
Run Code Online (Sandbox Code Playgroud)

我看到以这种方式构造它的优点是:

  • 我不必为每个方法传递额外的参数
  • 如果稍后该方法不再具有SQL命令,则每次都不会调用未使用的参数

我看到的缺点是:

  • 如果myMethod是一个递归方法,那么当它自己调用它将打开另一个SqlConnection,依此类推,等等.
  • 如果btnSubmit正在调用所有需要SqlConnection的多个方法,则每个方法都将打开并关闭新连接.

这样做的最佳方法是什么,哪种方式最常用?

c# sqlconnection

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

在"out"参数中传递值类型会导致变量被装箱吗?

我知道拳击和拆箱在性能方面相对昂贵.我想知道的是:

将值类型传递给方法的out参数会导致变量的装箱/取消装箱(从而导致性能下降)吗?编译器可以优化它吗?

  int number;
  bool result = Int32.TryParse(value, out number);
Run Code Online (Sandbox Code Playgroud)

c# performance boxing unboxing

14
推荐指数
3
解决办法
2581
查看次数