相关疑难解决方法(0)

Java到C#:在Generic中扩展

我试图将这个Java(Android)代码转换为c#(MonoDroid),但我不明白 <Item extends OverlayItem>

public class BalloonOverlayView<Item extends OverlayItem> extends FrameLayout
Run Code Online (Sandbox Code Playgroud)

c# java android xamarin.android

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

具有整数约束的C#泛型方法拒绝从整数强制转换为泛型类型

如果我有一个被限制为类型'int'的泛型方法,那么我当然应该能够将一个整数转换为泛型T类型.例如...

    public T ExampleMethod<T>(int unchanged) where T : int
    {
        return (T)unchanged;
    }
Run Code Online (Sandbox Code Playgroud)

...编译器抱怨无法将类型'int'转换为'T',但我有一个约束,表明目标是整数.那肯定应该有用吗?

更新:

实际情况是我想要一个返回枚举值的辅助方法.所以我理想的助手方法会更像这样....

public T GetAttributeAsEnum<T>(XmlReader reader, string name) where T : enum
{
    string s = reader.GetAttribute(name);
    int i = int.Parse(s);
    return (T)i;
}
Run Code Online (Sandbox Code Playgroud)

......并像这样使用它......

StateEnum x = GetAttributeAsEnum<StateEnum>(xmlReader, "State");
CategoryEnum y = GetAttributeAsEnum<CategoryEnum>(xmlReader, "Category");
OtherEnum z = GetAttributeAsEnum<OtherEnum>(xmlReader, "Other");
Run Code Online (Sandbox Code Playgroud)

......但你无法通过枚举来约束.

c# generics

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

为什么使用泛型类型,然后将其限制为带有“where”的一种类型?

使用这个有什么好处:

DataTable CopyToDataTable<T>(this IEnumerable<T> source) where T : DataRow
Run Code Online (Sandbox Code Playgroud)

你可以这样做:

DataTable CopyToDataTable<T>(this DataRow[] source)
Run Code Online (Sandbox Code Playgroud)

对不起,如果这是一个愚蠢的问题,我是新手

.net c#

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

标签 统计

c# ×3

.net ×1

android ×1

generics ×1

java ×1

xamarin.android ×1