小编Cha*_*ion的帖子

URL编码URL

是否有一种.NET编码方法可用于编码要在URL参数中传递的URL?

比如说我有:

url_of_interest = "http://asdf.asdf/asdf.htm"

我想在上传到网络应用程序时将其作为一(1)个URL表单参数包含在内:

http://mywebservice/upload?url=<<encoded URL here>>

.net url urlencode

5
推荐指数
1
解决办法
2167
查看次数

我如何实现IEnumerable?

我有一个包含静态对象数的类.需要经常将此类与其他将成为简单List对象的类进行"比较".

public partial class Sheet
{
 public Item X{ get; set; }
 public Item Y{ get; set; }
 public Item Z{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这些项目显然不会是"X""Y""Z",这些只是通用名称.问题是由于需要做的事情的性质,列表不起作用; 即使这里的所有东西都是Item类型.它就像一个非常具体的事项清单,必须在代码和运行时进行测试.

这一切都很好,很好; 这不是我的问题.我的问题是迭代它.例如,我想做以下事情......

List<Item> UncheckedItems = // Repository Logic Here.
Run Code Online (Sandbox Code Playgroud)

UncheckedItems包含所有可用项目; CheckedItems是Sheet类实例.CheckedItems将包含从Unchecked移动到Checked的项目; 但是由于存储系统的性质,移动到已检查的项目无法从未选中删除.我只想迭代"已检查"并从"已检查"中的已取消选中的列表中删除任何内容.

所以很自然地,这会像普通列表一样.

foreach(Item item in Unchecked)
{
 if( Checked.Contains(item) )
 Unchecked.Remove( item );
}
Run Code Online (Sandbox Code Playgroud)

但由于"Sheet"不是"List",我不能这样做.所以我想实现IEnumerable以便我可以.有什么建议?我以前从来没有直接实现过IEnumerable,我很困惑从哪里开始.

c# ienumerable

5
推荐指数
1
解决办法
3339
查看次数

如何改进ECMAScript实现的递归功能?

经过一些反复测试后,我发现我的实现无法处理非常多的递归.虽然我在Firefox中运行了一些测试后发现这可能比我原先想象的更常见.我认为基本问题是我的实现需要3次调用来进行函数调用.第一次调用是一个名为的方法Call,它确保调用可调用对象并获取任何引用参数的值.第二次调用是在一个名为的方法Call中定义的ICallable接口.此方法创建新的执行上下文,并在尚未创建lambda表达式的情况下构建它.最后调用是函数对象封装的lambda.显然,进行函数调用非常繁重,但我确信通过一些调整,我可以在使用此实现时使递归成为可行的工具.

public static object Call(ExecutionContext context, object value, object[] args)
{
    var func = Reference.GetValue(value) as ICallable;
    if (func == null)
    {
        throw new TypeException();
    }
    if (args != null && args.Length > 0)
    {
        for (int i = 0; i < args.Length; i++)
        {
            args[i] = Reference.GetValue(args[i]);
        }
    }
    var reference = value as Reference;
    if (reference != null)
    {
        if (reference.IsProperty)
        {
            return func.Call(reference.Value, args);
        }
        else
        {
            return func.Call(((EnviromentRecord)reference.Value).ImplicitThisValue(), args);
        } …
Run Code Online (Sandbox Code Playgroud)

c# optimization recursion runtime ecma262

5
推荐指数
1
解决办法
189
查看次数

在try块中抛出异常而不是catch块?

我在我们的项目中继承了代码,看起来像这样.这是课堂上的一种方法.

protected override bool Load()
{
    DataAccess.SomeEntity record;

    try
    {
        record = _repository.Get(t => t.ID.Equals(ID));

        if (record == null)
        {
            throw new InvalidOperationException("failed to initialize the object.");
        }
        else
        {
            this.ID = record.ID;
            // this.OtherProperty = record.SomeProperty;
            // etc
        } 
    }
    catch (Exception)
    {
        throw;
    }

    return true;
}
Run Code Online (Sandbox Code Playgroud)

如果我然后从我的UI层调用这个Load方法,我可能想要一个try catch块来捕获由于加载实例失败导致的任何异常,例如InvalidOperationException,但上面的代码对我来说是错误的.

catch语句不会吞下InvalidOperationException吗?catch语句还将捕获_repository.Get的潜在问题,以及如果记录有效则设置属性的潜在问题.

我想我应该通过添加更多try catch语句来重组它来分别处理Get操作和属性设置操作,或者添加更多catch块来处理不同的异常,但我问了一位同事,他建议try catch与此无关.案件,应该完全删除,留下如下:

protected override bool Load()
{
    DataAccess.SomeEntity record;

    record = _repository.Get(t => t.ID.Equals(ID));

    if (record == null)
    {
        throw new InvalidOperationException("failed to initialize the object.");
    } …
Run Code Online (Sandbox Code Playgroud)

c# exception-handling

5
推荐指数
2
解决办法
2760
查看次数

C#正则表达式帮助 - 验证输入

我需要验证用户是否以以下格式输入文本:

####-#####-####-###

我可以使用Regex.Match吗?

c# regex

5
推荐指数
1
解决办法
335
查看次数

如何防止$ .getScript加载相同的文件?

我正在尝试使用$ .getScript动态加载file.js.我有几个选择选项,每次点击加载不同的脚本.我只想调用它一次,如果可能的话,在点击另一个选项时从dom中删除它,但是firebug说在下一次随后的点击中反复加载相同的脚本.尝试了几种解决方案,但发现了意想不到的结

  1. 在回调中放置unbind click或event right.这个会在下次点击时杀死点击事件.我仍然希望点击发生.也许我做错了.
  2. 使用.length检查网址是否没有运气
  3. 如果在dom中已有变量/函数,则在脚本中使用变量/函数

我错过了什么,或者它应该是这样吗?我在jquery论坛上就此问题找到了一个永恒的问题:)希望在这里找到更好的运气.谢谢你的帮助.

api ajax jquery

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

为什么即使在定位3.5时也允许某些C#4功能?

我们升级到VS 2010,但我们还没有升级到.NET 4.0.我们所有的项目仍明确针对3.5.

今天,开发人员检查了如下所示的代码:

delegate T Generator<out T>();
Run Code Online (Sandbox Code Playgroud)

据我所知,"T"和"out T"是C#4.0的功能.根据我们的构建服务器,它没有安装.NET 4.0,我是对的.办理登机手续打破了建筑.但是,为什么它会在他的机器上构建呢?为什么VS只是忽略了项目的目标框架?

其他C#4.0功能,如动态关键字,不构建在开发人员的机器上.

visual-studio-2010 c#-4.0

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

当有人想要/需要在.NET中使用BitArray类时,有人能给我一个真实世界的例子吗?

我理解如何使用BitArray类,但我正在寻找一个可以将它用于真实世界程序的实例.

.net

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

如何将json字符串解析为javascript对象

我有这种json字符串:

{"total":"3","data":[{"id":"4242","title":"Yeah Lets Go!","created":"1274700584","created_formated":"2010-07-24 13:19:24","path":"http:\/\/domain.com\/yeah"}{"id":"4242","title":"Yeah Lets Go!222","created":"1274700584","created_formated":"2010-07-24 13:19:24","path":"http:\/\/domain.com\/yeah222"}{"id":"4242","title":"Yeah Lets Go!333","created":"1274700584","created_formated":"2010-07-24 13:19:24","path":"http:\/\/domain.com\/yeah333"}]}
Run Code Online (Sandbox Code Playgroud)

我需要将它解析为javascript对象我相信吗?然后进入html像:

<a href="http:www..domain.com/yeah">Yeah Lets Go!</a>
<p class="date">Created: 2010-07-24 13:19:24"</p>
Run Code Online (Sandbox Code Playgroud)

但我不知道如何解析它等等.

我从中得到了这个字符串:

$('a.link').click(function() {
var item_id = $(this).attr("href").split('#')[1];
$.get(base_url+'/ajax/get_itema/'+item_id+'/0/3/true', null, function(data, status, xhr) {
$('#contentCell').html(data);
});
Run Code Online (Sandbox Code Playgroud)

javascript ajax json

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

MailboxProcessor类型是锁的替代品吗?

我一直在慢慢研究F#带来的所有功能.一个特别引起我兴趣的是MailboxProcessor.

  1. 在C#中相当于这个很可能使用锁.我们可以将其MailboxProcessor视为锁的替代品吗?
  2. 在下面的例子中,我做了什么特别天真的事情,或者你能看到任何可以改进的东西吗?


module Tcp =
    open System
    open System.Collections.Generic
    open System.Net
    open System.Net.Sockets
    open System.Threading    

    type SocketAsyncMessage =
        | Get of AsyncReplyChannel<SocketAsyncEventArgs>
        | Put of SocketAsyncEventArgs
        | Dispose of AsyncReplyChannel<MailboxProcessor<SocketAsyncMessage>>

    type SocketAsyncEventArgsPool(size:int) =             
        let agent = 
            lazy(MailboxProcessor.Start(
                    (fun inbox ->
                        let references = lazy(new List<SocketAsyncEventArgs>(size))       
                        let idleReferences = lazy(new Queue<SocketAsyncEventArgs>(size))                    
                        let rec loop () = 
                            async {
                                let! message = inbox.Receive()
                                match message with
                                | Get channel -> 
                                    if idleReferences.Value.Count > 0 then
                                        channel.Reply(idleReferences.Value.Dequeue())
                                    else …
Run Code Online (Sandbox Code Playgroud)

concurrency f# message-passing

3
推荐指数
1
解决办法
701
查看次数