{"id":22048,"date":"2024-03-15T22:58:02","date_gmt":"2024-03-15T22:58:02","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-to-define-and-use-generic-classes-in-c\/"},"modified":"2024-03-21T21:56:39","modified_gmt":"2024-03-21T21:56:39","slug":"how-to-define-and-use-generic-classes-in-c","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-to-define-and-use-generic-classes-in-c\/","title":{"rendered":"How to define and use generic classes in C#"},"content":{"rendered":"<p>In C#, generic classes can be defined by placing angle brackets <> after the class name to specify generic parameters. These classes can accept parameters of different types and use them within the class.<\/p>\n<p>Here is an example of defining and using a generic class:<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-comment\">\/\/ \u5b9a\u4e49\u4e00\u4e2a\u6cdb\u578b\u7c7b<\/span>\r\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">MyGenericClass<\/span>&lt;<span class=\"hljs-title\">T<\/span>&gt;\r\n{\r\n    <span class=\"hljs-keyword\">private<\/span> T myGenericField;\r\n\r\n    <span class=\"hljs-comment\">\/\/ \u6784\u9020\u51fd\u6570<\/span>\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-title\">MyGenericClass<\/span>(<span class=\"hljs-params\">T <span class=\"hljs-keyword\">value<\/span><\/span>)<\/span>\r\n    {\r\n        myGenericField = <span class=\"hljs-keyword\">value<\/span>;\r\n    }\r\n\r\n    <span class=\"hljs-comment\">\/\/ \u65b9\u6cd5<\/span>\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> T <span class=\"hljs-title\">GetGenericValue<\/span>()<\/span>\r\n    {\r\n        <span class=\"hljs-keyword\">return<\/span> myGenericField;\r\n    }\r\n}\r\n\r\n<span class=\"hljs-comment\">\/\/ \u4f7f\u7528\u6cdb\u578b\u7c7b<\/span>\r\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Program<\/span>\r\n{\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">Main<\/span>(<span class=\"hljs-params\"><span class=\"hljs-built_in\">string<\/span>[] args<\/span>)<\/span>\r\n    {\r\n        <span class=\"hljs-comment\">\/\/ \u521b\u5efa\u4e00\u4e2a\u6cdb\u578b\u7c7b\u5bf9\u8c61\uff0c\u6307\u5b9a\u6cdb\u578b\u53c2\u6570\u4e3aint\u7c7b\u578b<\/span>\r\n        MyGenericClass&lt;<span class=\"hljs-built_in\">int<\/span>&gt; intGenericClass = <span class=\"hljs-keyword\">new<\/span> MyGenericClass&lt;<span class=\"hljs-built_in\">int<\/span>&gt;(<span class=\"hljs-number\">10<\/span>);\r\n\r\n        <span class=\"hljs-comment\">\/\/ \u8c03\u7528\u6cdb\u578b\u7c7b\u7684\u65b9\u6cd5<\/span>\r\n        <span class=\"hljs-built_in\">int<\/span> intValue = intGenericClass.GetGenericValue();\r\n        Console.WriteLine(intValue); <span class=\"hljs-comment\">\/\/ \u8f93\u51fa\uff1a10<\/span>\r\n\r\n        <span class=\"hljs-comment\">\/\/ \u521b\u5efa\u4e00\u4e2a\u6cdb\u578b\u7c7b\u5bf9\u8c61\uff0c\u6307\u5b9a\u6cdb\u578b\u53c2\u6570\u4e3astring\u7c7b\u578b<\/span>\r\n        MyGenericClass&lt;<span class=\"hljs-built_in\">string<\/span>&gt; stringGenericClass = <span class=\"hljs-keyword\">new<\/span> MyGenericClass&lt;<span class=\"hljs-built_in\">string<\/span>&gt;(<span class=\"hljs-string\">\"Hello\"<\/span>);\r\n\r\n        <span class=\"hljs-comment\">\/\/ \u8c03\u7528\u6cdb\u578b\u7c7b\u7684\u65b9\u6cd5<\/span>\r\n        <span class=\"hljs-built_in\">string<\/span> stringValue = stringGenericClass.GetGenericValue();\r\n        Console.WriteLine(stringValue); <span class=\"hljs-comment\">\/\/ \u8f93\u51fa\uff1aHello<\/span>\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>In the above example, MyGenericClass is a generic class with a generic parameter T. We store the value of the generic parameter passed in myGenericField field and return that value in the GetGenericValue method.<\/p>\n<p>In the Main method, we first create an object of MyGenericClass<int> and pass in an integer value of 10. We then retrieve the value by calling the GetGenericValue method, and print it out.<\/p>\n<p>Next, we created an object of MyGenericClass<string> and passed a string value &#8220;Hello&#8221;. Similarly, we called the GetGenericValue method to retrieve the value and printed it out.<\/p>\n<p>Running the above code will output:<\/p>\n<pre class=\"post-pre\"><code>10\r\nHello\r\n<\/code><\/pre>\n<p>This shows that generic classes are able to store and return values of different types based on the different type parameters passed in.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In C#, generic classes can be defined by placing angle brackets after the class name to specify generic parameters. These classes can accept parameters of different types and use them within the class. Here is an example of defining and using a generic class: \/\/ \u5b9a\u4e49\u4e00\u4e2a\u6cdb\u578b\u7c7b public class MyGenericClass&lt;T&gt; { private T myGenericField; \/\/ \u6784\u9020\u51fd\u6570 [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-22048","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to define and use generic classes in C# - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/how-to-define-and-use-generic-classes-in-c\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to define and use generic classes in C#\" \/>\n<meta property=\"og:description\" content=\"In C#, generic classes can be defined by placing angle brackets after the class name to specify generic parameters. These classes can accept parameters of different types and use them within the class. Here is an example of defining and using a generic class: \/\/ \u5b9a\u4e49\u4e00\u4e2a\u6cdb\u578b\u7c7b public class MyGenericClass&lt;T&gt; { private T myGenericField; \/\/ \u6784\u9020\u51fd\u6570 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-to-define-and-use-generic-classes-in-c\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-15T22:58:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-21T21:56:39+00:00\" \/>\n<meta name=\"author\" content=\"Benjamin Taylor\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Benjamin Taylor\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-define-and-use-generic-classes-in-c\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-define-and-use-generic-classes-in-c\/\"},\"author\":{\"name\":\"Benjamin Taylor\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/ac801fe9549a25960ce48aa2e0a691c9\"},\"headline\":\"How to define and use generic classes in C#\",\"datePublished\":\"2024-03-15T22:58:02+00:00\",\"dateModified\":\"2024-03-21T21:56:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-define-and-use-generic-classes-in-c\/\"},\"wordCount\":175,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-define-and-use-generic-classes-in-c\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-to-define-and-use-generic-classes-in-c\/\",\"name\":\"How to define and use generic classes in C# - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-15T22:58:02+00:00\",\"dateModified\":\"2024-03-21T21:56:39+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-define-and-use-generic-classes-in-c\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-to-define-and-use-generic-classes-in-c\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-define-and-use-generic-classes-in-c\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to define and use generic classes in C#\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/ac801fe9549a25960ce48aa2e0a691c9\",\"name\":\"Benjamin Taylor\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ec2e3d3e2d525fd148047c4520ae7c1cdccd1f4b48a1a488422b31f04f345c14?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ec2e3d3e2d525fd148047c4520ae7c1cdccd1f4b48a1a488422b31f04f345c14?s=96&d=mm&r=g\",\"caption\":\"Benjamin Taylor\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/benjamintaylor\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to define and use generic classes in C# - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/blog\/how-to-define-and-use-generic-classes-in-c\/","og_locale":"en_US","og_type":"article","og_title":"How to define and use generic classes in C#","og_description":"In C#, generic classes can be defined by placing angle brackets after the class name to specify generic parameters. These classes can accept parameters of different types and use them within the class. Here is an example of defining and using a generic class: \/\/ \u5b9a\u4e49\u4e00\u4e2a\u6cdb\u578b\u7c7b public class MyGenericClass&lt;T&gt; { private T myGenericField; \/\/ \u6784\u9020\u51fd\u6570 [&hellip;]","og_url":"https:\/\/www.silicloud.com\/blog\/how-to-define-and-use-generic-classes-in-c\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-15T22:58:02+00:00","article_modified_time":"2024-03-21T21:56:39+00:00","author":"Benjamin Taylor","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Benjamin Taylor","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-to-define-and-use-generic-classes-in-c\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-define-and-use-generic-classes-in-c\/"},"author":{"name":"Benjamin Taylor","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/ac801fe9549a25960ce48aa2e0a691c9"},"headline":"How to define and use generic classes in C#","datePublished":"2024-03-15T22:58:02+00:00","dateModified":"2024-03-21T21:56:39+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-define-and-use-generic-classes-in-c\/"},"wordCount":175,"commentCount":0,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-to-define-and-use-generic-classes-in-c\/","url":"https:\/\/www.silicloud.com\/blog\/how-to-define-and-use-generic-classes-in-c\/","name":"How to define and use generic classes in C# - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-15T22:58:02+00:00","dateModified":"2024-03-21T21:56:39+00:00","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-define-and-use-generic-classes-in-c\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-to-define-and-use-generic-classes-in-c\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-to-define-and-use-generic-classes-in-c\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to define and use generic classes in C#"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/ac801fe9549a25960ce48aa2e0a691c9","name":"Benjamin Taylor","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ec2e3d3e2d525fd148047c4520ae7c1cdccd1f4b48a1a488422b31f04f345c14?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ec2e3d3e2d525fd148047c4520ae7c1cdccd1f4b48a1a488422b31f04f345c14?s=96&d=mm&r=g","caption":"Benjamin Taylor"},"url":"https:\/\/www.silicloud.com\/blog\/author\/benjamintaylor\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/22048","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=22048"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/22048\/revisions"}],"predecessor-version":[{"id":55946,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/22048\/revisions\/55946"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=22048"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=22048"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=22048"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}