我是新来的艾达,有一些问题。我创建了一个通用日期包:
Date.ads:
GENERIC
PACKAGE Date IS
TYPE MonthName IS (January, February, March, April, May, June, July, August,
September, October, November, December);
TYPE DateRec IS RECORD
Month: MonthName;
Day: Integer RANGE 1..31;
Year: Integer;
END RECORD;
P
为什么不是原始类型,泛型类中的静态变量?
例如,
public class MyType<E> {
class Inner { }
static class Nested { }
public static void main(String[] args) {
MyType mt; // warning: MyType is a raw type
MyType.Inner inn; // warning: MyType.Inner is a raw type
MyType.Nest
TDictionary分配给TObject变量。我可以将TOBject转换回同一个项目中的TDictionary。但是,如果转换是在引用的bpl项目中完成的,则转换将失败,具体取决于项目的引用方式。
测试代码:
procedure TestTDefault.Test1;
var
Obj: TObject;
begin
Obj := TDictionary<string, Integer>.Create;
Check(Obj is TDictionary<string, Integer>);
CheckNotNull(Obj as TDictionary&
这是从编译器内部角度提出的问题。
我对泛型感兴趣,而不是模板(C++),所以我用C#标记了这个问题。而不是Java,因为AFAIK两种语言中的泛型在实现上有所不同。
当我查看语言w/o泛型时,它非常简单,您可以验证类定义,将其添加到层次结构中,仅此而已。
但是如何处理泛型类,更重要的是如何处理对它的引用呢?如何确保每个实例化的静态字段都是单数(即每次解决泛型参数时)。
假设我看到一个电话:
var x = new Foo<Bar>();
我是否向层次结构中添加了新的Foo_Bar类?
更新:到目前为止,我只发现了两篇相关的文章,然而,即使它们在“如何自己做”的意义上也没有太多的细节
我希望获得一个使用反射接受Action<T>参数的方法定义。我使用的是.NET核心1.1。
由于该类有两个名称相同的方法,所以我试图检查接受参数的类型,以确保获得正确的方法定义(而不是其他重载),但比较似乎不起作用。
下面是一些显示这个问题的代码:
using System;
using System.Linq;
using System.Reflection;
class ReflectMe {
public void SomeMethod<T>(Action<T> action) {
action(default(T));
我有一个这样的界面:
interface Transformer {
public String transform( List<Object> elements );
}
实施:
class XMLTransformer implements Transformer{
public String transform( List<MyXMLElements> elements );
}
class TXTTransformer implements Transformer {
public String transform
我们可以通过泛型使用多播委托吗?请用下面的代码解释它是如何实现的。
delegate string multidelegate<T1,T2>(T1 a,T2 b);
class mylogic
{
public void Method1(int a, int b)
{
Console.WriteLine("This is Method1 where value of multiplication is {0}",a*b);
}
public void Method2(double a, double b)
{
我注意到,与C++不同的是,在C#中,您可以组合使用虚拟方法和泛型方法。例如:
using System.Diagnostics;
class Base {
public virtual void Concrete() {Debug.WriteLine("base concrete");}
public virtual void Generic<T>() {Debug.WriteLine("base generic");}
}
class Derived : Base {
public override void Conc
问题很简单。
我有三种类似的通用结构:
主结构
Public Structure Pointer(of T) 'Here is where the data type must be constrained
Dim BP As BasePointer
Dim BV As BaseValue(of T)
'Some code
End Structure
指针结构
Public Structure BasePointer 'This is a pointer itself, no problem (I think)
'Some co
为什么允许这样做:
List<List<?>> list = new ArrayList<List<?>>()
但不是这个?
List<?> list = new ArrayList<?>(); //Compile error: "Cannot instantiate the type ArrayList<?>"
我正在设计一个能够反序列化某些文件的类,我想知道这两个选项的含义是什么:
// option 1 - generic class
public class XmlConfigurationManager<T>
{
public T ReadConfigurationAndWriteDefault(string configurationPath, Func<T> defaultConfiguration)
{
...
}
public T Deserialize(string configurationPath)
在MSDN ()上,它说:
泛型方法可以出现在泛型或非通用类型上。需要注意的是,方法不是泛型的,仅仅因为它属于泛型类型,甚至是因为它具有形式参数,其类型是封闭类型的泛型参数。只有当方法有自己的类型参数列表时,它才是泛型的。在以下代码中,只有方法G是泛型的。
M不是所有意图和目的都是通用的吗?如果你在T型的某些例子上调用方法M,M只能有T型的输入和输出参数,使用这样的非神经型方法M会有什么问题吗?
class A
{
T G<T>(T arg)
{
T temp = arg;
//...
return temp;
我想要这样的东西:
class Foo<T>{...}
class Boo<T>{
Queue<T> stuff = new Queue<T>();
public void Boo(Foo<T>){...};
}
...
//Extract the generic type - string - to define the type
//of MyBoo.
var MyBoo = new Boo(new Foo<string>());
我得到了错误“泛型类型'Boo‘需要'1’类型参数
如何传递泛型参数的类名?
class Sample<T>{
public getTypeName(): void {
alert(T.name)
//or
alert(new T().constructor.name)
}
}
class Person {
public FullName:string
}
new Sample<Person>().getTypeName()
我需要把输出打印成"Person“吗?
接口(用于返回类型)中的方法级泛型有意义吗?它们有什么用处吗?示例:-
public interface ABX {
public <T> T fx(String p);
}
我可以简单地使泛型类级别如下
public interface ABX<T> {
public T fx(String p);
}
有没有什么情况下我希望泛型在接口/抽象类中是方法级别的(对于返回类型)?