小编Tim*_*mwi的帖子

泛型类型的隐式运算符

使用隐式运算符有什么问题,如下所示:

//linqpad c# program example
void Main()
{
    var testObject = new MyClass<int>() { Value = 1 };

    var add = 10 + testObject; //implicit conversion to int here
    add.Dump(); // 11
}

class MyClass<T>
{
    public T Value { get; set; }
    public static implicit operator T (MyClass<T> myClassToConvert)
    {
        return myClassToConvert.Value;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想我可以这样对待为对象的值类型的实例,但看到我从来没有见过这样我想也许有一个理由的例子并不做这样的事情,有人能指出?

在我实际的代码,我想这样的数据抽象层的一部分,这样我就可以用信息返回对象描述的基础数据,但允许逻辑代码把它当作一个值类型时都需要知道是值,同时保持一切美观,并与泛型类型安全.

c# generics implicit-conversion

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

将XmlDocument插入XmlDocument节点

我用一个节点创建了一个基本的XmlDocument:

XmlDocument bigDoc = new XmlDocument();
bigDoc.LoadXml("<Request></Request>");
Run Code Online (Sandbox Code Playgroud)

我正在获取另一个我想在<Request>节点内插入的XmlDocument .它对我不起作用:

 XmlNode requestNode =  bigDoc.FirstChild;
 requestNode.AppendChild(anotherXMLDocument);
Run Code Online (Sandbox Code Playgroud)

它引发了一个例外.

如何在另一个XmlDocument节点中插入XmlDocument?

.net c# xmldocument insert xmlnode

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

如何为其模型调用"null"的部分视图?

假设我有一个部分视图,UserDetails@model子句被设置为一个名为的模型类User.

现在假设我有另一个看起来像这样的模型类:

public sealed class SpecialModel
{
    public User SpecialUser;
    public ... // other stuff
}
Run Code Online (Sandbox Code Playgroud)

在视图中SpecialModel,我想调用上面提到的局部视图:

@model MyProject.Models.SpecialModel
@{ ViewBag.Title = "..."; }
<div class='user'>@Html.Partial("UserDetails", Model.SpecialUser)</div>
Run Code Online (Sandbox Code Playgroud)

如果用户不是null这样,这可以正常工作.但是,如果用户是null,我得到这个例外:

System.InvalidOperationException:传递到字典中的模型项的类型为"MyProject.Models.SpecialModel",但此字典需要"MyProject.Models.User"类型的模型项.

显然,异常消息是谎言.如何正确解决这个问题,以便我能null正常通过?

asp.net-mvc partial-views asp.net-mvc-3

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

如何更改任务栏上按钮的顺序?

有一些免费软件工具(例如,Taskbar Shuffle,XNeat等),它们能够改变任务栏上按钮的顺序,而无需实际关闭或打开任何窗口.不幸的是,它们似乎都不是开源的.

更改任务栏中按钮顺序所需的API调用是什么?

windows winapi taskbar button

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

将连续的相同项分组:IEnumerable <T>到IEnumerable <IEnumerable <T >>

我有一个有趣的问题:给定一个IEnumerable<string>,是否有可能IEnumerable<IEnumerable<string>>在一次传递中产生一组相同的相邻字符串?

让我解释.

1.基本说明性样本:

考虑以下IEnumerable<string>(伪表示):

{"a","b","b","b","c","c","d"}
Run Code Online (Sandbox Code Playgroud)

如何获得一个IEnumerable<IEnumerable<string>>会产生某种形式的东西:

{ // IEnumerable<IEnumerable<string>>
    {"a"},         // IEnumerable<string>
    {"b","b","b"}, // IEnumerable<string>
    {"c","c"},     // IEnumerable<string>
    {"d"}          // IEnumerable<string>
}
Run Code Online (Sandbox Code Playgroud)

方法原型将是:

public IEnumerable<IEnumerable<string>> Group(IEnumerable<string> items)
{
    // todo
}
Run Code Online (Sandbox Code Playgroud)

但它也可能是:

public void Group(IEnumerable<string> items, Action<IEnumerable<string>> action)
{
    // todo
}
Run Code Online (Sandbox Code Playgroud)

...... action每个子序列都会被调用.

2.更复杂的样本

好的,第一个样本非常简单,只是为了使高级意图清晰.

现在假设我们正在处理IEnumerable<Anything>,在这里Anything定义的类型如下:

public class Anything
{
    public string Key {get;set;}
    public double Value {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我们现在想要生成基于Key的子序列(Anything将具有相同键的每个连续组分组)以便稍后使用它们以便按组计算总值:

public void Compute(IEnumerable<Anything> items) …
Run Code Online (Sandbox Code Playgroud)

c# algorithm performance ienumerable

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

将表达式树作为参数传递给另一个表达式树

我有两个表达式树定义如下:

private Expression<Func<TEntity, TPropertyResult>> PropertyAccessor { get; set; }
Run Code Online (Sandbox Code Playgroud)

private Expression<Func<TPropertyResult, bool>> TestExpression { get; set; }
Run Code Online (Sandbox Code Playgroud)

我需要创建一个新的表达式树,它将产生相当于:

var expression = p => this.TestExpression(this.PropertyAccessor(p));
Run Code Online (Sandbox Code Playgroud)

使用时Expression.Invoke(this.TestExpression, this.PropertyAccessor),我收到以下错误

{"类型'System.Func`2 [MyEntity,System.String]'的表达式不能用于'System.String'类型的参数"}

TPropertyResult 我测试时是一个字符串.

我试过用Expression.Call或者Expression.Invoke.没运气.我该怎么用?

c# lambda expression-trees

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

是否有任何代码编辑器适用于触摸屏手机?

是否有适用于手机的代码编辑器(如eclipse或visual studio)(如诺基亚5800)?

所以我想要的是在手机上编辑我的C/C++/C#代码.(我有诺基亚,所以这是我的主要兴趣,但我也对其他手机感兴趣,比如基于Android的手机.)

我不需要编译的能力,但我喜欢编码和代码突出显示.

c c# mobile editor

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

如何使用linq to XML将条件节点添加/插入到XML中

我生成了一个像这样的xml文件:

 XElement employees =
        new XElement("Work",
           new XElement("record",
              new XElement("Name", textBox1.Text),
              new XElement("Phone", "206-555-0144"),
              new XElement("Address",
                    new XElement("Street1", "123 Main St"),
                    new XElement("City", "Mercer Island"),
                    new XElement("State", "WA"),
                    new XElement("Postal", "68042")
             )),
             new XElement("record",
              new XElement("Name", "22222"),
              new XElement("Phone", "353245345"),
              new XElement("Address",
                    new XElement("Street1", "sdfain St"),
                    new XElement("City", "asdf Island"),
                    new XElement("State", "QLD"),
                    new XElement("Postal", "54322")
              )),
              new XElement("record",
              new XElement("Name", "Peter"),
              new XElement("Phone", "1234"),
              new XElement("Address",
                    new XElement("Street1", "sd St"),
                    new XElement("City", "cbr"),
                    new XElement("State", "act"),
                    new XElement("Postal", "2600") …
Run Code Online (Sandbox Code Playgroud)

c# xml linq

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

在.Net中使用条件运算符的奇怪行为

这让我非常难过.也许我现在太累了.

    Rectangle rectangle = new Rectangle(0, 0, image.Width, image.Height);
    Rectangle cropArea = inputArea == null ? rectangle : inputArea.Value;

    if (inputArea == null)
        cropArea = rectangle;
Run Code Online (Sandbox Code Playgroud)

inputArea是一个可以为null的Rectangle,在我的特定情况下为null.

前两个语句将cropArea初始化为0.然而,第二个语句根据图像宽度和高度生成正确的cropArea.我是否误解了条件运算符的任何内容?当inputArea = null时,它似乎不返回矩形?使用值类型时是否有任何怪癖?

编辑:好吧,我应该先尝试一下:重启VS. 似乎调试器骗了我,或者其他东西.无论如何,现在工作.谢谢.

.net c# nullable value-type conditional-operator

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

下载前1000个字节

我需要使用C#从互联网上下载文本文件.文件大小可能非常大,我需要的信息总是在前1000个字节内.这可能吗?

.net c#

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