C# 怎么将类作为参数传递?

例如:我定义了实体类X1,X2,X3;还定义了

class A
{
public string ret { get; internal set; }
public string msg { get; internal set; }
public X1 data { get; internal set; }
}

class B
{
public string ret { get; internal set; }
public string msg { get; internal set; }
public X2 data { get; internal set; }
}

class C
{
public string ret { get; internal set; }
public string msg { get; internal set; }
public X3 data { get; internal set; }
}

能不能将A、B、C三个类合成一个实体类,而将X1、X2、X3作为参数在合并类中的构造函数传入。
如可否这样:
class D
{
System.Type X;
public D(System.Type type)
{
this.X=type;
}
public string ret { get; internal set; }
public string msg { get; internal set; }
public X.GetClass Data { get; internal set; }
}
当然啦,X.GetClass是不存在的,不知能不能类似这样的方法实现?

参考下面代码:

public static void GetResult(Person p)
{
Console.WriteLine(p.b);
}
public class Person
{
public int a { get; set; }
public string b { get; set; }
}
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-16
个人觉得有很多种方法:

1、用Object类:

class ABC 
{
public string ret { get; internal set; }
public string msg { get; internal set; }
public Object data { get; internal set; }
}

 2、用dynamic

class ABC
{
public string ret { get; internal set; }
 
public string msg { get; internal set; }
 
public dynamic data { get; internal set; }
}

 3、用泛型

class ABC<T>
{

public string ret { get; internal set; }

public string msg { get; internal set; }

public T data { get; internal set; }

}

 就你的情况,个人推荐用泛型。

追问

Very good!用泛型能解决我的问题,因为在调用合并类的时候要确定 data的类型。看来我该多学学泛型的使用,非常感谢!!!

本回答被提问者采纳
第2个回答  2019-11-21
c#中数组是可以做为参数传递的,c#中传值可以用form与form之间传参数的方法来实现。只要在第二个form里的默认构造函数添加具体的参数,然后在第一个form里具体实现传值的事件里添加form2
frm2=new
form2(数组参数);frm2.showdialog();第二个form加载后,就可以在第二个form添加变量获取传递的参数了。
第3个回答  2013-09-16
按照你下面的方法你是想用Entity Framework来实现了,将A、B、C这这三类合并成一个实体类对C#的编程规范来说是不科学的。你的设计本身就是在类里面封装的属性,他们是可以直接实例化被调用的。
从你的描述来看X1、X2、X3三个实体类可以按照上面回答的这样“多个类合一个实例的话,可以用多重继承的方式,但是要这三个类有附属关系”这个说法我想合理。
第4个回答  2013-09-16
做为参数应该传递的话,首先应该满足是一个实例、一个对象吧

传递类需要把类实例化之后再传参。。

多个类合一个实例的话,可以用多重继承的方式,但是要这三个类有附属关系

纯属C#小白意见,说错莫怪

C# 怎么将类作为参数传递?
public static void GetResult(Person p){Console.WriteLine(p.b);}public class Person{public int a { get; set; }public string b { get; set; }}

C# 类名 当参数传递
结构是值类型,无需实例化,所以根本没必要作为参数去传递。你想在其他方法中访问的话直接通过结构名.属性即可。class1.j就可以访问到该属性了。如果说要把类当参数传递,我帮你更正下。首先定义一个类,而不是结构。public class class1{ \/\/这里我把属性初始化并赋值,方便后面测试 public int...

C#多个项目之间如何传递值呀?
1、添加引用,使用全局变量或者是在构造函数中传递参数;2、写一个公共类或是接口,用它来传递参数;3、使用事件和委托来传递参数;希望对你有帮助,如有疑问请追问或是Hi

C#如何将类型Type作为泛型T的参数T传递
现在我们分析一下,首先这个方法需要指出两个参数的类型,这里定为泛型类型T1和T2,这里的限定是IEnumerable,这样我们才可随意枚举这两个参数的元素。由于要比较元素大小而元素的类型不确定,所以还需要一个泛型类型指定两个参数中元素的类型,这里用泛型类型TElement。因为需要比较大小,这里加上限定IComparab...

在C#中何为参数,参数的定义是什么?
当类作为参数的时候,参数被修改时,可能修类成员的值. 2.引用方式参数传递 如果我门将参数作为引用方式传递,也就是用ref修饰参数。ref方式传递引用方式传递引用类型和引用方式传递值类型,都会保存方法中的修改. 1.值参数的调用 在Main函数中声明了一个i,这时候在内存的堆栈中就会专门为i开辟出一...

C#两个项目之间如何传递参数
稳定的办法:用sendmessage,为了防止两个项目之间使用传输数据丢失,将要传输的数据写到一个文件或者注册表里面,接收方接到这个消息后访问该文件 如果你是一个程序启动另外一个程序,启动的时候传一些参数那就简单了。string mainPath = basepath + "\/main.exe";Process.Start(mainPath, "参数");...

C#中传值的方法共有几种?烦请举例
第一种方法就是静态变量机制,C#公布静态变量就是将该类的已有的实例公开,和VC做法雷同,假设我们在一个窗体中这么写:public static String str="";void loadForms(object sender,EventArgs e){ Form2 f=new Form2(); textBox1.Text=str; f.ShowDialog();\/\/一定不要用show}另一个窗...

C#中类的方法怎么用的?
C#中方法的参数有四种类型:1. 值参数类型 (不加任何修饰符,是默认的类型)2. 引用型参数 (以ref 修饰符声明)3. 输出型参数 (以out 修饰符声明)4. 数组型参数 (以params 修饰符声明)=== 1.值传递: 值类型是方法默认的参数类型,采用的是值拷贝的方式。也就是说,如果使用的是值类型...

C#中能够实现将任意方法作为参数传入一个指定方法吗
static void Main(string[] args){ foreach (Amb a in GtA()) \/\/这个foreach里面的参数也是一个方法GtA(),只不过方法的返回值也是一个数组,所以也可以。{ Console.WriteLine("载具 {0} 行驶1000千米需要 {1} 小时", a.Name, a.Run(1000));} Console.ReadLine();} static Amb[] GtA(...

c#中不同类之间如何实现值的传递
protected string id ;protected string name ;protected int age;public Person(string id, string name, int age){ this.id = id;this.name = name;this.age = age;} public virtual void Display(){ Console.WriteLine("Name: {0}", name);Console.WriteLine("ID: {0}", id);Console....

相似回答