gpt4 book ai didi

c# - 泛型类的静态方法?

转载 作者:太空狗 更新时间:2023-10-29 18:06:27 25 4
gpt4 key购买 nike

好的,是这样的:

我有一个通用基类,我需要用一些静态值对其进行初始化。这些值与我的泛型基类加载的类型无关。

我希望能够做这样的事情:

GenericBaseclass.Initialize(AssociatedObject);

同时还有一个类这样做:

public class DerivedClass : GenericBaseclass<int>
{
...
}

有什么办法可以实现吗?我可以制作一个非泛型基类并将静态方法放在那里,但我不喜欢那种“hack”:)

最佳答案

如果值与泛型基类的类型无关,那么它们不应该在泛型基类中。它们要么在一个完全独立的类中,要么在泛型类的非泛型基类中。

请记住,对于静态变量,每种类型参数组合会得到不同的静态变量:

using System;

public class GenericType<TFirst, TSecond>
{
// Never use a public mutable field normally, of course.
public static string Foo;
}

public class Test
{
static void Main()
{
// Assign to different combination
GenericType<string,int>.Foo = "string,int";
GenericType<int,Guid>.Foo = "int,Guid";
GenericType<int,int>.Foo = "int,int";
GenericType<string,string>.Foo = "string,string";


// Verify that they really are different variables
Console.WriteLine(GenericType<string,int>.Foo);
Console.WriteLine(GenericType<int,Guid>.Foo);
Console.WriteLine(GenericType<int,int>.Foo);
Console.WriteLine(GenericType<string,string>.Foo);

}
}

听起来您真的不希望每个通用基类的 T 有一个不同的静态变量 - 所以您不能 你的通用基类。

关于c# - 泛型类的静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/702801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com