类型
本章所有的代码都放在
https://github.com/hikinazimi/head-first-Csharp
整型
- byte: 0~255
- sbyte: -128~127
- short: -32768~32767
- int: -2147483648~2147483647
- long: -9223372036854775808~9223372036854775807
以u开头的无符号整数
ushort,uint,ulong
浮点
- float: (6~9位有效数字)
- double: (15~17位有效数字)
- decimal: (28~29位有效数字) ,处理货币时使用decimal存储
字符串
Convert类转换
Convert.ToByte(“10111”,2); //return 23
Convert.ToInt16(“1111111111111111”,2); return 32767
引用
在C#中,引用类型(Reference Types)是指那些在内存中存放在堆(Heap)上的数据类型。引用类型的变量存储的不是实际的数据,而是指向数据的引用(或者说是内存地址)。当创建一个引用类型的变量时,实际上是在堆上为该变量的数据分配了内存,并且变量存储了这块内存的地址。
引用类型的特点:
-
存储位置:数据存储在堆上,变量存储的是数据的内存地址。
-
内存分配:在堆上动态分配内存,因此大小不固定,可以在运行时确定。
-
默认值:引用类型的默认值是 null,表示没有引用任何对象。
-
内存回收:由垃圾回收器(Garbage Collector, GC)管理,当没有变量引用该对象时,GC 可能会回收其内存。
-
赋值:赋值会复制对象的引用,而不是对象本身。两个变量可能引用同一个对象。
-
方法和属性:可以拥有方法和属性,因为它们通常代表更复杂的数据结构。
SloppyJoe 菜单价格显示
创建一个WPF应用,生成随机菜单
- 创建MenuItem类
- 添加制作方法
- 创建xaml窗口
- 添加后代逻辑代码
创建MenuItem,这是菜单
class MenuItem{public static Random Randomizer = new Random();public string[] Proteins = { "Roast beef", "Salami", "Turkey", "Ham", "Pastrami", "Tofu" };public string[] Condiments = { "yellow mustard", "brown mustard", "honey mustard", "mayo", "relish", "french dressing" };public string[] Breads = { "rye", "white", "wheat", "pumpernickel", "a roll" };public string Description = "";public string Price;public void Generate(){string randomProtein = Proteins[Randomizer.Next(Proteins.Length)];string randomCondiment = Condiments[Randomizer.Next(Condiments.Length)];string randomBread = Breads[Randomizer.Next(Breads.Length)];Description = randomProtein + " with " + randomCondiment + " on " + randomBread;decimal bucks = Randomizer.Next(2, 5);decimal cents = Randomizer.Next(1, 98);decimal price = bucks + (cents * 0.01M);Price = price.ToString();}}
public static Random Randomizer = new Random();
使用Random使用静态变量,这样每个菜单都使用同一个Random实例,产生的随机数不同
界面左边显示菜单,右边显示金额
<Window x:Class="SloppyJoe.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:SloppyJoe"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Grid Margin="20"><Grid.RowDefinitions><RowDefinition/><RowDefinition/><RowDefinition/><RowDefinition/><RowDefinition/><RowDefinition/><RowDefinition/></Grid.RowDefinitions><Grid.ColumnDefinitions><ColumnDefinition Width="5*"/><ColumnDefinition/></Grid.ColumnDefinitions><TextBlock x:Name="item1" FontSize="18px" /><TextBlock x:Name="price1" FontSize="18px" HorizontalAlignment="Right" Grid.Column="1"/><TextBlock x:Name="item2" FontSize="18px" Grid.Row="1"/><TextBlock x:Name="price2" FontSize="18px" HorizontalAlignment="Right"Grid.Row="1" Grid.Column="1"/><TextBlock x:Name="item3" FontSize="18px" Grid.Row="2" /><TextBlock x:Name="price3" FontSize="18px" HorizontalAlignment="Right" Grid.Row="2"Grid.Column="1"/><TextBlock x:Name="item4" FontSize="18px" Grid.Row="3" /><TextBlock x:Name="price4" FontSize="18px" HorizontalAlignment="Right" Grid.Row="3"Grid.Column="1"/><TextBlock x:Name="item5" FontSize="18px" Grid.Row="4" /><TextBlock x:Name="price5" FontSize="18px" HorizontalAlignment="Right" Grid.Row="4"Grid.Column="1"/><TextBlock x:Name="item6" FontSize="18px" Grid.Row="5" /><TextBlock x:Name="price6" FontSize="18px" HorizontalAlignment="Right" Grid.Row="5"Grid.Column="1"/><TextBlock x:Name="guacamole" FontSize="18px" FontStyle="Italic" Grid.Row="6"Grid.ColumnSpan="2" HorizontalAlignment="Right" VerticalAlignment="Bottom"/></Grid></Window>
最终结果如下
至此,我们就学习完了第四章,然后让我们复习一下本章讲了什么
- 学习了C#中常见的数据类型以及引用的使用