C#泛型學習
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GenericDemo
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine($"10+20={add(10, 20)}");
Console.WriteLine($"10.5+20.9={add(10.5, 20.9)}");
Console.WriteLine($"10+20.9={add(10, 20.9)}");
Console.WriteLine(add("hello", " world"));
Console.WriteLine("-----------------");
Console.WriteLine(Sum(100));
Console.ReadLine();
}
//泛型方法簡單使用
static T add<T>(T a, T b)
{
dynamic a1 = a;
dynamic b1 = b;
return a1 + b1;
}
//泛型方法實現一個數求和
static T Sum<T>(T a) where T : struct
{
dynamic sum = default(T);
for (dynamic i = default(T); i <= a; i++)
{
sum += i;
}
return sum;
}
}
}
如圖:
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GenericsDemo
{
class Program
{
//static void Main(string[] args)
//{
// MyStack<int> stack1 = new MyStack<int>(5);
// stack1.Push(1);
// stack1.Push(2);
// stack1.Push(3);
// stack1.Push(4);
// stack1.Push(5);
// stack1.Push(6);
// Console.WriteLine(stack1.Pop());
// Console.WriteLine(stack1.Pop());
// Console.WriteLine(stack1.Pop());
// Console.WriteLine(stack1.Pop());
// Console.WriteLine(stack1.Pop());
// Console.WriteLine(stack1.Pop());
// MyStack<string> stack2 = new MyStack<string>(5);
// stack2.Push("產品1");
// stack2.Push("產品2");
// stack2.Push("產品3");
// stack2.Push("產品4");
// stack2.Push("產品5");
// stack2.Push("產品6");
// Console.WriteLine(stack2.Pop());
// Console.WriteLine(stack2.Pop());
// Console.WriteLine(stack2.Pop());
// Console.WriteLine(stack2.Pop());
// Console.WriteLine(stack2.Pop());
// Console.WriteLine(stack2.Pop());
// Console.Read();
//}
static void Main(string[] args)
{
//例項化泛型物件
MyGeneric<int, Course, Teacher> myGeneric = new MyGeneric<int, Course, Teacher>();
//給物件屬性賦值
myGeneric.ProductList = new List<Course>()
{
new Course(){CourseName=".NET",Period=10},
new Course(){CourseName="SQL Server",Period=20},
new Course(){CourseName="TypeScript",Period=30}
};
myGeneric.Publisher = new Teacher()
{
Age = 28,
Name = "Lex"
};
Course course = myGeneric.Buy(1);
Console.WriteLine($"你買的課程是{course.CourseName},時長為{course.Period}分鐘,釋出者是{myGeneric.Publisher.Name},年齡{myGeneric.Publisher.Age}歲");
Console.Read();
}
}
/// <summary>
/// 新增約束型別的泛型類
/// </summary>
/// <typeparam name="T1"></typeparam>
/// <typeparam name="T2"></typeparam>
/// <typeparam name="T3"></typeparam>
class MyGeneric<T1, T2, T3>
where T1 : struct //
where T2 : class
where T3 : new()
{
public List<T2> ProductList { get; set; } = new List<T2>();
public T3 Publisher { get; set; } = new T3();
public T2 Buy(T1 item)
{
dynamic num = item;
return ProductList[num];
}
}
class Course
{
public string CourseName { get; set; }
public int Period { get; set; }
}
class Teacher
{
public string Name { get; set; }
public int Age { get; set; }
}
}
MyStack.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GenericsDemo
{
/// <summary>
/// 使用泛型類實現出入棧通用類
/// </summary>
public class MyStack<T>
{
T[] stack;
int size;//棧資料容量
int stackPoint;//棧位置指標
public MyStack(int size)
{
this.size = size;
stack = new T[size];
stackPoint = -1;
}
/// <summary>
/// 入棧
/// </summary>
/// <param name="item"></param>
public void Push(T item)
{
stackPoint++;
if (stackPoint >= size)
{
Console.WriteLine("棧空間已滿");
return;
}
stack[stackPoint] = item;
}
/// <summary>
/// 出棧
/// </summary>
/// <returns></returns>
public T Pop()
{
stackPoint--;
if (stackPoint < 0)
{
Console.WriteLine("棧空間已空");
return default(T);
}
T data = stack[stackPoint];
return data;
}
}
}
如圖:
相關文章
- C#學習 [型別系統] 泛型(16)C#型別泛型
- 【C#】-泛型C#泛型
- C#泛型C#泛型
- C# 泛型C#泛型
- 泛型學習筆記泛型筆記
- C#泛型集合C#泛型
- 學習Rust泛型與特性Rust泛型
- 淺談C#泛型C#泛型
- C#泛型約束C#泛型
- TypeScript學習(四)—— 介面和泛型TypeScript泛型
- 詳解C#泛型(一)C#泛型
- 詳解C#泛型(三)C#泛型
- 詳解C#泛型(二)C#泛型
- rust學習十一.1、泛型(通用型別)Rust泛型型別
- java入門基礎學習----泛型Java泛型
- C#泛型鍵值對集合C#泛型
- C#基礎:泛型委託C#泛型
- 理解C#泛型運作原理C#泛型
- C#深入學習:泛型修飾符in,out、逆變委託型別和協變委託型別C#泛型型別
- C# 泛型集合的自定義型別排序C#泛型型別排序
- 深圳大資料學習:泛型--【千鋒】大資料泛型
- iOS學習筆記47 Swift(七)泛型iOS筆記Swift泛型
- Java泛型複習Java泛型
- C#類繼承自泛型集合C#繼承泛型
- c#——泛型的多種應用C#泛型
- C#快速入門教程(21)—— 泛型C#泛型
- Java進階學習之集合與泛型(1)Java泛型
- C#學習筆記--資料結構、泛型、委託事件等進階知識點C#筆記資料結構泛型事件
- C#規範整理·泛型委託事件C#泛型事件
- swift4.1 系統學習二十一 泛型Swift泛型
- 泛型類、泛型方法及泛型應用泛型
- 【java】【泛型】泛型geneticJava泛型
- C#學習 [型別系統] 類(13)C#型別
- C#學習 [型別系統] 介面(15)C#型別
- C# 泛型中的資料型別判定與轉換C#泛型資料型別
- C#中的介面和泛型集合探討C#泛型
- C#中泛型約束(where)是什麼?C#泛型
- C#學習 [型別系統] 型別轉換(11)C#型別