类型
本章所有的代码都放在
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#中常见的数据类型以及引用的使用