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#泛型
- 泛型學習筆記泛型筆記
- java泛型學習(1)Java泛型
- C# 泛型方法C#泛型
- hashtable 泛型 C#泛型C#
- c#泛型集合C#泛型
- 學習Rust泛型與特性Rust泛型
- TypeScript學習(四)—— 介面和泛型TypeScript泛型
- 淺談C#泛型C#泛型
- C#泛型約束C#泛型
- C# 泛型集合SortedListC#泛型
- c#泛型的使用C#泛型
- c#泛型續(一)C#泛型
- java入門基礎學習----泛型Java泛型
- java基礎學習之十三:泛型Java泛型
- 詳解C#泛型(三)C#泛型
- 詳解C#泛型(二)C#泛型
- 詳解C#泛型(一)C#泛型
- c#進階之泛型C#泛型
- C#之泛型詳解C#泛型
- C#中的泛型-1C#泛型
- C#泛型類之LISTC#泛型
- C# 泛型 介面約束C#泛型
- C# 之泛型詳解C#泛型
- c#之泛型小記C#泛型
- C#深入學習:泛型修飾符in,out、逆變委託型別和協變委託型別C#泛型型別
- 深圳大資料學習:泛型--【千鋒】大資料泛型
- iOS學習筆記47 Swift(七)泛型iOS筆記Swift泛型
- Java泛型複習Java泛型
- C#基礎:泛型委託C#泛型
- 理解C#泛型運作原理C#泛型
- C# 泛型 基類約束C#泛型
- JAVA泛型使用練習2(自定義泛型使用)Java泛型
- C# 泛型集合的自定義型別排序C#泛型型別排序
- c#資料型別學習C#資料型別