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

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.kler.cn/news/357413.html

相关文章:

  • ARM 中断控制器 GIC-V2
  • Unity3D ScrollView 滚动视图组件详解及代码实现
  • 世界脑力锦标赛资料,最强大脑教程
  • 鸿蒙网络编程系列23-实现一个基于鸿蒙API的HTTP服务器
  • git的学习使用(搭建本地仓库,创建本地仓库,配置本地仓库)(附带Ubuntu云服务器git安装流程)
  • QShortcut实现快捷键
  • 数据结构与算法JavaScript描述练习------第12章排序算法
  • Python实时视频流+网络摄像头+视频检测流程播放
  • 知识付费小程序:轻松实现一站式运营,开启知识变现之旅
  • 安卓窗口wms/input小知识NO_INPUT_CHANNEL剖析
  • |人口分析|007_django基于Python的广东省人口流动数据分析2024_92306i61
  • 如何给SaaS应用做安全
  • Python 基础
  • 力扣第242题“有效的字母异位词”
  • 火山引擎数智平台 VeDI:A/B 实验互斥域流量分配体系上线
  • ElasticSearch与MySQL如何进行数据同步?
  • HyperWorks汽车B-柱网格变形
  • 中小型医院网站:Spring Boot解决方案
  • 【火山引擎】AIGC图像风格化 | 风格实践 | PYTHON
  • 【NS3】二、关键概念