Modeling the Walls of a House

In this project, we will model a medium house. We will model only the exterior of the house.

The building of a house starts with a foundation, followed by walls. In this section, we will start by creating the main walls of the house.

Practical LearningPractical Learning: Introducing the Model

  1. Start Blender
  2. Click the default cube to select it (it should be selected already)
  3. On the left toolbar, click the Move button Move
  4. In the Properties window, click the Object button Object (it should be selected already) to access the primary properties of the cube.
    Change the following values:
    Name:     Wall-External-Front
    Location: X: 0
              Y: 0.025
              Z: 1.205
    Rotation: X: 90
              Y: 0
              Z: 0
    Scale:    X: 2.6
              Y: 1.205
              Z: 0.025

    Modeling the Walls of a House

  5. To duplicate the wall, position the mouse in the 3D Viewport. Press Alt + D and press Enter
  6. In the Object section of the Properties window, change the Y location to 2.425
    Name:       Wall-External-Back
    Location Y: 3.975

    Modeling the Walls of a House

  7. To add a new object, on the top menu, click Add -> Mesh -> Cube
  8. In the Object section of the Properties window, change the following values:
    Name:         Wall-External-Left
    Location: X: -2.58
              Y:  2
              Z:  1.205
    Rotation: X:  90
              Y:  0
              Z:  90
    Scale:    X:  2
              Y:  1.205
              Z:  0.025

    Modeling the Walls of a House

  9. To duplicate the wall, position the mouse in the 3D Viewport. Press Alt + D and press Enter
  10. In the Object section of the Properties window, remove the - sign in the value of the Y location
    Name:       Wall-External-Right
    Location X: 2.58

    Modeling the Walls of a House

Adding (External) Doors

Obviously, a house should have doors. In this section, we will add the necessary doors to our house.

Practical LearningPractical Learning: Adding Doors

  1. In a previous lesson, we modeled a simple door. Start another instance of Blender and open that file
  2. Draw a rectangle that touches the door frame and its inside face (the door leaf)
  3. Press Ctrl + C to copy the door to the clipboard
  4. Return to the instance of Blender where we are modeling the house
  5. Position the mouse in the 3D Viewport and press Ctrl + V to paste the door
  6. While the door is still selected, right-click anywhere in the 3D Viewport and click Move to Collection
  7. In the window that comes up, click New Collection
  8. Type Door-External as the new name and press Enter
  9. On the Move to New Collection dialog box, click Create
  10. On the top menu, click View -> Viewpoint -> Front
  11. Use the red arrow of the X axis to move the door to the left as follow:

    Modeling the Walls of a House

    Modeling the Walls of a House

  12. In a previous lesson, we modeled a door lock. In the other instance of Blender you had started, open the file of that door lock
  13. Click the door lock to select it
  14. Press Ctrl + C to copy it
  15. Return to the instance of Blender where we are modeling the house
  16. Position the mouse in the 3D Viewport and press Ctrl + V to paste the door
  17. While the door lock is still selected, right-click anywhere in the 3D Viewport and click Move to Collection
  18. In the window that comes up, click New Collection
  19. On the Move to Collection dialog box, click Door-External
  20. On the top menu, click View -> Viewpoint -> Front
  21. Use the red arrow of the X axis to move the door to the left as follow:

    Modeling the Walls of a House

  22. In a previous lesson, we modeled a door handle. In the other instance of Blender you had started, open the file of that door lock
  23. Draw a rectangle that touches the parts of the door handle to select
  24. Press Ctrl + C to copy the selection
  25. Return to the instance of Blender where we are modeling the house
  26. Position the mouse in the 3D Viewport and press Ctrl + V to paste the door
  27. While the door handle is still selected, right-click anywhere in the 3D Viewport and click Move to Collection
  28. In the window that comes up, click New Collection
  29. On the Move to Collection dialog box, click Door-External
  30. On the top menu, click View -> Viewpoint -> Front
  31. Press S, move the mouse towards the door lock to resize it, and click. Keep resizing the door handle until its size is approximately the same as the door lock
  32. Use the red arrow of the X axis to move the door to the left as follow:

    Modeling the Walls of a House

  33. In the Outliner in the 3D Viewport window. Then, on your keyboard, press S
  34. Move the mouse very slightly and click
  35. On the top bar, click the Face button Face
  36. Click the top face of the cube to select it

    Modeling the Walls of a House

  37. Rotate the cube to access the bottom face and click it to select it

    Modeling the Walls of a House

  38. On the remaining shapes, click one of the faces that is parallel to the green Y axis to select it

    Modeling the Walls of a House

  39. Click the face that is opposing that one to select it

    Modeling the Walls of a House

  40. Click the face that is opposing that one to select it

    Modeling the Walls of a House

  41. To edit the cube, on the main menu of Blender, click Modeling
  42. To confirm the separated parts, on the top-main menu of Blender, click Layout

Setting the Materials for Walls

We are planning to create some variances of the same house. Those variances will have different colors or wall appearances. To make this happen, we will separater the walls of the house.

Practical LearningPractical Learning: Setting the Materials for Walls

  1. To access the materials of the faces, on the top-main menu of Blender, click Shading
  2. On the bottom bar, click Material to select it
  3. Type Long-Wall and press Enter
  4. On the bottom bar, click the New Material button Object
  5. On the bottom bar, click Long-Wall.001 to select it
  6. Type Short-Wall and press Enter
  7. Click one of the other walls to select them
  8. On the bottom bar, click the arrow of the Browse Material combo box Object and select Short-Wall
  9. On the top menu of Blender, click Layout

Dividing the House Stories

Since we are modeling a medium house, we will make into two stories (two levels).

Practical LearningPractical Learning: Dividing the House Stories

  1. Click one of the sections of the walls
  2. On the top-main menu of Blender, click Modeling
  3. On the left bar, click the Loop Cut button Loop Cut
  4. Click one of the walls to create a horizontal cut

    Dividing the House Stories

  5. Rotate the shape to access the other wall
  6. Click that wall to create a horizontal cut

    Dividing the House Stories

  7. On the top-main menu of Blender, click Layout
  8. Click one of the other walls you did not select
  9. On the top-main menu of Blender, click Modeling
  10. While the Loop Cut button is still selected, click one of the walls to create a horizontal cut

    Dividing the House Stories

  11. Rotate the shape to access the other wall
  12. Click that wall to create a horizontal cut

    Dividing the House Stories

  13. On the left bar, click the Select Box button
  14. On the top menu of Blender, click Layout
  15. To add a new object, on the top menu, click Add -> Mesh -> Cube
  16. In the Object section of the Properties window, change the following values:
    Name:     Door-Frame
    Location: X: -0.925
              Y:  2.265
              Z:  0.5
    Scale:    X:  0.285
              Y:  0.0315
              Z:  0.5
  17. To hide the walls of the house, in the numeric pad of the keyboard, press /
  18. To edit the cube, on the top-main menu of Blender, click Modeling
  19. To hide the walls of the house, in the numeric pad of the keyboard, press /

    Modeling a Simple Door

  20. On the left bar, click the Loop Cut button Loop Cut
  21. In the bottom-left side of the large Blender window, click Loop Cut And Slide to expand it
  22. Change the Number of Cuts value to 2:
    Number of Cuts: 2

    Modeling a Simple Door

  23. In the Resize window in the bottom-left section of the 3D Viewport window, change the following values:
    Move: X: 2.55
          Y: 1
          Z: 1

    Modeling a Simple Door

  24. In the Loop Cut and Move window, change the factor to -0.915:
    Factor: -0.915

    Modeling a Simple Door

  25. On the top bar, click the Face button Face
  26. On your keyboard, press X
  27. On the menu that appears, click Faces

    Modeling a Simple Door

  28. Click the bottom-central face of the shape to select it
  29. On your keyboard, press Delete
  30. On the menu that appears, click Faces
  31. Click the other large face in the middle of the shape to select it
  32. Right-click anywhere in the 3D Viewport workspace window -> Separate -> Selection

    Modeling a Simple Door

  33. To display the hidden objects, in the numeric pad of the keyboard, press /
  34. To confirm the separated parts, on the top-main menu of Blender, click Layout
  35. Click the wide face in the middle of the shape to select it

    Modeling a Simple Door

  36. In the Object section of the Properties window, click Door-Frame.001 to select the name
  37. Position the mouse on the 3D Viewport. On your keyboard, press H to hide the face
  38. Click any border of the window to select it

    Modeling a Simple Door

  39. To continue editing the door, on the main menu of Blender, click Modeling
  40. On the top bar, click the Edge button Edge
  41. On the window, click one of the interior edges of the opening to select it
  42. On your keyboard, press and hold Shift
  43. Click each of the interior edges of both openings of the door but don't select the bottom edge of each side

    Modeling a Simple Door

    Modeling a Simple Door

  44. On the menu bar, click Edge -> Bridge Edge Loops

    Modeling a Simple Door

    Modeling a Simple Door

  45. On the top-main menu of Blender, click Layout

    Modeling a Simple Door

  46. In the Outliner, click the Hide In Viewport button of Door-Leaf to unhide it
  47. In the 3D Viewport, click that interior face (Door-Leaf) to select it
  48. To edit the face, on the main menu of Blender, click Modeling
  49. On the top menu bar, click the Face button Face
  50. Click the large face on the door

    Modeling a Simple Door

  51. Press E to extrude and press Enter
  52. In the Extrude Region and Move window, change the Z value to -0.035:
    Move Z: -0.035

    Modeling a Simple Door

  53. On the main menu of Blender, click Layout

    Modeling a Simple Door

    Modeling a Simple Door

Modeling a Basic Door Lock

Houses use doors to keep some of their areas safe. As a matter of fact, houses use various types of doors. To apply these safety measures, doors use locks. Doors in turn use various types of locks. For example, external and internal doors may use different types of locks. Normally, locks used on external doors use keys. In this exercise, we will model a simple door lock.

Practical LearningPractical Learning: Modeling a Basic Door Lock

  1. To start a new object, on the top menu bar, click Add -> Mesh -> Cone
  2. In the bottom-left section of the 3D Viewport, click Add Cube to expand its window
  3. In the Add Cube window, change the following characteristics:
    Radius:     0.015
    Radius 2:    0.01
    Depth:       0.01
    Location X: -1.135
             Y:  2.25
             Z:  0.55
    Rotation X:  90

    Modeling a Simple Door Lock

  4. In the Object section of the Properties window, click Cone to select the name
  5. Type Door-Lock-Round as the name and press Enter
  6. To edit the cone, on the top-main menu of Blender, click Modeling
  7. To hide the other objects, in the numeric pad of the keyboard, press /
  8. Click and drag the Rotate button to see the large back face of the cone

    Modeling a Simple Door Lock

  9. On the top menu, click the Face button Face
  10. Click the large vertical face to select it

    Modeling a Simple Door Lock

  11. Press E to extrude and press Enter
  12. In the Extrude Region and Move window, change the Z value to 0.45:
    Move Z: 0.035

    Modeling a Simple Door Lock

  13. Position the mouse on an empty area of the 3D Viewport window. Press E to extrude and press Enter
  14. In the Extrude Region and Move window, change the Z value to 0.1:
    Move Z: 0.1

    Modeling a Simple Door Lock

  15. Position the mouse in the 3D Viewport. Press S to resize the face. Pull the mouse slightly and click
  16. In the Resize window, change the X and the Z values to 0.95 each:
    Scale: X: 0.95
           Z: 0.95
  17. Position the mouse in the 3D Viewport. Press E to extrude, then press S to resize, then press Enter
  18. In the Extrude Region and Move window, change the X and the Z values to 0.5:
    Scale: X: 0.95
           Z: 0.95

    Modeling a Simple Door Lock

  19. Rotate the cone to see the front face (you can use the middle button of the mouse)
  20. Click the front vertical face to select it

    Modeling a Simple Door Lock

  21. -----------------------------------------------------------------------------------------------------------
  22. Press E to extrude and press Enter
  23. In the Extrude Region and Move window, change the Z value to 0.025:
    Move Z: 0.025

    Modeling a Simple Door Lock

  24. Position the mouse in the 3D Viewport. Press S to resize. Slightly move the mouse and click
  25. In the Resize window, change the X and the Z values to 0.95 each:
    Scale: X: 0.95
           Z: 0.95

    Modeling a Simple Door Lock

  26. While the face is still selected, position the mouse in the 3D Viewport. Press E to extrude, then press S to resize, then press Enter
  27. In the Extrude Region and Move window, change the X and the Z values to 0.875:
    Scale: X: 0.875
           Z: 0.875

    Modeling a Simple Door Lock

  28. While the face is still selected, position the mouse in the 3D Viewport. Press E to extrude, then press S to resize, then press Enter
  29. In the Extrude Region and Move window, change the X and the Z values to 0.95:
    Scale X: 0.95
           Z: 0.95

    Modeling a Simple Door Lock

  30. While the face is still selected, position the mouse on the 3D Viewport window. Press E to extrude, then press S to resize, then press Enter
  31. In the Extrude Region and Move window, change the X and the Z values to 0.95 each:
    Scale: X: 0.985
           Z: 0.985

    Modeling a Simple Door Lock

  32. While the face is still selected, position the mouse on an empty area of the 3D Viewport window. Press E to extrude, then press S to resize, then press Enter
  33. In the Extrude Region and Move window, change the X and the Z values to 0.95 each:
    Scale: X: 0.985
           Z: 0.985

    Modeling a Simple Door Lock

  34. While the face is still selected, position the mouse on an empty area of the 3D Viewport window. Press E to extrude, then press S to resize, then press Enter
  35. In the Extrude Region and Move window, change the X and the Z values to 0.95 each:
    Scale: X: 0.95
           Z: 0.95

    Modeling a Simple Door Lock

  36. On the top tool menu, click the Edge button Edge
  37. Press and hold Alt
  38. On the shape in the 3D Viewport, click one of the edges of the 5th circle from the external circle
  39. Release Alt

    Modeling a Simple Door Lock

  40. Press G slightly and click
  41. In the Move window, change the values as follows:
    Move: X: 0
          Y: 0.25
          Z: 0

    Modeling a Simple Door Lock

  42. Press and hold Alt
  43. Click one of the edges of the 4th circle from the external circle
  44. Release Alt

    Modeling a Simple Door Lock

  45. Press Ctrl + B and press Enter
  46. In the Bevel window, change the following values:
    Width:    0.0125
    Segments: 2

    Modeling a Simple Door Lock

  47. While the Edge option is still selected, press and hold Alt
  48. Click one of the edges outside the inner circle
  49. Release Alt

    Modeling a Simple Door Lock

  50. Position the mouse in the 3D Viewport window. Press Ctrl + B and press Enter
  51. In the Bevel window, change the following values:
    Width:    0.0125
    Segments: 2

    Modeling a Simple Door Lock

  52. On the top bar, click the Face button Face
  53. Click the large central face to select it
  54. Press E to extrude
  55. Then press S to resize, then press Enter
  56. In the Extrude Region and Move window, change the X and Y values as follows:
    Scale X: 0.65
          Z: 0.65

    Modeling a Simple Door Lock

  57. Position the mouse in the 3D Viewport window. Press G to move the face
  58. Move the mouse slightly and click
  59. In the Move window, change the following values:
    Move X: 0
              Y: 0
              Z: -0.105

    Modeling a Simple Door Lock

  60. While the face is still selected, press E to extrude
  61. Then press S, then press Enter
  62. In the Extrude Region and Move window, change the following values:
    Move X: 0.975
         Z: 0.975
  63. While the face is still selected, press E to extrude
  64. Tthen press S, then press Enter
  65. In the Extrude Region and Move window, change the following values:
    Move X: 0.975
         Z: 0.975
  66. While the face is still selected, press E to extrude
  67. Then press S, then press Enter
  68. In the Extrude Region and Move window, change the following values:
    Move X: 0.205
         Z: 0.85

    Modeling a Simple Door Lock

  69. On the top tool menu, click the Edge button Edge
  70. Press and hold Alt
  71. Click one of the edges of the circle between the three circles that were just drawn
  72. Release Alt

    Modeling a Simple Door Lock

  73. Press G slightly and click
  74. In the Move window, change the values as follows:
    Move: X: 0
           Y: 0.025
           Z: 0

    Modeling a Simple Door Lock

  75. On the top toolbar, click the Face button Face
  76. Click the large oval face on the lock to select it

    Modeling a Simple Door Lock

  77. Press E to extrude and press Enter
  78. In the Extrude Region and Move window, change the following values:
    Move X:  0
         Y:  0
         Z: -0.75

    Modeling a Simple Door Lock

  79. Position the mouse close to the oval hole. Press Ctrl + R to create a cut and click once
  80. Move the cut as close as possible to the oval hole. Then click to confirm the cut

    Modeling a Simple Door Lock

  81. Position the mouse on the interior of the oval hole. Press Ctrl + R to create a cut inside the oval hole and click once
  82. Move the cut as close as possible to the outside of the oval hole. Then click to confirm the cut

    Modeling a Simple Door Lock

  83. On the main menu of Blender, click Layout

    Modeling a Simple Door Lock

  84. To save the lock, on the main menu, click File -> Save
  85. Set the document name Door-Lock-Simple-1
  86. Click Save
  87. While the lock is still selected, in the Properties window, click the Modifiers button Modifiers
  88. Still in the Properties window, click Add Modifier -> Generate -> Subdivision Surface
  89. In the Properties window, set the Levels Viewport to 2:
    Levels Viewport: 2
  90. Right-click the lock and click Shade Smooth:

    Modeling a Simple Door Lock

  91. To save, on the main menu, click File -> Save As...
  92. Set the document name Door-Lock-Simple-2
  93. Click Save As

Adding Windows

Obviously, a house should have walls and window. In this section, we will add them to the model.

Finalizing the Interior Door

Practical LearningPractical Learning: Finalizing the Interior Door

  1. Click the default cube to select it (it should be selected already)
  2. In the Properties window, click the Object button Object (it should be selected already) to access the primary properties of the cube
  3. To add a window, position the mouse on the top-right side of the window until the mouse cursor appears as +

    Window Maker

  4. Click and drag in the left direction and click

    Windows Panels

  5. Click the button in the top-left section of the right panel and select Asset Browser

    Dividing the House Stories

    Dividing the House Stories

  6. From the Asset Library window, drag Door-Frame-Simple to the 3D Viewport. In the 3D Viewport, drop the object in an occupied area, not on a wall of the house
  7. On the left toolbar, click the Move button Move
  8. From the Asset Library window, drag Door-Leaf-Simple to the 3D Viewport. In the 3D Viewport, drop the object in an occupied area, not on a wall of the house
  9. In the Asset Library window, click Door-Leaf-Simple to add it to the selection
  10. Release Ctrl
  11. In the Asset Library window, drag the selected items and drop the group in the 3D Viewport

    Blender Panels

  12. Close Blender
  13. When asked whether you want to save, click Don't Save
  14. Open another instance of Blender
  15. In a previous lesso method overloading, we saw that a method can get overloaded if you create more than one version in the same class. We also saw that the versions of the method must differ by their syntax or signature. Remember that the signature of a method doesn't include its return type. Based on this, you cannot overload a method based on the fact that one version returns a tuple and another does not.
  16. To overload a method that involves tuples, you will rely on the parameters. You can create a method that has different versions. Two or more versions of a method can take one tuple parameter each; each tuple-parameter can have the same number of elements but the elements can be different. Consider the following example:

This would produce:

Method Overloading and Tuples

On the other hand, you can overload a method by passing a mixture of primitive types and tuples.

Tuples and Properties

Introduction

You can create a property whose type is a tuple. To start, in the body of the class, you can declare a field variable that is a tuple type. Here is an example:

public class Member
{
}

To get the property, create a property that has a return type as a tuple. Here is an example:

A Read-Only Tuple Property

A read-only property is a a property with only a get clause. For a tuple property, make the get clause return a private field that has the same return type as the property. Here is an example:

        
    }
}

If you want to use the property outside its class, it must have a value, which it cannot get on its own because it is a read-only property. The most common way you can initialize this property is by using a constructor that uses a parameter of the same tuple type as the property. After initializing the property, you can get its value and use it. Here is an example:

mbr.Identification.fee}");
WriteLine("===============================");

This would produce:

A Fully-Implemented Tuple Property

As seen in our introduction to properties, if you want to control the details of processing a property, you can create a private field that is the same tuple type as the property. Then add either or both a get and a set clauses. Here is an example:

An Automatic Tuple Property

If you are not planning to validate, accept, or reject the values of the property, you can create the property as an automatic one. Here is an example:


    public (bool, string, PayFrequency, double) Salary { get; set; }
}

When creating the property, it is a good idea, although not a requirement, to name the elements of the tuple. It may also be a good idea to add comments that explain the roles of the elements of the tuple. Here is an example:

    
}

As mentioned in the previous lesson, if you don't name the elements of a tuple, the compiler gives them some default names as Item1, Item2, etc.

When using the property, you may need to access the elements of its type. You will access them by their names. From inside the class, such as in the body of a clause of another property or in the body of a method of the same name, type the name of the desired property, type a period, and select the element of your choice. Here is an example:

When using the property outside the class, if you have declared a variable of the class that owns the property, type the name of the object, a period, the name of the property, a period, and the desired element. Here is an example:

Tuples and Properties

Once you have accessed the property or any of its elements, you can use it like any property as we have done in previous lessons.

If you create an automatic tuple property, you cannot individually initialize the elements of the tuple property. Still, you can access the elements to present to the user. Here is an example:



                

This would produce:

Topics on Tuples

Methods and Tuples

We saw how to involve tuples with functions. Everything we saw about passing a tuple as argument and returning a tuple can be applied exactly the same way to the methods of a class. Normally, methods deal with tuples exactly as we described for functions, with just minor adjustments. It is important to remember (as stated in our introductory lesson on functions) that a function is a section of code that behaves as if it written outside of a class. Otherwise, everything we studied about involving tuples and functions also applies to methods. This means that you can pass a tuple to a method and you can return a tuple from a method.As you know already, a method is a function created inside a class. As you know already, if you create a method, it has direct access to other members of the same class. In a method, you have direct access to the names of the tuples. To access an element of a tuple, type the name of the member, a period, and the desired member. That way, you can initialize a tuple. Here is an example:

An Object in a Tuple

All the elements we used so far in tuples were of regular types. In reality, each element is a placeholder for practically any type you want. Based on this, an element of a tuple can be an object of a structure or class type. Of course, you must have a class. You can create and use your own class. Here is an example of a class named Trapezoid created in a Windows Forms application named Geometry:



                

When creating the tuple, specify the desired element using the name of the class. Here is an example:

Trapezoid isosceles = new Circle();

(Trapezoid shape

When initializing the tuple or when specifying its value, you must define the object used as element. You have various options:

In the above example, we used a tuple that has one element that is a class type. In the same way, you can create a tuple with more than one element that are of class or structure type. The elements can be of the same class (or structure) or different classes (or structures).

In the above example, we used our own class. On the other hand, we know that the .NET Framework provides a large collection of classes and structures. You can use any of most of the many classes of the .NET Framework for an element of a tuple.

The Name Involving a Tuple

We already know that, to help you identify something in your code, the C# language provides an operator named nameof. You can use this property on anything that involves a tuple, including a variable of a tuple type, a property of a tuple type, a function or method that returns a tuple, or a function or property that takes a tuple as argument. Here are examples:

using static System.Console;

(int nbr, string status, double salary) employee = (937_842, "Full Time", 22.48);

(string fname, string lname) Identify()
{
    return ("Frank", "Lanson");
}

House house = new House()
{
    PropertyNumber = 938_448,
    Rooms = (5, 3.5),
    MarketValue = 545_760
};

void Present(int nbr, (string title, House prop) listing)
{
    WriteLine(listing.title);
    WriteLine("----------------------------------");
    WriteLine("Listing #:   {0}", nbr);
    WriteLine("Property #:   {0}", listing.prop.PropertyNumber);
    WriteLine("Bedrooms:     {0}", listing.prop.Rooms.beds);
    WriteLine("Bathrooms:    {0}", listing.prop.Rooms.baths);
    WriteLine("Market Value: {0}", listing.prop.MarketValue);
}

WriteLine("Employee Record");
WriteLine("----------------------------------");
WriteLine("Employee #:    {0}", employee.nbr);
WriteLine("Employee Name: {0} {1}", Identify().fname, Identify().lname);
WriteLine("Employment Status: {0}", employee.status);
WriteLine("Hourly Salary: {0}", employee.salary);
WriteLine("==================================");

Present(1001, ("Property Listing", house));

WriteLine("==================================");
WriteLine("Name of Tuple Variable: {0}", nameof(employee));
WriteLine("Name of Tuple Function: {0}", nameof(Identify));
WriteLine("Name of Object:         {0}", nameof(house));
WriteLine("Name of Tuple Property: {0}", nameof(house.Rooms));
WriteLine("Name of Function:       {0}", nameof(Present));
WriteLine("==================================");

internal class House
{
    public int PropertyNumber { get; set; }
    public (int beds, double baths) Rooms { get; set; }
    public double MarketValue { get; set; }
}

Practical LearningPractical Learning: Ending the Lesson


Previous Copyright © 2001-2024, FunctionX Saturday 29 April 2023, 22:44 Next