New file |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using UIKit; |
| | | |
| | | namespace GateWay.Ios |
| | | { |
| | | public class Application |
| | | { |
| | | // This is the main entry point of the application. |
| | | static void Main(string[] args) |
| | | { |
| | | // if you want to use a different Application Delegate class from "AppDelegate" |
| | | // you can specify it here. |
| | | UIApplication.Main(args, null, "AppDelegate"); |
| | | |
| | | //Study P246 |
| | | int x = 40; |
| | | GetAString firstStringMethod = new GetAString(x.ToString); |
| | | GetAString firstStringMethod1 = x.ToString; |
| | | |
| | | var balance = new Currency(34, 50); |
| | | firstStringMethod1 = balance.ToString; |
| | | firstStringMethod1 = new GetAString(Currency.GetCurrencyUnit); |
| | | |
| | | #region 简单的委托 |
| | | |
| | | |
| | | DoubleOp[] operations = |
| | | { |
| | | MathOperation .MultiplyByTwo , |
| | | MathOperation.Square |
| | | }; |
| | | |
| | | for (int i = 0; i < operations.Length; i++) |
| | | { |
| | | // System.Console.WriteLine($ "Using operations[{i}]:); |
| | | var aa = $"{operations[i]}"; |
| | | ProcessAndDisplayNumber(operations[i], 2.0); |
| | | ProcessAndDisplayNumber(operations[i], 7.9); |
| | | ProcessAndDisplayNumber(operations[i], 21.4); |
| | | } |
| | | |
| | | #region 冒泡排序 |
| | | int[] sortArray = { 0, 5, 6, 2, 1 }; |
| | | bool swapped = true; |
| | | do |
| | | { |
| | | swapped = false; |
| | | for (int i = 0; i < sortArray.Length - 1; i++) |
| | | { |
| | | if (sortArray[i] > sortArray[i + 1]) |
| | | { |
| | | int temp = sortArray[i]; |
| | | sortArray[i] = sortArray[i + 1]; |
| | | sortArray[i - 1] = temp; |
| | | swapped = true; |
| | | } |
| | | } |
| | | } while (swapped); |
| | | |
| | | |
| | | //第二种方法 |
| | | Employee[] employees = |
| | | { |
| | | new Employee ("A",20000), |
| | | new Employee ("B",30000), |
| | | new Employee ("C",40000), |
| | | }; |
| | | |
| | | BubbleSorter.Sort(employees, Employee.CompareSalary); |
| | | foreach (var employee in employees ) |
| | | { |
| | | var aa = employee; |
| | | } |
| | | #endregion |
| | | } |
| | | |
| | | |
| | | |
| | | static void ProcessAndDisplayNumber1(Func<double, double> action, double value) |
| | | { |
| | | double result = action(value); |
| | | } |
| | | |
| | | //使用Fun<in T,out TResult>来代替自定义的DoubleOp; |
| | | // <double, double>[] operations1 = |
| | | // { |
| | | // MathOperation.MultiplyByTwo , |
| | | // MathOperation.Square |
| | | //}; |
| | | |
| | | static void ProcessAndDisplayNumber(DoubleOp action, double value) |
| | | { |
| | | double result = action(value); |
| | | } |
| | | |
| | | class MathOperation |
| | | { |
| | | public static double MultiplyByTwo(double value) => value * 2; |
| | | public static double Square(double value) => value * value; |
| | | } |
| | | |
| | | delegate double DoubleOp(double x); |
| | | #endregion |
| | | |
| | | private delegate string GetAString(); |
| | | |
| | | struct Currency |
| | | { |
| | | public uint Dollers; |
| | | public ushort Cents; |
| | | |
| | | public Currency(uint dollers, ushort cents) |
| | | { |
| | | this.Dollers = dollers; |
| | | this.Cents = cents; |
| | | } |
| | | |
| | | public override string ToString() => $"${Dollers}.{Cents,2:00}"; |
| | | public static string GetCurrencyUnit() => "Dollers"; |
| | | public static explicit operator Currency(float value) |
| | | { |
| | | checked |
| | | { |
| | | uint dollers = (uint)value; |
| | | ushort cents = (ushort)((value - dollers) + 100); |
| | | return new Currency(dollers, cents); |
| | | } |
| | | } |
| | | |
| | | public static implicit operator float(Currency value) => |
| | | value.Dollers + (value.Cents / 100.0f); |
| | | |
| | | public static implicit operator Currency(uint value) => |
| | | new Currency(value, 0); |
| | | |
| | | public static implicit operator uint(Currency value) => |
| | | value.Dollers; |
| | | } |
| | | |
| | | class BubbleSorter |
| | | { |
| | | static public void Sort<T>(IList<T> sortArray, Func<T, T, bool> comparison) |
| | | { |
| | | bool swapped = true; |
| | | do |
| | | { |
| | | swapped = false; |
| | | for (int i = 0; i < sortArray.Count - 1;i++){ |
| | | if(comparison (sortArray [i+1],sortArray [i])) |
| | | { |
| | | T temp = sortArray[i]; |
| | | sortArray[i] = sortArray[i + 1]; |
| | | sortArray[i + 1] = temp; |
| | | swapped = true; |
| | | } |
| | | } |
| | | |
| | | } while (swapped); |
| | | } |
| | | } |
| | | |
| | | class Employee |
| | | { |
| | | public Employee (string name,decimal salary) |
| | | { |
| | | Name = name; |
| | | Salary = Salary; |
| | | } |
| | | |
| | | public string Name { get; } |
| | | public Decimal Salary { get; private set; } |
| | | |
| | | public override string ToString() => $"{Name},{Salary:C}"; |
| | | public static bool CompareSalary(Employee e1, Employee e2) => e1.Salary < e2.Salary; |
| | | } |
| | | |
| | | } |
| | | } |
| | | |