当前位置: 首页 > news >正文

C#从零开始学习(类型和引用)(4)

类型

本章所有的代码都放在
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应用,生成随机菜单

  1. 创建MenuItem类
  2. 添加制作方法
  3. 创建xaml窗口
  4. 添加后代逻辑代码

创建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#中常见的数据类型以及引用的使用

http://www.mrgr.cn/news/53894.html

相关文章:

  • JVM进阶调优系列(4)年轻代和老年代采用什么GC算法回收?
  • Qt中使用线程之QThread
  • WebStorm小白下载安装教程
  • 什么是线上元宇宙会议?有哪些应用场景?
  • 【OpenAI】第二节(Token)什么是Token?如何计算ChatGPT的Token?
  • MySQL 中的外键检查设置:SET FOREIGN_KEY_CHECKS = 1
  • 解锁C++多态的魔力:灵活与高效的编码艺术(下)
  • 每日一题——第一百一十七题
  • 【部署篇】rabbitmq-01介绍
  • 【openGauss】OPENGAUSS/POSTGRESQL 中float类型到int类型的隐式转换
  • 直播带货APP开发指南:基于多商户商城系统源码的方案实战
  • vscode 预览markdown 文件
  • 竹壳天气时钟(三)TFT屏幕显示中文
  • 量价关系总结
  • Redis入门到精通(二):入门Redis看这一篇就够了
  • AI动漫翻唱项目玩法拆解,起号涨粉咔咔猛,实操干货分享
  • ICMP协议以及ARP欺骗攻击
  • 跨平台进程池背后的思想
  • 【数据结构与算法】之二分查找
  • 一个纹理分割的例子
  • Python基础——类型注解
  • javaWeb项目-Springboot+vue-XX图书馆管理系统功能介绍
  • 深度学习面试笔试之循环神经网络(RNN)、门控循环单元(GRU)、长短期记忆(LSTM)
  • 一、go入门
  • 安全基线加固
  • Python中的数值及其计算