泛型类,泛型方法,dynamic, default

本文详细介绍了 C# 中的泛型概念及其应用,包括 default 关键字的使用、泛型类的定义、类型约束在泛型类中的作用、dynamic 动态类型的特性以及泛型方法的具体实现,并通过四则运算示例加深理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、default关键字


2、定义泛型类



3、类型约束泛型类 和 dynamic动态类型




4、泛型方法



5、四则运算示例


### C# 的概念与使用 #### 什么是是一种编程技术,允许开发者编写能够处理多种类的通用代码。通过引入类参数,可以在不牺牲性能的情况下实现更高的灵活性和安全性[^1]。 #### 如何定义泛型类泛型类可以通过在类名后面加上尖括号 `<T>` 来声明,其中 `T` 是占位符,表示具体的类将在实例化时提供。例如: ```csharp public class MyStack<T> { private T[] items; private int count; public MyStack(int size) { items = new T[size]; count = 0; } public void Push(T item) { if (count >= items.Length) throw new InvalidOperationException("Stack is full."); items[count++] = item; } public T Pop() { if (count == 0) throw new InvalidOperationException("Stack is empty."); return items[--count]; } } ``` 上述代码展示了如何创建一个支持任意类的栈结构[^4]。 #### 方法的定义 除了泛型类外,还可以定义方法。这种方法不需要整个类都成为,仅限于特定的方法适用。例如: ```csharp public static T GetDefault<T>() { return default(T); } ``` 此方法返回指定类的默认值[^3]。 #### 中的约束 为了增强功能并限制可使用的类范围,可以应用约束条件。常见的约束包括限定为引用类 (`class`)、值类 (`struct`) 和接口实现等。语法如下所示: ```csharp public class MathOperations<T> where T : struct, IComparable<T>, new() { public T Add(T a, T b) { dynamic da = a; dynamic db = b; return da + db; } } ``` 这里指定了 `T` 必须是一个实现了 `IComparable<T>` 的值类,并且具有无参构造函数。 #### 运算符重载与 虽然无法直接针对未知类执行加减乘除这样的操作,但是借助动态转换 `(dynamic)` 可以绕开这一限制。下面的例子演示了这一点: ```csharp public class Calculator<T> { public T Add(T firstValue, T secondValue) { dynamic dfirstValue = firstValue; dynamic dsecondValue = secondValue; return dfirstValue + dsecondValue; } } ``` 注意这种方式可能会带来运行期错误的风险。 --- ### 输出示例程序的结果验证 考虑以下测试片段来观察实际效果: ```csharp static void Main(string[] args) { var stackInts = new MyStack<int>(5); foreach(var i in Enumerable.Range(0, 5)) { stackInts.Push(i * 5); } while(stackInts.Count() > 0){ Console.WriteLine(stackInts.Pop()); } var stackChars = new MyStack<char>(5); char startChar='a'; for(char ch=startChar;ch<startChar+5;++ch) stackChars.Push(ch); while(stackChars.Count()>0) Console.Write(stackChars.Pop()+" "); } // 结果应显示:20 15 10 5 0 e d c b a [^5] ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值