小编tuk*_*aef的帖子

C#4.0动态:数字泛型的潜在高效解决方案?

在尝试Vector2<int/float/double>在C#中实现泛型之后,我自己遇到了这个问题,我已经对这个问题进行了一系列调查,这个问题也有描述:

不太通用的泛型?C#泛型中算术的可能解决方案

这些链接包含更多背景信息和迷人的解决方案方法:

http://www.yoda.arachsys.com/csharp/genericoperators.html

http://www.codeproject.com/KB/cs/genericnumerics.aspx

既然C#4.0已经推出了新的多功能dynamic类型,我对这个精彩的SO社区的问题是:它是一个可以用来构建高性能,通用Vector/Matrix /等的工具.数字类型?

显然,Vector2可以通过以下方式构建:

public struct Vector2
{
    public dynamic X;
    public dynamic Y;

    public Vector2(dynamic x, dynamic y)
    {
        this.X = x;
        this.Y = y;
    }

    public static Vector2 operator+(Vector2 a, Vector2 b)
    {
        return new Vector2(a.X + b.X, a.Y + b.Y);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是使用这种方法我们在这里没有类型约束,所以你可以做一个Vector2(3, 12.4572).有没有一种方法可以将动态成员与类型参数混合Vector2<int>来执行我们的数学运算,就像使用ints一样?

也许某种形式的铸造可以用来确保this.XT,虽然我不知道它会如何表现.

generics dynamic type-constraints c#-4.0

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

如何使用foreach跳过数组中的第一个元素?

说我有一个数组:

my @arr = (1,2,3,4,5);
Run Code Online (Sandbox Code Playgroud)

现在我可以通过foreach迭代它:

foreach ( @arr ) {
    print $_;
}
Run Code Online (Sandbox Code Playgroud)

但有没有办法从第二个(例如)迭代到最后一个?

提前致谢.

arrays perl foreach

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

具有逆变型参数和Unity容器的泛型

我有一个带逆变型参数的接口,比如说IFoo:

interface IFoo<in T> {}
Run Code Online (Sandbox Code Playgroud)

现在我有三个班:

class B {}

class D : B {}

class Foo : IFoo<B> {}
Run Code Online (Sandbox Code Playgroud)

如果我这样注册他们

container.RegisterType<IFoo<B>, Foo>();
Run Code Online (Sandbox Code Playgroud)

...然后尝试解决IFoo<D>,它失败,因为我没有真正注册IFoo<D>IFoo<> .很明显.

我当前的解决方案是迭代Registrations,找到RegisteredType可以从解析类型(IFoo<D>在我的情况下)分配的注册然后解析它的MappedToType类型.

问题很简单:有更好的方法吗?任何意见,将不胜感激.

谢谢.

编辑:

多一点背景.

我有一些映射器.

IMapper<in TSource, in TDest> : IMapper // IMapper is non-generic
{
    void Map(TSource source, TDest dest);
}
Run Code Online (Sandbox Code Playgroud)

我想只登记基础映射器(其中TSourceIEnumerable<T>),并能够解决此映射为每一个实现类型IEnumerable<T>,例如用于T[]:

object source = GetSource(); // runtime type is T[] …
Run Code Online (Sandbox Code Playgroud)

.net c# generics dependency-injection unity-container

6
推荐指数
1
解决办法
950
查看次数

HttpClient抛出System.ArgumentException:'windows-1251'不是受支持的编码名称

我正在写WinPhone 8.1应用程序.代码非常简单,适用于大多数情况:

string htmlContent;
using (var client = new HttpClient())
{
    htmlContent = await client.GetStringAsync(GenerateUri());
}
_htmlDocument.LoadHtml(htmlContent);
Run Code Online (Sandbox Code Playgroud)

但有时会抛出异常

htmlContent = await client.GetStringAsync(GenerateUri());
Run Code Online (Sandbox Code Playgroud)

InnerException {System.ArgumentException:'windows-1251'不是受支持的编码名称.参数名称:System.Globalization.EncodingTable.internalGetCodePageFromName(String name)的名称,
位于System.Net.Http.HttpContent的System.Globalization.EncodingTable.GetCodePageFromName(String name).<> c__DisplayClass1.b__0(任务任务)} System.Exception {System.ArgumentException}

HttpClient是否支持1251编码?如果没有,我该如何避免这个问题呢?或者是目标页面问题?或者我错了什么?

c# httpclient character-encoding windows-phone-8.1 windows-1251

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

通用接口在C#中不起作用的问题

我有一个界面:

interface IKey<TId, TName>
    where TId: IEquatable<TId>
    where TName: IEquatable<TName>
{
    TId Id { get; set; }
    TName Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后我像这样实现IKey:

class Item : IKey<int, string>
{
    int Id { get; set; }
    string Name { get; set; }
    //...
}
Run Code Online (Sandbox Code Playgroud)

我有可以使用这些项目的集合

class ItemCollection<T>
    where T : IKey<TId, TName> //Any type that implements IEquatable<...>
    where TId: IEquatable<TId>
    where TName: IEquatable<TName>
{
    //...
}
Run Code Online (Sandbox Code Playgroud)

问题是它不起作用.有没有办法可以正确地做到这一点?

还有另一个实现IEquatable,使用IKey<out TId, out TName>IKey<object, object>但它不适用于值类型和用途Object.Equals …

c# generics

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

如何为div中的所有粗体文本指定font-size?

我有div,包含一些html格式的文本normal, <b>bold</b>, <i>italic</i>.我需要更改该div中所有粗体文本的字体大小.

所以问题是如何在html/css或js中执行此操作?

html css

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

linq到EF,如何使用'top`方法

我想使用linq to Entities来提供top按降序列排序的记录Value1.

我知道我写的像:

MyCollection.OrderByDescending(item => item.Value1).FirstOrDefault();

但是我该如何使用以下方法Top呢?

System.Data.Objects.ObjectQuery.Top(string,params System.Data.Objects.ObjectParameter [])

c# sql linq linq-to-entities entity-framework

-1
推荐指数
1
解决办法
447
查看次数

如何使用数字正确地对列表<string>进行排序?

我遇到了难以对包含数字的列表项字符串进行排序.我希望我可以自动从最小到最大排序.这是我的代码:

// Initialize an array to store the numbers
List<string> tab_num = new List<string>();
tab_num.Add("A.3.2.1");
tab_num.Add("A.3.3.1");
tab_num.Add("A.1.0.1");
tab_num.OrderByDescending(num => num).ToList();
Run Code Online (Sandbox Code Playgroud)

为什么我的结果是假的?...

[1] A.3.2.1

[2] A.3.3.1

[3] A.1.0.1
Run Code Online (Sandbox Code Playgroud)

预期结果:

[1] A.1.0.1

[2] A.3.2.1

[3] A.3.3.1
Run Code Online (Sandbox Code Playgroud)

非常感谢

.net c# linq sorting

-2
推荐指数
1
解决办法
5293
查看次数