Advertisement
DyNaMiXx7

Untitled

Apr 3rd, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.47 KB | None | 0 0
  1. using System;
  2.  
  3. namespace ExplicitOrImplicit
  4. {
  5.     class Program
  6.     {
  7.         static void Main(string[] args)
  8.         {
  9.             var circleImplicit = new CircleImplicit() { Position = new Point() { X = 5, Y = 10 }, Radius = 2 };
  10.  
  11.             Console.WriteLine($"X = {circleImplicit.X}, Y = {circleImplicit.Y}");
  12.             Console.WriteLine($"X = {circleImplicit.Position.X}, Y = {circleImplicit.Position.Y}");
  13.  
  14.             var circleExplicit = new CircleExplicit() { Position = new Point() { X = 5, Y = 10 }, Radius = 2 };
  15.             Console.WriteLine($"X = {(IPositionable)circleExplicit.}");
  16.             Console.WriteLine($"X = {circleExplicit.Position.X}, Y = {circleExplicit.Position.Y}");
  17.         }
  18.     }
  19.  
  20.     public interface ISurface
  21.     {
  22.         decimal CalculateArea();
  23.     }
  24.  
  25.     public interface IPositionable
  26.     {
  27.         decimal X { get; set; }
  28.         decimal Y { get; set; }
  29.     }
  30.  
  31.     public struct Point : IPositionable
  32.     {
  33.         public decimal X { get; set; }
  34.         public decimal Y { get; set; }
  35.         public override string ToString()
  36.         {
  37.             return $"({X}, {Y})";
  38.         }
  39.     }
  40.  
  41.     public class CircleImplicit : IPositionable, ISurface
  42.     {
  43.         public Point Position;
  44.         public decimal Radius { get; set; }
  45.  
  46.         public decimal X
  47.         {
  48.             get { return Position.X; }
  49.             set { Position.X = value; }
  50.         }
  51.  
  52.         public decimal Y
  53.         {
  54.             get { return Position.Y; }
  55.             set { Position.Y = value; }
  56.         }
  57.  
  58.         public decimal CalculateArea()
  59.         {
  60.             return (decimal)Math.PI * Radius * Radius;
  61.         }
  62.  
  63.         public override string ToString()
  64.         {
  65.             return $"Circle at {Position} with a radius of {Radius}";
  66.         }
  67.     }
  68.  
  69.     public class CircleExplicit : IPositionable, ISurface
  70.     {
  71.         public Point Position;
  72.         public decimal Radius { get; set; }
  73.  
  74.         decimal IPositionable.X
  75.         {
  76.             get { return Position.X; }
  77.             set { Position.X = value; }
  78.         }
  79.  
  80.         decimal IPositionable.Y
  81.         {
  82.             get { return Position.Y; }
  83.             set { Position.Y = value; }
  84.         }
  85.  
  86.         public decimal CalculateArea()
  87.         {
  88.             return (decimal)Math.PI * Radius * Radius;
  89.         }
  90.  
  91.         public override string ToString()
  92.         {
  93.             return $"Circle at {Position} with a radius of {Radius}";
  94.         }
  95.     }
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement