一.数据类型分为 值类型和引用类型
1.值类型:值类型:存储在堆栈中 存储空间小 调用速度快
位:代表取值范围2的多少次方
有无符号:代表是否能够取得负数
无符号代表不包括负数
0是最小的正整数
-1是最大的负整数
byte/sbyte 8位无/有符号字符 0~255
int 32位有符号字符 取值范围:-2147 483 648~2147 483 647
uint 32位无符号字符 取值范围:0 ~4294 967 295
short/ushort 16位有/无符号字符
long/ulong 64位有/无符号字符
bool char double float decimal
2.引用类型:存储在堆中 存储空间大 调用速度慢 string object
命名空间:是.net封装好的一些类和对象,是类所在的场所 (命名空间>类>对象)
二.变量
1.变量
(1)定义
一个变量只不过是一个供程序操作的存储区的名字。在 C# 中,每个变量都有一个特定的类型,类型决定了变量的内存大小和布局。范围内的值可以存储在内存中,可以对变量进行一系列操作。
(2)变量的声明
C#中变量定义的语法:
data_type:必须是一个有效的 C# 数据类型,可以是 char、int、float、double 或其他用户自定义的数据类型。
variable_list:可以由一个或多个用逗号分隔的标识符名称组成。
一些有效的变量定义如下所示:
int i, j, k;
char c, ch;
float f, salary;
double d;
(3)变量的初始化
变量通过在等号后跟一个常量表达式进行初始化(赋值)。
2.常量
常量是固定值,程序执行期间不会改变。常量可以是任何基本数据类型,比如整数常量、浮点常量、字符常量或者字符串常量,还有枚举常量。
常量可以被当作常规的变量,只是它们的值在定义后不能被修改。
三.计算机存储空间
整数在计算机中存储是以补码的方式存储的,想要知道补码,必须先知道数字进制转换和原码和反码
1. 不同进制的组成和输出
二进制:以 0b 开头,由 0 和 1 组成
八进制:以 0 开头,由 0-7 组。(C#中没有现成的表示方式)
十进制:默认就是十进制,由 0-9 组成
十六进制:以 0x 开头,由 0-9+A-F 组成
2. 进制之间的转换算法 其他进制转十进制
口诀:将所有的位上面的值*进制数的次方连起来既可以得到十进制
位值:每一个位数上面对应的值进制
例:(1)将以下二进制数值分别转成八进制、十进制、十六进制
0b101011
十进制:1*2^5+0*2^4+1*2^3+0*2^2+1*2^1+1*2^0=43
八进制:53
十六进制 :2B
(2)将以下十进制数值分别转成二进制、八进制、十六进制
665
二进制:1010011001
八进制:1231
十六进制 :299
3.原码 、反码 、补码
(1)源码:将一个整数转换成二进制,然后最高位用来表示符号位(0
表示正数,1 表示负数,其余位表示数值位)
例如:7:00000111 -7:10000111
(2) 反码
正数的反码和原码一致,负数的反码位数全部取反,除最高位
(3)补码
正数的补码和原码一致,负数的补码在反码的基础上末尾+1
练习案例:告白框案例
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace biaobaikuang
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.Left = Screen.PrimaryScreen.Bounds.Width / 2 - this.Width / 2;
this.Top = Screen.PrimaryScreen.Bounds.Height/ 2 - this.Height / 2;
label1.Left = this.Width / 2 - label1.Width / 2;
label1.BackColor = Color.Transparent;
label1.ForeColor = Color.DarkOrange;
button2.Visible = false;
button1.BackColor = Color.LightBlue;
button2.BackColor = Color.LightBlue;
button3.BackColor = Color.LightBlue;
button1.ForeColor = Color.Green;
button2.ForeColor = Color.Green;
button3.ForeColor = Color.Green;
button1.Font = new Font("隶书", 20);
button2.Font = new Font("隶书", 20);
button3.Font = new Font("隶书", 20);
this.FormBorderStyle = FormBorderStyle.None;
}
private void button2_Click(object sender, EventArgs e)
{
}
private void button3_Click(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("真巧,我也喜欢你!");
}
private void button2_MouseEnter(object sender, EventArgs e)
{
button2.Visible = false;
button3.Visible = true;
}
private void button3_MouseEnter(object sender, EventArgs e)
{
button3.Visible = false;
button2.Visible = true;
}
private void Form1_SizeChanged(object sender, EventArgs e)
{
label1.Left = this.Width / 2 - label1.Width / 2;
}
}
}
简易计算器案例
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace _04_计算器
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
textBox3.ReadOnly = true;
}
private void button1_Click(object sender, EventArgs e)
{
//将comboBox中的文本内容(string)转换为int类型
//123==“123”
int i = int.Parse(textBox1.Text);
int k = int.Parse(textBox2.Text);
//索引值从0开始
int fun = comboBox1.SelectedIndex;
//判断两边的内容是否相等
int res = 0;
if (fun==0)
{
res = i + k;
}
if (fun==1)
{
res = i - k;
}
if (fun == 2)
{
res = i * k;
}
if (fun == 3)
{
res = i / k;
}
if (fun == 4)
{
res = i % k;
}
textBox3.Text = res.ToString();
}
}
}