gpt4 book ai didi

c# - 从 Type 的变量中声明参数的类型?

转载 作者:行者123 更新时间:2023-11-30 20:04:22 25 4
gpt4 key购买 nike

我怎样才能把变量的类型放在方法参数中,因为某些东西是由类变量定义的?例如:

class MyClass {
private Type _type;

public MyClass(Type type) {
_type = type;
}

public void SomeMethod(_type param) { //... }
public _type OtherMethod() {}

}

所以,我的想法是,我可以将动态类型设置为类中的变量,并使用 Type变量作为其他对象的类型。

是否可以在 C# 中执行此操作?

编辑:

我决定让我的问题更清楚,并解释我为什么要求这样的功能。我试过泛型。然而,泛型的问题是每次我引用该类的对象时都必须声明该类的类型,例如:MyClass<TSomeType> param

在我的场景中,我有一个 List<MyClass> dataList包含 MyClass .如果我在 MyClass 上有一个泛型,那么 dataList 必须是 List<MyClass<TSomeType>> .在这种情况下,我被卡住了,因为列表只能包含 MyClass<TSomeType> .一旦我为整个类(class)声明了类型,我就不能再有其他类型了。这就是为什么我想知道是否有更动态的方式来声明类型,比如我可以将类的类型存储到变量中,然后像使用类类型一样使用这个变量。

最佳答案

Is it possible to do this in C#?

没有。编译器将如何处理 MyClass ?它不可能知道方法调用是否有效。

不过您可以改用泛型:

class MyClass<T>
{
public void SomeMethod(T param) { ... }
public T OtherMethod() { ... }
}

此时,当编译器看到一个 MyClass<string>它知道 SomeMethod("foo")有效,但是 SomeMethod(10)不是。

如果您真的直到执行时才知道类型,那么您不妨使用 object :

class MyClass
{
public void SomeMethod(object param) { ... }
public object OtherMethod() { ... }
}

... 并可能对 Type 进行执行时检查如果你真的想要的话。

关于c# - 从 Type 的变量中声明参数的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13071208/

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