关于C#中泛型问题怎么调用

例如我定义了一个
namespace fanxingtest
{
public class Class1
{
public string Name { get; set; }

    public string Age { get; set; }

    public string Sex { get; set; }
}

}

namespace fanxingtest
{
public class Class2
{
public string Job { get; set; }

    public string Address { get; set; }

    public string Tel { get; set; }
}

}

然后我调用的时候
private void btn_test_Click(object sender, EventArgs e)
{
Random r = new Random();
int i = r.Next(1);
if (i == 0)
{

        }
        else
        {

        }

    }


    private List<Class1> C1Add()
    {
        List<Class1> ListC1 = new List<Class1>();
        Class1 c1 = new Class1();
        c1.Name = "小明";
        c1.Age = "18";
        c1.Sex = "男";
        ListC1.Add(c1);
        Class1 c11 = new Class1();
        c1.Name = "小红";
        c1.Age = "17";
        c1.Sex = "女";
        ListC1.Add(c11);
        Class1 c111 = new Class1();
        c1.Name = "小黄";
        c1.Age = "18";
        c1.Sex = "女";
        ListC1.Add(c111);
        Class1 c1111 = new Class1();
        c1.Name = "小田";
        c1.Age = "19";
        c1.Sex = "男";
        ListC1.Add(c1111);

        return ListC1;
    }

    private List<Class2> C2Add()
    {
        List<Class2> ListC2 = new List<Class2>();
        Class2 c2 = new Class2();
        c2.Job = "医生";
        c2.Address = "医院";
        c2.Tel = "120";
        ListC2.Add(c2);
        Class2 c22 = new Class2();
        c2.Job = "警察";
        c2.Address = "派出所";
        c2.Tel = "110";
        ListC2.Add(c22);
        Class2 c222 = new Class2();
        c2.Job = "消防员";
        c2.Address = "火警局";
        c2.Tel = "119";
        ListC2.Add(c222);
        Class2 c2222 = new Class2();
        c2.Job = "天气员";
        c2.Address = "气象台";
        c2.Tel = "114";
        ListC2.Add(c2222);

        return ListC2;
    }

            按钮点击的时候btn_test_Click,我并不能指定调用哪一个类。这个时候就可以用一个泛型来接收。有没有大哥能打一小段代码给看看是要怎么搞啊?

1个回答

泛型不是这样用的。
最终使用的时候必须明确是List<Class1>还是List<Class2>,这就必须是两个不同的变量。
如果你要用同一个变量,那么必须给Class1Class2提取出一个父类,然后把列表变量声明为List<ParentClass>

Tiger_Zhao
Tiger_Zhao 回复China_LY11: 在本例中,泛型的作用就是不用写专门的Class1ListClass2List,把列表通用化的同时还保证了类型限定。
2 年多之前 回复
China_LY11
一支糖包仔 谢谢,那泛型的用法是不是只是在每个类里面的参数不定义成string类型,而是不确定类型?
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于泛型调用问题
public class Movie1rnrnprivate static readonly string _connectionString; rnprivate string _title;private string _director;rnpublic string Titlernrnget return _title; rnset _title = value; rnrnpublic string Directorrnrnget return _director; rnset _director = value; rnpublic List GetAll()rnrnList results = new List();rnSqlConnection con = new SqlConnection(_connectionString);rnSqlCommand cmd = new SqlCommand("SELECT Title,Director FROM Movies", con);rnusing (con)rnrncon.Open();rnSqlDataReader reader = cmd.ExecuteReader();rnwhile (reader.Read())rnrnMovie1 newMovie = new Movie1();rnnewMovie.Title = (string)reader["Title"];rnnewMovie.Director = (string)reader["Director"];rnresults.Add(newMovie);rnrnrnreturn results;rn rn [color=#FF0000]static Movie1()rnrn_connectionString = WebConfigurationManager.ConnectionStrings["Movies"].ConnectionString;rn[/color] rnrn请问我如何调用movie1类里的getall()方法填充gridview ,最后那段代码是不是调用web.config中的链接字符串啊?请问是如何写的??
关于泛型调用的问题
using System;rnusing System.Collections.Generic;rnusing System.Linq;rnusing System.Text;rnrnnamespace ConsoleApplication2rnrn public class SortAlgorithmrn rn // 插入排序rn public static void InsertSort(T[] array, C comparer) ---------------(1)rn where C : IComparerrn rn for (int i = 1; i <= array.Length - 1; i++)rn rn //Console.Write("0: ", i);rn int j = i;rn while (j >= 1 && comparer.Compare(array[j], array[j - 1]) < 0)rn rn swap(ref array[j], ref array[j - 1]);rn j--;rn rn //Console.WriteLine();rn //AlgorithmHelper.PrintArray(array);rn rn rnrn // 交换数组array中第i个元素和第j个元素rn private static void swap(ref T x, ref T y)rn rn // Console.Write("0<-->1 ", x, y);rn T temp = x;rn x = y;rn y = temp;rn rn rnrn public class AlgorithmHelperrn rn // 打印数组内容rn public static void PrintArray(T[] array)rn rn Console.Write(" Array:");rn foreach (T item in array)rn rn Console.Write(" 0", item);rn rn Console.WriteLine();rn rn rnrn // 获得Comparer,进行比较rn public class ComparerFactoryrn rn public static IComparer GetIntComparer() --------------------------(2)???rn rn return new IntComparer();rn rnrn public class IntComparer : IComparerrn rn public int Compare(int x, int y)rn rn return x.CompareTo(y);rn rn rn rn public class clientrn rn static void Main(string[] args)rn rn int[] array = 42, 20, 17, 13, 28, 14, 23, 15 ;rn //int[] array = 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 ;rn AlgorithmHelper.PrintArray(array);rnrn SortAlgorithm.InsertSortrn (array, ComparerFactory.GetIntComparer());rn rn rnrnrn大家好,这段程序来自一位博主的排序算法,运用泛型实现的,不明白(2)中泛型表示直接把类型int加到IComparer<>中,为啥不和(1)中一样,直接用IComparer方式表示。运行了一下,改成(1)一样编译不过的。。。泛型的调用我理解应该都像(1)一样么。。如果用(2)的方式还是泛型方式么?实在想不通
关于C#泛型及反射调用的问题?
我现在有三个文件rnTest.exe rnrn FrmMain //类rnrnrnCore.dllrnrn ITestModule //接口rnrnrnTestModule.dll.rnrn ITestService //类rn TestService:ITestService //类rn ModuleA:ITestModule //继承接口ITestModulernrnrn我想在Frmain类中调用一个StartWCF()的方法,rn请问我在不知道TestModule.dll的情况下,是否可以用反射将ITestService,和TestService传给StartWCF方法,谢谢了。这里TestModule.dll的存放位置和ModuleA的类名可以通过配置文件告诉FrmMain.rnrn下边是我画的UML类图。rnhttp://hi.csdn.net/space-2425583-do-album-picid-1006718.html
C#关于泛型的问题
最近看到关于值类型和引用类型互转拆装箱的问题,在大量的值的情况下,拆装箱会造成较大的资源消耗,度娘之后发现,使用泛型可以规避这类消耗。经查许多资料,却发现,越看越糊涂。rn泛型到底是如何规避拆装箱的。rn看到有人写 rnList iList=new List();rn for(int i=0;i<10;i++) iList.add(i); rnforeach(int i in iList)rn Console.Write(i + " ,"); rn让我疑惑的是,值类型与值类型之间,似乎并不需要进行拆装箱吧,这个List中add进去的时候就是int类型,在write括弧里的其实也是int型,这里有必要这么写吗?这与rn for(int i=0;i<10;i++)rn Console.Write(i + " ,"); 有什么区别?rn其实,我最迷茫的就是,这个泛型到底如何解决拆装箱所造成的资源消耗?rn
C#关于泛型的问题!
public abstract class TTestrn rn public virtual void OutPut()rn rnrn rn rn public class StringTTest : TTestrn rn public override void OutPut()rn rn MessageBox.Show("输入的是字符串!");rn rn rnrn public class IntTTest : TTestrn rn public override void OutPut()rn rn MessageBox.Show("输入的是一个整数!");rn rn rn为什么在调用的时候new一个string的TTest在调用output方法时下面两个子类的方法都不被调用!!!!
泛型调用泛型的问题
我有一个基类 BLL.BaseBusiness 有一个泛型方法rnGetListToDatatableByWhere(string str)rnrn我在一个方法中调用这个泛型rn但是这个方法因为不知道传递过来的Tentity 具体是哪个类型rn只能声明成基类rnrn这样调用不了这个泛型方法 rn参考 http://www.cnblogs.com/teddyma/archive/2007/03/28/690946.html 的DynamicMethodProxyFactory组件 rn写下代码rnBLL.BaseBusiness langbll = new BLL.BaseBusiness();rn//创建一个内置缓存支持的DynamicMethodProxyFactory实例rn//Common.DynamicMethodHelper.DynamicMethodProxyFactory fac = new Common.DynamicMethodHelper.CachableDynamicMethodProxyFactory();rnMethodInfo mi2 = langbll.GetType().GetMethod("GetListToDatatableByWhere");rn//创建一个DynamicMethodDelegate访问同样的Add方法rn Common.DynamicMethodHelper.DynamicMethodProxyDelegate dmd = fac.GetMethodDelegate(mi2,T.GetType());rn DataTable dt = (DataTable)dmd("");rn却返回不了结果集, 这是为什么呢?rn
C#中的泛型怎么使用
c#中的泛型怎么使用,比如Hashtable怎么支持泛型的?rn在java中可以这样 Hashtable = newrnHashtable(String,String);rnC#中就不行,甚至是语法解析不了
C# 泛型,如何调用~
[code=C#] public class TEntity where T : classrn rn public virtual T Persistent(T entity, Expression> propertyExpression,GuoTBManageEntities context)rn rn var type = typeof(T);rn string tableName = type.Name;rn var stateEntry = ((IObjectContextAdapter)context).ObjectContext.ObjectStateManager.GetObjectStateEntry(type);rn foreach (ParameterExpression pe in propertyExpression.Parameters)rn rn stateEntry.SetModifiedProperty(pe.Name);rn rn context.SaveChanges();rn return entity;rn rn [/code]rnrn请问Expression> propertyExpression 这里怎么用。rn能说明一下整个方法的吗?
C#中关于集合和泛型的
求高手:什么时候用集合,什么时候用泛型,集合和泛型有什么关系。
关于C#中泛型、匿名方法、迭代器问题
各位高手大家好。。。。rn我是个C#新手,现在提个问题。。。。rn如何理解泛型、匿名方法和迭代器及其作用!rn先谢谢了。。。rn
泛型构造函数怎么调用
[code=Java]rnclass MyClass rn MyClass(T t) rn // ...rn rnrn[/code]rnrn上面那个 MyClass 类怎么调用这个构造函数初始化,写成下面:rnrnMyClass myObject = new MyClass<>("");rnrn编译不通过啊,应该要怎么写?
C#的泛型C#的泛型
C#的泛型C#的泛型
C# 泛型 C# 泛型
C#中关于泛型的一些讲解.............................................................
C#中泛型(中)
上一节介绍了泛型的声明和优点,下面着重介绍在类和方法中使用泛型。 一、泛型类 1、default  泛型可以作为方法的返回值,但是如果没有给泛型添加约束,则泛型可以是值类型或者是引用类型。那么方法的默认返回值就无法确定。而 default 关键字就可以用来解决这个问题。如 default(T),当T是值类型时,为默认值0,而当T是引用类型时,值是默认值 null。 下面给出泛型类的声明:
C#泛型C#泛型C#泛型
C#,泛型C#,泛型C#,泛型C#,泛型C#,泛型C#,泛型C#,泛型
C#:关于泛型
对泛型不是很理解,比如建立一个泛型类class program,然后实例化programe vector = new programe();这个对象vector是一个集合对吧,那这个集合里的元素到底是什么类型,是T还是programe类型的?请教下各位,若这个programe是一个接口呢?
关于C# 2.0的泛型?
public void DropAddValue(DropDownList thisDrop, string drpTable, string drpColumn) rn该函数是public class DRPItemValue中的一个函数,我想把DropDownList thisDrop用泛型方式重写,该泛型主要包括DropDownList和ListBox。rn请问:该该如何定义class DRPItemValue??rn谢谢各位!!rn
关于C#泛型
我刚刚看了C#的泛型技术,怎么感觉和C++的Template差不多?rn请问两者之间到底有什么区别rn小生先谢过
C# 2.0 关于泛型
public class Stack        {           T count;             public void setValue(T item) { count = item; }            public T getValue() { return count; }        }         private void button1_Click(o
C#多重泛型如何调用
rnrnpublic class ManagerHelperrn rn public static Dictionary School=new Dictionary ();rn rnrn-----------------------------------------------------------------------------------rnrnrn public class Classrn rn private string className;rnrn public string ClassNamern rn get return className; rn set className = value; rn rn private DateTime classStartTime;rnrn public DateTime ClassStartTimern rn get return classStartTime; rn set classStartTime = value; rn rn private DateTime classEndTime;rnrn public DateTime ClassEndTimern rn get return classEndTime; rn set classEndTime = value; rn rn private Dictionary students;rnrn public Dictionary Studentsrn rn get return students; rn set students = value; rn rn rn------------------------------------------------------------------------------------rnpublic class Studentrn rn private int studentNum;rnrn public int StudentNumrn rn get return studentNum; rn set studentNum = value; rn rn private string studentName;rnrn public string StudentNamern rn get return studentName; rn set studentName = value; rn rn private string studentSex;rnrn public string StudentSexrn rn get return studentSex; rn set studentSex = value; rn rn private string studentRace;rnrn public string StudentRacern rn get return studentRace; rn set studentRace = value; rn rn private string studentAddress;rnrn public string StudentAddressrn rn get return studentAddress; rn set studentAddress = value; rn rn private string studentPhone;rnrn public string StudentPhonern rn get return studentPhone; rn set studentPhone = value; rn rn private string studentPostaCode;rnrn public string StudentPostaCodern rn get return studentPostaCode; rn set studentPostaCode = value; rn rn private string className;rnrn public string ClassNamern rn get return className; rn set className = value; rn rn rnrn如何调用这个学生类里的东西呢?
关于泛型,如何调用泛型的方法?
//有一个类中有一个方法addrnpublic class testrnrn public string add(string a)rn rn return a;rn rnrnrn//有一个泛型方法rnpublic static void Save(T classObject)rnrn Type t = classObject.GetType();rn t.GetMethod("add"); rnrnrn请问怎么执行那个add方法并得到返回值啊?rn给个例子吧。
讨论关于C# 泛型!!
rn最近看到不少关于谈论List的贴子..更多的人是在问关于泛型的用法! rn特发此贴,希望各路高手们综合讨论下关于List的用法,运行机制,优缺点等..rn希望真正用到过的朋友们谈谈自己的理解或想法,而不是网上找一段Ctrl+C Ctrl+V 一下...rnrn问: 拿泛型方法来说.. rnrnpublic IList Tmp()//... 与 public DataSet Tmp()//... 之间的区别.. 内在的运行机制?rnrnrn希望大家踊跃发言!rnrnrn
c#中CreatInstance怎么传递泛型?
//这是我dll文件的简写 rnrnNameSpace polygon_Componentrnrnrnrn public struct Savern rn public int name; rn rnrnrn public class Polygonrn rnrn Form fm;rnrn Listlist;rnrn public Polygon(Form fm,List list)rn rn this.list = list;rn this.fm=fm; rn rnrn rnrnrnrn然后我在主程序中调用rnrn List savef = new List();rnrn private void Form1_Load(object sender, EventArgs e)rn Object[] parameters = new Object[2];rn parameters[0] = this;rn parameters[1] = savef;rnrnAssembly asm = Assembly.Load("UITestDesignTools1.0");//加载反射的dllrnrn object polygon = ass.CreateInstance("Polygon", true, System.Reflection.BindingFlags.Default, null, parameters, null, null);rnrnrn每次运行到最后那条语句时,都报错“"未找到类型“Polygon_Component.Polygon”上的构造函数。”? 改成Activator时,又报出同样的错误。在构造函数里,我仅传递一个fm类型却又可以了,这是泛型参数导致的吗?rnrn
C#中泛型 是怎么用的?
如题 ?
调用泛型,怎么用呀
定义了rnpublic static List SubscribeMP()rnrn比如说我在一个uxids类定义了上面的方法,rn那么我在另外个界面怎么调用上面的方法
浅析c#中的泛型
泛型是我们经常在编程中遇到的一种未确定的类型,在面向对象语言比如c#中,为了更好的满足面向对象编程的要求,我们会经常用到泛型来解决一些问题。 我们最常用的就是List集合,List我们常用来表示某种类型的集合,因为类型的可变性,所以就有了泛型的需要。 比如List就表示int类型的集合,当我们不确定我们需要的是什么类型的集合时,就可以用泛型来定义,我们可以看出,泛型更像是充当了一个占位符的作用
C# 中的泛型与重载
C#中如泛型与重载有相同类型(类型等价),普通函数会优先调用,而且在决议过程中,泛型函数中的where条件未计入考虑。测试程序如下: class A { public override string ToString() { return "Class A"; } } interface ITest {
C#中的泛型
C#中的泛型   前言 现在的.NET版本是5.0了,但是在1.1的时候,最受诟病的一个缺陷就是没有对泛型的支持.你想想,对于一种强类型的语言来说,我写了一个针对整数的排序,但是现在又需要对字符串排序,然又需要对double排序等等,强类型语言又不像弱类型语言一样所有的类型都使用一个关键字定义就行,比如JS就都是使用var来定义变量.所以说,强类型语言如果没有
C#中的泛型委托
泛型委托常用的有两种 Fun&amp;lt;T,TResult&amp;gt;和Action&amp;lt;T&amp;gt;,这两个是微软定义的标准委托类型,我们也可以用delegate自己定义,但最好使用上面两个。为了避免定义太多指向相同“方法签名”的委托类型,所以微软定义了两个泛型的委托,即Action和Fun,所以开发时不用再定义委托类型了,直接用这两个就行了。两则的区别是Action无返回值,Fun有返回值。Actio...
C#中泛型(上)
泛型
c#中泛型的学习
c#泛型入门简介 在c#中,我们通常用泛型来处理某个类或方法。比如某个方法要实现某个功能,但 参数的类型不同,我们可以采用重载方法来实现,但这个方法就要重复定义很多遍,所以为了高效,我们可以采用泛型。 1 泛型方法 首先来看一下不用泛型来实现某个功能 using System; using System.Collections.Generi...
5. C#中的泛型
泛型主要的思想是逻辑复用,你不需要为所有的数据结构都写一遍该逻辑,如元素的比较、排序等,不同的类可以调用一个泛型函数。 主要介绍泛型机制的优点、泛型类型与泛型函数、类型约束与类型推断 1. 泛型的优点 a. 安全,因为指定了类型,所以不再存在因为类型转换而出现的类型不安全。 b. 高效,因为不同类型之间的转换,有时还涉及到值类型与引用类型之间的装箱与拆箱,会很大的降低效率,有了泛型就不需要...
java中关于泛型的问题
泛型相关问题
泛型传参调用问题
[code=C#]rn//如有一方法签名为:rnpublic virtual void DoSomthing();rn//那么直接调用时为:rnDoSomthing();rn//Person,Address都为已经定义好的类型rnrn//我想把Person,Address以类型的方法传入方法来调用DoSomthing:rnShowData(typeof(Person),typeof(Address));rnrn///方法实现:rnpublic void ShowData(Type t1,Type t2)rnrnDoSomthing();//这样调用是不行的rnrnrn[/code]rn以什么样的方法才能实现对DoSomthing类似上面简述的调用?
C#中泛型
文章目录泛型泛型类泛型方法泛型的实例化理论泛型与object泛型类中的数据约束 泛型 在写程序时,若需要处理的数据类型不同,但算法相同时,这时候需要用到泛型。泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。 泛型类 泛型类:定义一个类,这个类中某些字段的类型不确定,这些类型可以在类构造的时候确定下来。 c...
关于泛型中的类型擦除问题
在JAVA中,我们会经常用到List&amp;lt;..&amp;gt;,其中&amp;lt;&amp;gt;中的即为泛型,在这里我想说明的是泛型从存在的类型擦除所导致的一些常见问题贴上测试代码:import java.util.ArrayList;import java.util.List;public  class test {    public static void main(String[] args) {     ...
C# 中的泛型
public myclassrn泛型类中的是表示如果是泛型必须用T还是可以用别的字符或类型,如int,假如是int,是啥意思?如果是指定了具体类型int,那还叫泛型干吗?rnrn顺便请解释一下下面这个结构:rn public static List Deserialize(string fileName, string ruleName)
C# 中的 泛型 集合
C#中的泛型集合! 很值得下载看看!资源免费,大家分享!!
C#中泛型求和
C#中,怎么用泛型方法计算两个简单数值类型变量的和(用泛型求两个数的和)
c#中的泛型
泛型:泛型是程序设计语言的一种特性,通过参数类型来实现在同一封代码上操作多个数据类型,例如List 泛型的作用:提高了性能,避免了装箱拆箱,提高了代码的重用性,
相关热词 c#检测非法字符 c#双屏截图 c#中怎么关闭线程 c# 显示服务器上的图片 api嵌入窗口 c# c# 控制网页 c# encrypt c#微信网页版登录 c# login 居中 c# 考试软件