C#的<T>是什么

publicstaticTGet<T>(stringkey)whereT:class{return_siteCache[key]asT;}这是什么..为什么这样写... public static T Get<T>( string key ) where T :class
{
return _siteCache[key] as T;
}

这是什么..为什么这样写
展开
 我来答
小星星教育知识分享
高粉答主

2019-11-28 · 用教师的智慧点燃学生的智慧火花
小星星教育知识分享
采纳数:202 获赞数:67136

向TA提问 私信TA
展开全部

C#的<T>是泛型。

泛型是c#2.0的一个新增加的特性,它为使用c#语言编写面向对象程序增加了极大的效力和灵活性。不会强行对值类型进行装箱和拆箱,或对引用类型进行向下强制类型转换,所以性能得到提高。通过知道使用泛型定义的变量的类型限制。

编译器可以在一个高得多的程度上验证类型假设,所以泛型提高了程序的类型安全。泛型类和泛型方法同时具备可重用性、类型安全和效率,这是非泛型类和非泛型方法无法具备的。泛型通常用与集合以及作用于集合的方法一起使用。

扩展资料

使用泛型GenericList<T>类来创建整数列表

classTestGenericList{

staticvoidMain(){

//intisthetypeargument

GenericList<int>list=newGenericList<int>();

for(intx=0;x<10;x++)

{

list.AddHead(x);

}

foreach(intiinlist)

{

System.Console.Write(i+"");

}

System.Console.WriteLine("\nDone");

}

}

参考资料来源:百度百科—泛型

网易云信
2023-12-06 广告
UIkit是一套轻量级、模块化且易于使用的开源UI组件库,由YOOtheme团队开发。它提供了丰富的界面元素,包括按钮、表单、表格、对话框、滑块、下拉菜单、选项卡等等,适用于各种类型的网站和应用程序。UIkit还支持响应式设计,可以根据不同... 点击进入详情页
本回答由网易云信提供
FoolRabbit编程
推荐于2018-02-27 · 知道合伙人数码行家
FoolRabbit编程
知道合伙人数码行家
采纳数:619 获赞数:3805
毕业于苏州大学,4年编程经验,对WPF有研究。

向TA提问 私信TA
展开全部

在C#中,他是泛型,与C++中的模板类似。

有了泛型,可减少object对象的使用,对object进行装箱/拆箱时,性能不及泛型。

 1. 下面是一个简单的泛型方法及其使用

  • 创建一个TestObj类

    public class TestObj
    {
        public override string ToString()
        {
            return "我是TestObj";
        }
    }
  • 书写泛型方法:

        public static string SayText1<T>(T item)
        {
            if (item is TestObj)
            {
                return item.ToString();
            }
            else
            {
                return "no support!";
            }
        }
  • 调用泛型方法:

    Console.WriteLine(SayText1(new TestObj()));
    Console.WriteLine(SayText1("1"));

2. 写带约束的泛型方法

  • 使TestObj类继承接口ITestObj:

    public interface ITestObj
    {

    }

    public class TestObj : ITestObj
    {
        public override string ToString()
        {
            return "我是TestObj";
        }
    }
  • 书写带约束的泛型方法

        public static string SayText2<T>(T item) where T : ITestObj
        {
            //...
            return "some thing";
        }
  • 调用该方法

    Console.WriteLine(SayText2(new TestObj()));
    //下面的调用会报错,由于字符串"1"没有继承接口ITestObj
    Console.WriteLine(SayText2("1"));
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
huanghaokaibd
2011-01-31 · TA获得超过233个赞
知道答主
回答量:47
采纳率:0%
帮助的人:26.7万
展开全部
泛型+模板
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0cbe9094d
2011-01-31 · TA获得超过601个赞
知道小有建树答主
回答量:408
采纳率:0%
帮助的人:272万
展开全部
泛型+模板
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式